`
从此醉
  • 浏览: 1048045 次
  • 性别: Icon_minigender_1
  • 来自: US
社区版块
存档分类
最新评论

JSP技术模型(二)JSP页面生命周期

 
阅读更多

一、JSP页面的两个要点

1、JSP页面也是Servlet

JSP页面尽管从结构上看类似于HTML页面,但他实质上是作为Servlet运行。当JSP页面被访问时,容器解析JSP页面并转换成相应的Java文件,该文件申明了一个Servlet类,其成员直接映射到JSP文件的元素上。接下来,容器编译该类并将其装入内存,然后与其他Servlet一样执行并将其输出结果发送到客户端。

2、理解转换单元

在JSP页面中可以使用include指令把另一个文件(如JSP页面、HTML页面等)的内容包含到当前到当前页面中。容器在为当前JSP页面产生Java代码时,它也被包含的文件的内容插入到产生的Servlet中。这些被转换成单个Servlet类的页面集合称为转换单元。有些JSP标签影响整个转换单元而不只是他们所在的页面。

(1)、page指令影响整个转换单元。

(2)、在一个转换单元中一个变量不能多次声明。例如一个变量在主页面中申明了,就不能在被包含的页面中申明。

(3)、在一个转换单元中不能使用<jsp:userBean>动作对一个bean申明两次。

二、JSP生命周期阶段

1、页面转换:对页面解析并创建一个包含对应Servlet的Java源文件;

2、页面编译:对Java源文件编译;

3、加载类:将编译后的类加载到容器中;

4、创建实例:创建一个Servlet实例;

5、调用jspInit()方法:调用其他方法之前用该方法初始化;

6、调用_jspService()方法:对每个请求调用一次该方法;

7、调用jspDestroy()方法:当Servlet容器决定停止Servlet服务器时调用该方法。

(1)、创建Servlet实例

[1]、转换阶段:在转换阶段,容器解读JSP页面对其解析,并将其转换成Java源代码。在这个阶段,容器需要检查JSP页面所使用的标签的语法、指令中属性/值对与标准动作的合法性、同一个JavaBeans名称在一个转换单元中没有被多次使用、使用的自定义标签以及用法是否合法,如果发现错误将不能转换。

一旦验证完成,容器将创建一个public的包含Servlet类的Java源文件。该文件位于<CATALINA_HOME>\work\Catalina\localhost\helloapp\org\apache\jsp目录中,它包含对应于JSP文件的Servlet。

[2]、编译阶段:在将JSP页面转换成Java文件后,容器调用java编译器javac编译改文件。在该阶段,编译器将检查在申明中、小脚本中以及表达式中所写的全部Java代码。

[3]、转载与实例化:编译成功后,容器将Servlet类装入内存并实例化之。

(2)、调用JSP生命周期方法

JSP页面产生的Servlet类实现了javax.servlet.jsp.HttpJspPage接口。HttpJspPage接口扩展了同一个包中的JspPage接口,该接口又扩展了javax.servlet包中的Servlet接口。因此,JSP页面产生的Servlet类实现了这三个接口中所有的方法,故也被称为页面实现类。

JspPage接口只申明了两个方法:jspInit()和jspDestroy()方法。所有的JSP页面都应该实现这两个方法。HttpJspPage接口中申明了一个方法:_jspService()。下面是这三个JSP方法的标志:

public void jspInit();

public void _jspService(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException;

public void jspDestroy();

这三个方法称为JSP页面的生命周期。JSP页面的jspInit()、_jspService()、jspDestroy()方法分别等价于Servlet的init()、Service()、destroy()方法。

[1]、jspInit()方法:容器调用该方法初始化Servlet实例。该方法是在任何其他方法调用之前调用的,并对每个Servlet实例只调用一次。通常在该方法中完成初始化或只需一次的设置工作。

[2]、_jspService()方法:对每次请求容器都调用一次该方法,并给他传递请求和相应对象。JSP页面中的所有HTML元素、JSP小脚本以及JSP表达式在转换阶段都成为该方法的一部分。

[3]、jspDestroy()方法:当容器决定停止该实例提供服务时,它将调用该方法,这是在Servlet实例上调用的最后一个方法,它主要用来清理jspInit()方法获得的资源。

一般不需要事先jspInit()和jspDestroy()方法,他们已经由基类实现了,但可以根据需要使用JSP的申明标签<%! ... %>覆盖这两个方法。然而,不能覆盖_就是jspService()方法,该方法由容器自动产生。

出处:http://blog.csdn.net/cl05300629/article/details/9368115作者:伫望碧落

分享到:
评论

相关推荐

    韩顺平sevlet,jsp视频教程知识点.txt

    视频描述: (-) servlet体系结构的介绍(二) servlet的网络拓扑结构(三) servlet的几个实例(四) servlet的生命周期(五) 一个简单的用户登录系统 韩顺平 j2ee视频实战教程servlet第2讲(下集).wmv 视频描述-) servlet...

    Servlet与JSP核心编程第2版

    3.6 servlet的生命周期 3.7 singlethreadmodel接口 3.8 servlet的调试 第4章 客户请求的处理:表单数据 4.1 表单数据的作用 4.2 在servlet中读取表单数据 4.3 示例:读取3个参数 4.4 示例:读取所有...

    JSP高级编程

    概述 1.1 Java技术 1.1.1 Java技术的发展 1.1.2 JavaBeans 1.1.3 JDBC 1.1.4 J2EE 1.1.5 EJB 1.1.6 Java Servlet 1.2 JSP技术 1.2.1 JSP技术概述 1.2.2 JSP的优势及与其他...

    网页教程《跟姐姐学JSP》

    14.1. 生命周期 14.2. 线程模型 14.3. 在jsp中定义类变量 14.4. jsp九大默认对象 15. 分页 15.1. 数据库分页 15.2. 使用jstl改写分页 16. Never End... 16.1. 对session何时生成的无用讨论 16.2. 对手工将jsp...

    jsp从入门到高级编程

    第二部分 高级JSP技术 第8章 JSP开发平台的搭建:J2EE 8.1 J2SDKEE的安装和使用 8.1.1 软硬件的支持 8.1.2 安装 8.2 J2SDKEE的配置 8.2.1 JDBC的配置 8.2.2 事务处理 8.2.3 服务的端口号 8.2.4 日志文件 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    9.2.2 session的生命周期 307 9.2.3 cookie的应用 319 9.2.4 httpsessionbindinglistener接口 328 9.2.5 在线人数统计程序 329 9.3 小结 335 第10章 servlet的异常处理机制 337 10.1 声明式异常处理 338 ...

    论文研究-面向包装生命周期的供应链模型及其集成管理系统 .pdf

    面向包装生命周期的供应链模型及其集成管理系统,尹大鹏,孙德强,任何产品都需要包装,包装经若干个环节由包装供应商、产品生产企业、产品销售商到达顾客手中;顾客消费后包装变成了废弃物,废弃

    JSP高级教程

    第二部分 高级JSP技术 第8章 JSP开发平台的搭建:J2EE 8.1 J2SDKEE的安装和使用 8.1.1 软硬件的支持 8.1.2 安装 8.2 J2SDKEE的配置 8.2.1 JDBC的配置 8.2.2 事务处理 8.2.3 服务的端口号 8.2.4 日志文件 ...

    jsp servlet 入门学习资料-新手一看就懂

    第二部分 高级JSP技术 第8章 JSP开发平台的搭建:J2EE 8.1 J2SDKEE的安装和使用 8.1.1 软硬件的支持 8.1.2 安装 8.2 J2SDKEE的配置 8.2.1 JDBC的配置 8.2.2 事务处理 8.2.3 服务的端口号 8.2.4 日志文件 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    9.2.2 session的生命周期 307 9.2.3 cookie的应用 319 9.2.4 httpsessionbindinglistener接口 328 9.2.5 在线人数统计程序 329 9.3 小结 335 第10章 servlet的异常处理机制 337 10.1 声明式异常处理 338 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    9.2.2 session的生命周期 307 9.2.3 cookie的应用 319 9.2.4 httpsessionbindinglistener接口 328 9.2.5 在线人数统计程序 329 9.3 小结 335 第10章 servlet的异常处理机制 337 10.1 声明式异常处理 338 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    9.2.2 session的生命周期 307 9.2.3 cookie的应用 319 9.2.4 httpsessionbindinglistener接口 328 9.2.5 在线人数统计程序 329 9.3 小结 335 第10章 servlet的异常处理机制 337 10.1 声明式异常处理 338 ...

    java个人博客毕业论文

    2.2.4 Servlet 的生命周期 10 2.3 JDBC技术 11 2.3.1 JDBC概述 11 2.3.2 JDBC两层模型和三层模型 12 2.3.3 使用JDBC的优缺点 12 2.4 JSP开发方式 13 3 需求分析 14 3.1 需求分析概述 14 3.2 个人博客系统概述 15 3.3...

    毕业设计-基于JSP的网络聊天室ssh-设计与实现(源码+论文+视频).zip

    在管理信息系统的生命周期中,经过了需求分析、系统设计等阶段之后,便开始了系统实施阶段。在系统分析和设计阶段,系统开发工作主要是集中在逻辑、功能和技术设计上,系统实施阶段要继承此前面各个阶段的工作成果,...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    全书分4篇,共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e...

    基于jsp+servlet+mysql的教材订购系统源码

    通过该课程设计使学生进一步理解和掌握软件开发模型、软件生命周期、软件过程等理论在软件项目开发过程中的意义和作用,培养学生按照软件工程的原理、方法、技术、标准和规范,进行软件开发的能力,培养学生的合作...

    从J2SE到J2EE知识点介绍

    3. 生命周期及状态转换 84 4. 线程调度 85 5. 线程同步 92 三. Jsp 101 (一) myeclipse上配置Tomcat服务器 101 (二) Jsp+servlet+bean版HelloWorld概览 105 (三) Jsp基本页面标签 116 1. 标签 116 2. contentType...

Global site tag (gtag.js) - Google Analytics