1. 知识点javascript
1) JSP页面代码的载入顺序和执行html
a) 当客户第一次请求JSP页面时,JSP引擎会经过预处理把JSP文件中的静态数据(HTML)和动态数据(Java脚本)全 java
部转换为Java代码。这个转换工做其实是很是直观的,对于HTML文本只是简单地用out.pringln()方法包裹起来,ajax
对于Java脚本只是保留或简单地处理。浏览器
b) JSP引擎把生成的.java文件编译成Servlet类文件(.class)。对于Tomcat服务器而言,生成的类文件默认的状况下存放服务器
在<Tomcat>\work目录。异步
c) 编译后的class对象被加载到容器中,并根据用户的请求生成HTML格式的响应页面。jsp
在执行JSP页面时,一般可分为两个时期:转译时期(Translation Time)和请求时期(Request Time)。在转译时期,JSP网页被转译成Servlet类,而后被编译成类文件;在请求时期,Servlet类执行后,响应结果至客户端。ide
2. JSP页面中的代码加载执行顺序函数
1) java是在服务器端运行的代码,jsp在服务器的servlet里运行,而javascript和html都是在浏览器端运
行的代码。因此加载执行顺序是java>jsp>js
2) js在jsp中的加载顺序
页面上的js代码是html代码的一部分,因此页面加载的时候是由上而下加载。因此js加载的顺序也就是
页面中<script>标签出现的顺序。<script>标签里面的或者是引入的外部js文件的执行顺序都是其语
语句出现的顺序,其中js执行的过程也是页面装载的一部分
3) 在js脚本中定义的全局变量和函数,均可以在后面的脚本中调用。
变量的调用,必须是前面已经声明了的,不然变量返回的值是undefined。同一段脚本中,函数定义
能够出如今函数的调用后面;若函数的定义和调用在两个脚本段中,函数调用在函数定义以前就会报
函数未定义错误。
4) js中出现ajax的异步加载
因为ajax的异步加载可能会致使语句的执行顺序并非按照语句的出现顺序执行的。例如,在页面初
始加载的时候须要向jsp发送请求来得到该页面所需的数据,在ajax成功函数中,对data的操做所需的
时间过长,就会致使在ajax函数外面的confirm与loadTree比data操做后面的语句先执行。最终在
loadTree中使用data的值的时候就为空,此时全局变量openTab_Id就为空。
5) 控制js执行顺序
可使用setTimeout(function(),time);来使function延迟加载。
6) js脚本必须放在head或body里面,否则提示invalid location of tag(script)