zoukankan      html  css  js  c++  java
  • JSP_jsp的内部方法jspInit(),_jspService(),jspDestroy()

    FROM:http://blog.163.com/zhzy_blog/blog/static/1868602602011510111833701/

      jspInit(){}:jsp Page被初始化的时候调用该方法,并且该方法仅在初始化时执行一次,所以可以在这里进行一些初始化的参数配置等一次性工作,由作者创建
          jspDestroy(){}:jsp Page由于某种原因被关闭的时候调用该方法,由作者创建
          jspService(){}:由jsp容器自动创建的处理jsp Page的方法,由jsp容器创建,不能由作者定义。
          当jsp文件第一次被处理时,他会被转化成一个servlet。jsp引擎首先把jsp文件转化成一个java源文件,如果在转化过程中发生错误的话,会立刻中止,同时向服务器端和客户端发送错误信息报告;如果转化成功了,就会产生一个class类。然后再创建一个 Servlet对象,首先执行jspInit()方法进行初始化操作,由于整个执行过程jspInit()方法只执行一次,所以可以在这个方法中进行一些必要的操作比如连接数据库,初始化部分参数等等,接着执行_jspService()方法,对客户端的请求进行处理,对每一个请求会创建一个线程,如果同时有多个请求需要处理的话就会创建多个线程,由于servlet长期贮存与内存中,所以执行速度快,但是由于初始化需要编译,所以第一次执行还是比较慢的,如果由于某种原因导致jsp网页关闭或者销毁的话会执行jspDestroy()方法。
          jspInit()和jspDestroy()必须写在<%!  %>里,注意这里有 ! 符号。
    <%!
    public void jspInit(){
        super.jspInit();
        System.out.println("jsp 初始化了");
    }
    %>
          注意以上这种写法,如果eclipse工具中,Validation配置中,JSP Syntax Validator 项 build 时执行的选项被勾选,则在 build 时验证JSP语法会报错,提示super.jspInit()没有这个方法。因为JSP页面继承自HttpServlet类,而HttpServlet中确实没有jspInit()方法,jspInit()方法存在于接口JspPage中。工具认为这样是错误的,而super.jspInit()这样的写法在实际运行环境中是不会出错的。在build时验证JSP语法还存在另一个问题,如果一个jsp文件include了另一个jsp页面,被include的jsp页面中直接使用主jsp页面中的局部变量时,会提示局部变量未定义,而这在运行时是可以的。同时为了减少 build 的时间,一般 build 时的验证都可设为关闭。

  • 相关阅读:
    如何屏蔽LOGDLOGI等打印输出
    struct hw_module_t HAL_MODULE_INFO_SYM
    Android的底层库libutils介绍
    在Ubuntu上为Android系统内置C可执行程序测试Linux内核驱动程序(老罗学习笔记2)
    在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序(老罗学习笔记3)
    Linux kmalloc/kfree 源码解读
    IS_ERR、PTR_ERR、ERR_PTR
    PHP去除unicode续:json_encode之后,仅仅有文字,数字不见了的解决方法
    让JavaScript在Visual Studio 2015中编辑得更easy
    玩转阿里云server——安装WebserverTomcat7
  • 原文地址:https://www.cnblogs.com/charles999/p/6692046.html
Copyright © 2011-2022 走看看