(转载)jsp的内部方法jspInit(),_jspService(),jspDestroy()
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 时的验证都可设为关闭。
(转载)jsp的内部方法jspInit(),_jspService(),jspDestroy()的更多相关文章
- reactjs--父组件调用子组件的内部方法(转载)
reactjs--父组件调用子组件的内部方法 发表于2016/10/11 9:21:37 965人阅读 1.引入相关js <script src="js/react.js" ...
- Python_Day_02 str内部方法总结
刚开始学习Python,看了一天的字符串内部方法,现在来总结一下. capitalize(self) 将一句话的首字母变大写,其他字母都变小 name = "love PyThon" ...
- 浅谈 underscore 内部方法 group 的设计原理
前言 真是天一热什么事都不想干,这个月只产出了一篇文章,赶紧写一篇压压惊! 前文(https://github.com/hanzichi/underscore-analysis/issues/15)说 ...
- 【跟着子迟品 underscore】JavaScript 数组展开以及重要的内部方法 flatten
Why underscore (觉得这一段眼熟的童鞋可以直接跳到正文了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. ...
- javascript中静态方法、实例方法、内部方法和原型的一点见解
1.静态方法的定义 var BaseClass = function() {}; // var BaseClass=new Function(); BaseClass.f1 = function(){ ...
- dict内部方法
代码: #dict内部方法 vdic={'name':'kamil','age':23} print(dir(vdic)) vdic1 = vdic.copy()#copy(self):浅拷贝 pri ...
- tuple内部方法
代码: #tuple内部方法 ac=('a','r','6','d','a','b','b','e') print(dir(ac)) print(ac.count('a')) print(ac.ind ...
- list 内部方法
代码 #list内部方法 l=['a','9','c','a','3','7'] print(dir(l)) l.append('v') print(l)#append(self, p_object) ...
- 将对象转为数组方法:延伸array_map函数在PHP类中调用内部方法
public static function objectToArray($d) { if (is_object($d)) { $d = get_object_vars($d); } if (is_a ...
随机推荐
- 使用Gulp压缩IMG
继续说Gulp压缩img 不会安装Gulp的小伙伴们,就去看我的上一篇吧!内容怎么安装的都有! 1.咱们先来安装任务插件吧: npm install gulp-imagemin --save-dev ...
- 原生js实现星星闪烁的效果
星星闪烁的原理其实很简单: html代码: <body style="background:#000"> <div id="stars_box" ...
- 我的书单mybooklist
首先自我介绍一下,我是一名程序员. 计算机的世界太浩瀚,而我太过渺小. 比计算机的世界更为广大的是,书籍的海洋.学海无涯. 无论是计算机的世界,还是其他类书的世界,人一辈子要看的书看也看不完. 于是我 ...
- CSS3控制单行文本的溢出
text-overflow用来设置是否使用一个省略标记(...)标示对象内文本的溢出.语法: 但是text-overflow只是用来说明文字溢出时用什么方式显示,要实现溢出时产生省略号的效果,还须定义 ...
- network embedding 需读论文
Must-read papers on NRL/NE. github: https://github.com/nate-russell/Network-Embedding-Resources NRL: ...
- SQL Server ->> 字符串对比
今天同事问我关于SQL Server在字符串尾随着空格时进行字符串对比的做法.关于这个问题正好在这里讲一下,就是SQL Server是按照ANSI/ISO SQL-92中的定义做字符串对比的. 在KB ...
- Tcpdump usage examples
In most cases you will need root permission to be able to capture packets on an interface. Using tcp ...
- Linux(Ubuntu) 常用命令
玩儿转Linux:终端命令用法精选 最近再一次拾起了Ubuntu,为了更好的玩儿转Linux,专门到网上搜到的这些常用的终端命令,根据命令使用类别的不同分为了9个大类,都在下面一一列举了出来,个人觉得 ...
- ios端微信浏览器禁止上下滑动
在body里的第一个div容器中添加 position:fixed
- Validform 基于表单验证
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...