`
Tank03
  • 浏览: 80727 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JSP的生命周期

阅读更多

解释和编译的工作完成之后,JSP的生命周期将分为三个阶段: 
◆装载和实例化:服务端为JSP页面查找已有的实现类,如果没找到则创建新的JSP页面的实现类,然后把这个类载入JVM。在实现类装载完成之后,JVM将创建这个类的一个实例。这一步会在装载后立刻执行,或者在第一次请求时执行。 
◆初始化:初始化JSP页面对象。如果你希望在初始化期间执行某些代码,那么你可以向页面中增加一个初始化方法(method),在初始化的时候就会调用该方法。 
◆请求处理:由页面对象响应客户端的请求。需要注意的是,单个对象实例将处理所有的请求。在执行完处理之后,服务器将一个响应(response)返回给客户端。这个响应完全是由HTML标签和其他数据构成的,并不会把任何Java源码返回给客户端。 
◆生命周期终止:服务器不再把客户端的请求发给JSP。在所有的请求处理完成之后,会释放掉这个类的所有实例。一般这种情况会发生在服务器关闭的时候,但是也有其他的可能性,比如服务器需要保存资源、检测到有JSP文件更新,或者由于其他某些原因需要终止实例等情况。如果想让代码执行清除工作,那么可以实现一个方法,并且在这个类实例释放之前调用该方法。 


在我们调用bean的时候有3个参数是需要设定的 ,他们分别是:id=““ class=““ scope=““在这三个参数中,id表示我们要创建的事例对象名称;class表示我们调用的bean,也就是你编写bean完成后通过编译生成的.class文件;scope就表示我们创建的bean的事例对象的生命周期! 
  我们经常看到这样的代码来控制bean的生命周期: 
  <jsp:useBean id=“hello“ class=“helloworld“ scope=“page“> 
  或者<jsp:useBean id=“hello“ class=“helloworld“ scope=“request“> 
  或者<jsp:useBean id=“hello“ class=“helloworld“ scope=“session“> 
  或者<jsp:useBean id=“hello“ class=“helloworld“ scope=“application“> 
  在这里我们看到在生命周期的参数里有4个不同的值,他们分别是:page,request,session,application 
  下边我们分别来分析一下: 
  1. Page scope:他的生命周期是最短的,当一张网页由jsp程序产生,并送到客户端后,属于page scope的bean也将被释放到内存,失去它的作用。 
  举例:(1)首先我们做一个表单页(pageform.htm),代码如下: 
   <html> 
  <head> 
  <title>test page scope</title> 
  <meta http-equiv=“Content-Type“ content=“text/html; charset=gb2312“> 
  </head> 
  <body bgcolor=“#FFFFFF“ text=“#000000“> 
  <form name=“form1“ method=“post“ action=“pagescope.jsp“> 
   <input type=“text“ name=“scope“> 
   <input type=“submit“ name=“Submit“ value=“Submit“> 
  </form> 
  </body> 
  </html> 
   (2)然后用jsp页(pagescope.jsp)来处理表单 
  <%@ page language=“java“ import=“java.lang.*,justfortest;“%> 
  <jsp:useBean id=“hello“ class=“justfortest“ scope=“page“> 
  <jsp:setProperty name=“hello“ property=“*“/> 
  </jsp:useBean> 
  <jsp:getProperty name=“hello“ property=“scope“/> 
  (3)javabean的源代码(juestfortest.java): 
  import java.lang.*; 
  public class justfortest { 
  private String scope;//私有变量 
   public justfortest()//构造函数 
   { 
  } 
   public void setscope(String scope) 
   {this.scope=scope; 
   } 
   public String getscope() 
   { 
   return this.scope; 
   } 
  } 
  2.request scope的生命周期和jsp 程序中的request对象同步;当一个jsp程序通过forward程序将request对象传到下一个 jsp页的时候,request的bean也将伴随 request对象一起送出,因此通过forward程序串起来的jsp程序都可以共享相同的Bean,使jsp程序间的信息传递更容易实现。 
   举例:(1)首先我们做一个表单页(pageform.htm),代码如下: 
  <html> 
  <head> 
  <title>test page scope</title> 
  <meta http-equiv=“Content-Type“ content=“text/html; charset=gb2312“> 
  </head> 
  <body bgcolor=“#FFFFFF“ text=“#000000“> 
  <form name=“form1“ method=“post“ action=“pagescope.jsp“> 
   <input type=“text“ name=“scope“> 
   <input type=“submit“ name=“Submit“ value=“Submit“> 
  </form> 
  </body> 
  </html> 
  (2)然后用jsp页(pagescope.jsp)来处理表单 
  <%@ page language=“java“ import=“java.lang.*,justfortest;“%> 
  <jsp:useBean id=“hello“ class=“justfortest“ scope=“request“> 
  <jsp:setProperty name=“hello“ property=“*“/> 
  </jsp:useBean> 
  <jsp:forward page=“pagescope1.jsp“/> 
  (3)pagescope1.jsp源代码 
   <%@ page language=“java“ import=“java.lang.*,justfortest;“%> 
  <jsp:useBean id=“hello“ class=“justfortest“ scope=“request“/> 
  <jsp:getProperty name=“hello“ property=“scope“/> 
  (4)对于Bean的代码我们不做任何改变 
  我们可以看到浏览器输出的是你输入的字符,这个过程中:首先表单页(pageform.htm)提交信息到pagescope.jsp做处理,把信息送到justfortest 这个bean 并且通过setscope()函数把hellobean的私有变量做赋值,同时我们建立了hello这个对象实例,通过<jsp:forward page=“pagescope1.jsp“/>我们来到pagescope1.jsp, 在这里我们通过<jsp:getProperty name=“hello“ property=“scope“/>来输出我们在pagescope.jsp里边给hello的私有变量(private String scope)的值。Bean结束生命周期,释放内存; 
  在这里我们清楚的看到两个页共享同一个bean 并且达到共享信息(private String scope)的目的; 
  3. session scope的生命周期,他的生命周期和服务器设定的setMaxInactiveInterval(interval)是相同的,就是说session存在那么它就不消失。 
  举例:(1)首先我们做一个表单页(pageform.htm),代码如下: 
  <html> 
  <head> 
  <title>test page scope</title> 
  <meta http-equiv=“Content-Type“ content=“text/html; charset=gb2312“> 
  </head> 
  <body bgcolor=“#FFFFFF“ text=“#000000“> 
  <form name=“form1“ method=“post“ action=“pagescope.jsp“> 
   <input type=“text“ name=“scope“> 
   <input type=“submit“ name=“Submit“ value=“Submit“> 
  </form> 
  </body> 
  </html> 
  (2)然后用jsp页(pagescope.jsp)来处理表单 
  <%@ page language=“java“ import=“java.lang.*,justfortest;“%> 
  <jsp:useBean id=“hello“ class=“justfortest“ scope=“session“> 
  <jsp:setProperty name=“hello“ property=“*“/> 
  </jsp:useBean> 
  /*如果我们在这里加一句<%session.setMaxInactiveInterval(1)%>让session在1秒内超时,那么我们在转向到pagescope1.jsp里边,虽然同样可以看到结果,但是当我们超过1秒后,刷新页面,我们就看到输出为null 这说明hello已经被回收;假如我们写的是<%session.setMaxInactiveInterval(1800)%>,那么在1800秒内你只要有互动,那么session不会过期,我们按刷新,它的值就不会消失*/ 
  <%response.sendRedirect(“pagescope1.jsp“)%> 
  (3)pagescope1.jsp源代码 
   <%@ page language=“java“ import=“java.lang.*,justfortest;“%> 
  <jsp:useBean id=“hello“ class=“justfortest“ scope=“session“/> 
  <jsp:getProperty name=“hello“ property=“scope“/> 
  (4)对于Bean的代码我们不做任何改变 
  4. application scope,它的生命周期是最长的,他可以和jsp container同步,就是说只要我们设定一个bean的生命周期是application,那么我们在其他任何jsp里边都可以共享这个bean,通过这个bean来共享信息。

分享到:
评论

相关推荐

    SERVLET生命周期与JSP生命周期比较

    ### SERVLET生命周期与JSP生命周期比较 #### 一、引言 在现代Web开发中,Servlet和JSP是两种非常重要的技术,它们都属于Java EE平台的一部分,主要用于构建动态Web应用程序。这两种技术各有特点,但又紧密相关,...

    jsp 生命周期详细介绍

    **JSP生命周期详解** JSP(JavaServer Pages)是一种基于Java技术的动态网页开发工具,其生命周期的理解对于深入掌握JSP的功能至关重要。JSP的生命周期包括四个主要阶段:编译阶段、初始化阶段、执行阶段和销毁阶段...

    JSP学习之jsp的生命周期

    **JSP(Java Server Pages)学习之JSP的生命周期** ...理解JSP生命周期有助于我们编写更高效、更可控的动态网页。通过合理利用生命周期各个阶段,可以实现更好的代码组织和优化,提高应用程序的性能和可维护性。

    JSP 生命周期

    JSP生命周期就是从创建到销毁的整个过程,类似于servlet生命周期,区别在于JSP生命周期还包括将JSP文件编译成servlet。 以下是JSP生命周期中所走过的几个阶段: 编译阶段: servlet容器编译servlet源文件,生成...

    Jsp大学实用教程(源代码)

    《JSP大学实用教程》的源代码提供了一个完整的JSP开发指南,涵盖了JSP基础知识、JSP页面结构、JSP 生命周期、JSP与Servlet的关系、JSP开发工具、JSP应用场景等方面的内容,对于自学者及网站开发人员来说是一个非常有...

    JSP学习资料大全(JSP教程)

    JSP生命周期** JSP的生命周期包括三个阶段:翻译、初始化和服务。翻译阶段将JSP转换为Servlet源码;初始化阶段,Servlet被加载并初始化;服务阶段,Servlet响应客户端请求,生成HTML并返回给浏览器。 **3. JSP内置...

    jsp实习报告(学生适用)

    %&gt;`之间声明变量或方法,用于整个JSP生命周期。 4. JSP指令(Directives):如`&lt;%@ %&gt;`,用于配置页面属性,如导入包、定义页面编码等。 三、JSP生命周期 JSP的生命周期包括三个阶段:翻译、初始化和服务。在翻译...

    jsp book3 随书源码

    - **JSP生命周期**:JSP页面经过翻译、编译、加载、初始化、服务和销毁六个阶段。翻译阶段,JSP被转换为Servlet源码;编译阶段,源码被编译成字节码;加载和服务阶段与Servlet相似。 - **Servlet生命周期**:...

    学会jsp,突击jsp

    【JSP生命周期】 JSP页面经过编译、初始化、服务和销毁四个阶段。在编译阶段,JSP会被转化为一个Servlet类;初始化阶段,Servlet的`init()`方法被调用;服务阶段,Servlet的`service()`方法处理用户请求;最后在...

    JSP应用开发与实践

    2. **JSP生命周期**:JSP页面被首次请求时,会被转换成一个JavaServlet,然后编译、加载到服务器中,最后执行。JSP的生命周期包括初始化、服务和销毁三个阶段,每个阶段都有相应的生命周期方法。 3. **JSP指令**:...

    jsp实用教程上机实验

    2. **JSP生命周期**:JSP页面在服务器端经历解析、编译、加载和执行四个阶段。在第一次请求时,JSP会被转换成一个Servlet类,并在后续请求中重用。 3. **脚本元素**:Scriptlets(`&lt;%...%&gt;`)用于编写Java代码块,...

    jsp宝典,JSP

    7. **JSP生命周期**:了解JSP页面从创建到销毁的过程,包括解析、编译、实例化、初始化、服务和销毁六个阶段。 8. **MVC模式**:学习如何使用JSP实现Model-View-Controller(MVC)设计模式,以分离业务逻辑、数据...

    JSP速成教程 a

    %&gt;`内声明变量或方法,这些变量和方法在整个JSP生命周期内可用。 4. **表达式(Expressions)**:`&lt;%= %&gt;`用于将Java表达式的值转换为字符串并插入到HTML输出中。 5. **指令(Directives)**:如`&lt;%@ %&gt;`,用于...

    JSP的原理、周期、 脚本

    **JSP生命周期**: JSP页面的生命周期分为三个主要阶段:**初始化、服务和销毁**。 1. **初始化**:JSP页面被加载到内存中,只发生一次。在这个阶段,`&lt;jsp:init-param&gt;`标签定义的初始化参数被设置,`&lt;jsp:useBean...

    JSP语法简明入门教程大全

    在每个阶段,你可以利用JSP生命周期方法如`init()`, `service()`, `destroy()`来管理资源。 **5. JSP标签库** JSP标准标签库(JSTL)和自定义标签库提供了更简洁的编程模型,减少脚本let的使用。例如,JSTL的 `...

    jsp网页设计小实例

    2. **JSP生命周期** JSP的生命周期包括翻译、初始化、服务和销毁四个阶段。在翻译阶段,JSP被转换为Servlet源代码;初始化阶段,Servlet被加载并实例化;服务阶段,Servlet处理请求并生成响应;销毁阶段,Servlet...

    Jsp-Api英文文档

    JSP API与Servlet容器(如Tomcat、Jetty)紧密相关,容器负责解析JSP页面、管理JSP生命周期并提供运行环境。 **9. MVC模式** JSP通常作为MVC(Model-View-Controller)架构中的视图层,负责显示数据。结合Servlet...

    从零开始学习jsp编程

    1. JSP生命周期包括三个阶段:翻译阶段、编译阶段和执行阶段。在翻译阶段,JSP被转换为Servlet源码;编译阶段,Servlet源码被编译为.class文件;执行阶段,Servlet处理HTTP请求并生成响应。 2. JSP的执行流程:接收...

Global site tag (gtag.js) - Google Analytics