解释和编译的工作完成之后,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生命周期比较 #### 一、引言 在现代Web开发中,Servlet和JSP是两种非常重要的技术,它们都属于Java EE平台的一部分,主要用于构建动态Web应用程序。这两种技术各有特点,但又紧密相关,...
**JSP生命周期详解** JSP(JavaServer Pages)是一种基于Java技术的动态网页开发工具,其生命周期的理解对于深入掌握JSP的功能至关重要。JSP的生命周期包括四个主要阶段:编译阶段、初始化阶段、执行阶段和销毁阶段...
**JSP(Java Server Pages)学习之JSP的生命周期** ...理解JSP生命周期有助于我们编写更高效、更可控的动态网页。通过合理利用生命周期各个阶段,可以实现更好的代码组织和优化,提高应用程序的性能和可维护性。
JSP生命周期就是从创建到销毁的整个过程,类似于servlet生命周期,区别在于JSP生命周期还包括将JSP文件编译成servlet。 以下是JSP生命周期中所走过的几个阶段: 编译阶段: servlet容器编译servlet源文件,生成...
《JSP大学实用教程》的源代码提供了一个完整的JSP开发指南,涵盖了JSP基础知识、JSP页面结构、JSP 生命周期、JSP与Servlet的关系、JSP开发工具、JSP应用场景等方面的内容,对于自学者及网站开发人员来说是一个非常有...
JSP生命周期** JSP的生命周期包括三个阶段:翻译、初始化和服务。翻译阶段将JSP转换为Servlet源码;初始化阶段,Servlet被加载并初始化;服务阶段,Servlet响应客户端请求,生成HTML并返回给浏览器。 **3. JSP内置...
%>`之间声明变量或方法,用于整个JSP生命周期。 4. JSP指令(Directives):如`<%@ %>`,用于配置页面属性,如导入包、定义页面编码等。 三、JSP生命周期 JSP的生命周期包括三个阶段:翻译、初始化和服务。在翻译...
- **JSP生命周期**:JSP页面经过翻译、编译、加载、初始化、服务和销毁六个阶段。翻译阶段,JSP被转换为Servlet源码;编译阶段,源码被编译成字节码;加载和服务阶段与Servlet相似。 - **Servlet生命周期**:...
【JSP生命周期】 JSP页面经过编译、初始化、服务和销毁四个阶段。在编译阶段,JSP会被转化为一个Servlet类;初始化阶段,Servlet的`init()`方法被调用;服务阶段,Servlet的`service()`方法处理用户请求;最后在...
2. **JSP生命周期**:JSP页面被首次请求时,会被转换成一个JavaServlet,然后编译、加载到服务器中,最后执行。JSP的生命周期包括初始化、服务和销毁三个阶段,每个阶段都有相应的生命周期方法。 3. **JSP指令**:...
2. **JSP生命周期**:JSP页面在服务器端经历解析、编译、加载和执行四个阶段。在第一次请求时,JSP会被转换成一个Servlet类,并在后续请求中重用。 3. **脚本元素**:Scriptlets(`<%...%>`)用于编写Java代码块,...
7. **JSP生命周期**:了解JSP页面从创建到销毁的过程,包括解析、编译、实例化、初始化、服务和销毁六个阶段。 8. **MVC模式**:学习如何使用JSP实现Model-View-Controller(MVC)设计模式,以分离业务逻辑、数据...
%>`内声明变量或方法,这些变量和方法在整个JSP生命周期内可用。 4. **表达式(Expressions)**:`<%= %>`用于将Java表达式的值转换为字符串并插入到HTML输出中。 5. **指令(Directives)**:如`<%@ %>`,用于...
**JSP生命周期**: JSP页面的生命周期分为三个主要阶段:**初始化、服务和销毁**。 1. **初始化**:JSP页面被加载到内存中,只发生一次。在这个阶段,`<jsp:init-param>`标签定义的初始化参数被设置,`<jsp:useBean...
在每个阶段,你可以利用JSP生命周期方法如`init()`, `service()`, `destroy()`来管理资源。 **5. JSP标签库** JSP标准标签库(JSTL)和自定义标签库提供了更简洁的编程模型,减少脚本let的使用。例如,JSTL的 `...
2. **JSP生命周期** JSP的生命周期包括翻译、初始化、服务和销毁四个阶段。在翻译阶段,JSP被转换为Servlet源代码;初始化阶段,Servlet被加载并实例化;服务阶段,Servlet处理请求并生成响应;销毁阶段,Servlet...
JSP API与Servlet容器(如Tomcat、Jetty)紧密相关,容器负责解析JSP页面、管理JSP生命周期并提供运行环境。 **9. MVC模式** JSP通常作为MVC(Model-View-Controller)架构中的视图层,负责显示数据。结合Servlet...
1. JSP生命周期包括三个阶段:翻译阶段、编译阶段和执行阶段。在翻译阶段,JSP被转换为Servlet源码;编译阶段,Servlet源码被编译为.class文件;执行阶段,Servlet处理HTTP请求并生成响应。 2. JSP的执行流程:接收...