問題:下面是一段jsp頁面代碼,按理說應該先輸出js代碼,因為先調用,再輸出jsp代碼,但是我在電腦上運行過,為什么只有js代碼? 把js代碼注釋后才會顯示jsp代碼的輸出? 這是為什么那?難道這兩種代碼的輸出互相排斥?
<html>
<head>
<title></title>
<script>
function loading()
{ document.write("JavaScript輸出"); }
</script>
</head>
<body onLoad="loading()">
<%="jsp輸出"%>
</body>
</html>
解答:
<%="jsp輸出"%>這是jsp中的嵌入java程序,是在服務器端運行的
<script>
...
</script>這是頁面腳本,是在瀏覽器里面執行的
在訪問頁面時,首先在服務器端執行java程序,然后將結果
<html>
<head>
<title></title>
<script>
function loading(){
document.write("JavaScript輸出");
}
</script>
</head>
<body onLoad="loading()">
jsp輸出
</body>
</html>
發送的瀏覽器中,然后瀏覽器在頁面加載后執行onload事件,document.write("JavaScript輸出")將頁面內容更新為Javascript輸出
如果你想在jsp輸出后面追加內容,應該使用document.body.innerHTML += "<br/>JavaScript輸出"
因為document.write會清空現有的頁面內容
另外搜到的信息:先運行的是java代碼,然后運行js。 jsp的代碼是在 服務器端運行的 js是在客戶端瀏覽器運行的
jsp要先被編譯生成一個 servlet 也就說 最終輸出到前台的 是一個 html的流
從而肯定是jsp的代碼先執行
js可以使用java的變量,但是java不可以使用js的變量,一個jsp頁面的編譯順序是,先編譯java代碼,然后再編譯js代碼。