JSP-四大作用域

首先要声明一点,所谓“作用域”就是“信息共享的范围”,也就是说一个信息能够在多大的范围内有效。4个JSP内置对象的作用域分别为:application、session、request、page 。JSP内置对象作用域表如下:


名称


作用域


application


在所有应用程序中有效


session


在当前会话中有效


request


在当前请求中有效


page


在当前页面有效

Web交互的最基本单位为HTTP请求。每个用户从进入网站到离开网站这段过程称为一个HTTP会话,一个服务器的运行过程中会有多个用户访问,就是多个HTTP会话。作用域解释如下。

application 作用域

如果把变量放到application里,就说明它的作用域是application,它的有效范围是整个应用。 整个应用是指从应用启动,到应用结束。我们没有说“从服务器启动,到服务器关闭”,是因为一个服务器可能部署多个应用,当然你关闭了服务器,就会把上面所有的应用都关闭了。 application作用域里的变量,它们的存活时间是最长的,如果不进行手工删除,它们就一直可以使用。

application作用域上的信息传递是通过ServletContext实现的,它提供的主要方法如下所示:

Object getAttribute(String name)  //从application中获取信息;

void setAttribute(String name, Object value)  //向application作用域中设置信息。

session作用域

session作用域比较容易理解,同一浏览器对服务器进行多次访问,在这多次访问之间传递信息,就是session作用域的体现。如果把变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。所谓当前会话,就是指从用户打开浏览器开始,到用户关闭浏览器这中间的过程。这个过程可能包含多个请求响应。也就是说,只要用户不关浏览器,服务器就有办法知道这些请求是一个人发起的,整个过程被称为一个会话(session),而放到会话中的变量,就可以在当前会话的所有请求里使用。 
 session是通过HttpSession接口实现的,它提供的主要方法如下所示:

Object HttpSession.getAttribute(String name) //从session中获取信息。

void HttpSession.setAttribute(String name, Object value)//向session中保存信息。

HttpSession HttpServletRequest.getSessio() //获取当前请求所在的session的对象。

session的开始时刻比较容易判断,它从浏览器发出第一个HTTP请求即可认为会话开始。但结束时刻就不好判断了,因为浏览器关闭时并不会通知服务器,所以只能通过如下这种方法判断:如果一定的时间内客户端没有反应,则认为会话结束。Tomcat的默认值为120分钟,但这个值也可以通过HttpSession的setMaxInactiveInterval()方法来设置:

void setMaxInactiveInterval(int interval)

如果想主动让会话结束,例如用户单击“注销”按钮的时候,可以使用 HttpSession 的 invalidate()方法,用于强制结束当前session:void invalidate()

request作用域

一个HTTP请求的处理可能需要多个Servlet合作,而这几个Servlet之间可以通过某种方式传递信息,但这个信息在请求结束后就无效了。request里的变量可以跨越forward前后的两页。但是只要刷新页面,它们就重新计算了。如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。 所谓请求周期,就是指从http请求发起,到服务器处理结束,返回响应的整个过程。在这个过程中可能使用forward的方式跳转了多个jsp页面,在这些页面里你都可以使用这个变量。

Servlet之间的信息共享是通过HttpServletRequest接口的两个方法来实现的:

void setAttribute(String name, Object value) //将对象value以name为名称保存到request作用域中。

Object getAttribute(String name)//从request作用域中取得指定名字的信息。

JSP中的doGet()、doPost()方法的第一个参数就是HttpServletRequest对象,使用这个对象的 setAttribute()方法即可传递信息。那么在设置好信息之后,要通过何种方式将信息传给其他的Servlet呢?这就要用到RequestDispatcher接口的forward()方法,通过它将请求转发给其他Servlet。

RequestDispatcher ServletContext.getRequestDispatcher(String path) //取得Dispatcher以便转发,path为转发的目的Servlet。

void RequestDispatcher.forward(ServletRequest request, ServletResponse response)//将request和response转发

因此,只需要在当前Servlet中先通过setAttribute()方法设置相应的属性,然后使用forward()方法进行跳转,最后在跳转到的Servlet中通过使用getAttribute()方法即可实现信息传递。

需要注意两点:

1、转发不是重定向,转发是在Web应用内部进行的。

2、转发对浏览器是透明的,也就是说,无论在服务器上如何转发,浏览器地址栏中显示的仍然是最初那个Servlet的地址。

page作用域

page对象的作用范围仅限于用户请求的当前页面,对于page对象的引用将在响应返回给客户端之后被释放,或者在请求被转发到其他地方后被释放。page里的变量只要页面跳转了,它们就不见了。如果把变量放到pageContext里,就说明它的作用域是page,它的有效范围只在当前jsp页面里。从把变量放到pageContext开始,到jsp页面结束,你都可以使用这个变量。

以上介绍的作用范围越来越小,request和page的生命周期都是短暂的,它们之间的区别:一个request可以包含多个page页(include,forward及filter)。

时间: 2024-10-13 20:24:56

JSP-四大作用域的相关文章

JSP学习笔记(二):JSP四大作用域

一.JSP的9大内置对象(隐式),已经new好了的对象 (1)out:JspWriter的实例,举例: out.print("") out.println("") (2)page:当前JSP页面自己,类似Java中的this用法,用的少 (3)pageContext:page上下文对象. Javax.servlet.jsp.pageContext接口对象,举例: pageContext.setAttribute("x", 100) pageCon

JSP四大作用域和Cookie

一:JSP中的四大作用域 域对象的作用:保存数据,获取数据,共享数据. page:     jsp页面被执行,生命周期开始,jsp页面执行完毕,生命周期结束(jsp当前页面有效) request:       用户发送一个请求,生命周期开始,服务器返回响应,请求结束,生命周期结束(一次请求) session:       用户打开浏览器访问,创建session(生命周期开始),session超时或被声明失效,该对象生命周期结束(一次会话) application:  web应用加载的时候创建,w

jsp四大作用域和servlet三大作用域及内置对象

servlet的三大作用域对象: request(HttpServletRequest) session(HttpSession): application(ServletContext):tomcat启动时创建,tomcat关闭时销毁,整个web的生命周期只有一个 括号内为其对应的类 jsp的四大作用域对象: page(pageContext) request(HttpServletRequest) session(HttpSession) application(ServletContext

jsp四大作用域

1.区别: 1.page指当前页面有效.在一个jsp页面里有效 2.request 指在一次请求的全过程中有效,即从http请求到服务器处理结束,返回响应的整个过程,存放在HttpServletRequest对象中.在这个过程中可以使用forward方式跳转多个jsp.在这些页面里你都可以使用这个变量. 3.Session是用户全局变量,在整个会话期间都有效.只要页面不关闭就一直有效(或者直到用户一直未活动导致会话过期,默认session过期时间为30分钟,或调用HttpSession的inva

jsp 就打内置对象和四大作用域

1   九大内置对象介绍 2  四大作用域 3  查找顺序 4  jsp 本质 5  jsp  的三种标签

EL四大作用域 9个jsp对象有效范围 及 对应的类

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 java中request,session,application的作用范围      page,request,session,application四者的作用范围:     

Java Web(五) JSP详解(四大作用域九大内置对象等)

前面讲解了Servlet,了解了Servlet的继承结构,生命周期等,并且在其中的ServletConfig和ServletContext对象有了一些比较详细的了解,但是我们会发现在Servlet中编写一些HTML代码,是很不方便的一件事情,每次都需要out.println(HTML); 因此就出现了JSP,来解决这样的问题,JSP中的内容就是html,但是能够嵌套java语言,现在来详细了解一下JSP. --WH 一.JSP 1.什么是JSP? JSP(Java Server Pages):是

jsp九大内置对象和四大作用域

看到网上一些Jsp内置对象介绍的都不是很全,今天我把各位大神的整理了一下. JSP九大对象:内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用. 一.request对象:代表的是来自客户端的请求,例如我们在FORM表单中填写的信息等,是最常用的对象.客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应.它是HttpServletRequest类的实例.作用域为request(用户请求期). 常用方法: 1 object g

JSP 九大内置对象及四大作用域

JSP中一共预先定义了9个这样的对象,分别为:request.response.session.application.out.pagecontext.config.page.exception 1.request对象javax.servlet.http.HttpServletRequest request对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据.(包括头信息.系统信息.请求方式以及请求参数等).request对 象的作用域为一次请求. 当Request对象获取

JSP中九大内置对象和四大作用域

一共有九大内置对象: request.response.out.session.application.pageContext.page.config.exception 内置对象(又叫隐含对象),就是在jsp中,不需要创建(由服务器<容器>来创建),可以直接使用的对象. request           请求对象            类型 javax.servlet.ServletRequest        作用域 Request response          响应对象