问题:下面是一段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代码。