zoukankan      html  css  js  c++  java
  • jsp的执行顺序

    1. 知识点

    1) JSP页面代码的载入顺序和执行

    a) 当客户第一次请求JSP页面时,JSP引擎会通过预处理把JSP文件中的静态数据(HTML)和动态数据(Java脚本)全

        部转换为Java代码。这个转换工作实际上是非常直观的,对于HTML文本只是简单地用out.pringln()方法包裹起来,

        对于Java脚本只是保留或简单地处理。

    b) JSP引擎把生成的.java文件编译成Servlet类文件(.class)。对于Tomcat服务器而言,生成的类文件默认的情况下存放

        在<Tomcat>work目录。

    c) 编译后的class对象被加载到容器中,并根据用户的请求生成HTML格式的响应页面。

    在执行JSP页面时,通常可分为两个时期:转译时期(Translation Time)和请求时期(Request Time)。在转译时期,JSP网页被转译成Servlet类,然后被编译成类文件;在请求时期,Servlet类执行后,响应结果至客户端。

    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)

  • 相关阅读:
    Redis系列二 Redis数据库介绍
    Redis系列一 Redis安装
    SpringData系列四 @Query注解及@Modifying注解
    SpringData系列三 Repository Bean 方法定义规范
    SpringData系列二 Repository接口
    SpringData系列一 Spring Data的环境搭建
    ThinkPHP3.1.3 Fast & Simple OOP PHP Framework 显示错误
    STL学习系列之一——标准模板库STL介绍
    STL之二:vector容器用法详解
    STL使用总结
  • 原文地址:https://www.cnblogs.com/tongcc/p/14518577.html
Copyright © 2011-2022 走看看