javaee中web的四大容器简介

在Servlet中,存在四种容器:

(1)page-pageContext

(2)request-HttpRequest

(3)session-HttpSession

(4)application-ServletContext

1.首先我们简单介绍第一个容器:pageContext

每一个容器都存在着不同的范围,顾名思义,pageContext的范围作用域是整个页面。pageContext对象存在两个常用的方法:setAddribute()和getAddribute()方法。

其中第一个方法是将以个对象值存放到pageContext中。第二个方法是从pageContext中取出对应key的值。下面我们举个例子来说明:

在JSP页面中通过setAddribute方法在pageContext中设置一个值,然后在该页面中通过getAddribute方法获取刚才设置的值,这时在该页面输出时是可以取到值的。

我们重新再新建一个JSP页面,在此页面中同样适用getgetAddribute方法来根据key获取在第一个JSP中设置的属性值,得到的结果是获取不到的。

结论:pageContext的作用域范围只是在整个页面内有效。

2.request

request代表了一次客户端对服务器的请求,该对象同样有setAddribute()和getAddribute()方法来从request中设置和获取值。request的作用域是在请求发出和请求结束之间存在。

即简单的可以理解为:当客户端向服务器发出请求后,将参数设置到了request中,当重定向到另外的JSP页面或发出了新的请求后该参数将会随着request的结束而消失。

3.session

session是一个很好的容器,好多地方都会用到session来管理数据,上次我写的一篇文章就是基于session来实现简单的购物车,原理大家看过后肯能都会明白:在此附加下该链接:http://blog.csdn.net/u013718120/article/details/41759759。好多人有时候觉得session很好用,就开始滥用session来保存数据,结果当一个项目的规模逐渐增大时,就会分不清楚保存了哪些数据。并且session代表了一次用户会话,一般在浏览器打开时,session就会建立。当用户访问量相对较大时,效率的问题就变的相当不客观了。session的作用域即代表了一次用户会话,当浏览器打开时session创建,不要认为浏览器关闭时session就会消失。这是很多人都会误解的一个问题。session是受服务器Cookie来管理的,我在我的关于session的介绍一篇文章中有所提及,此处就不再多说。好多人感觉session在浏览器关闭再打开时就访问不到数据了,就觉得是浏览器关闭时session就结束了,其实不然。出现这种假象的原因就是session的生存时间,默认可能就是和浏览器的一次用户会话时间是相同的,但是数据的消失并不代表了session立即消亡。

4.application

application是代表了整个web。即作用域占据了整个web应用。

application为几个页面共享数据提供了可能。如果有几个页面想同时共享数据,可以将该属性值存放到application中。

举例说明:在web.xml中我们可以使用来设置一个全局上下文的参数,在JSP页面中我们可以利用application.getAddribute()来获取该参数的值,不会区分在哪个页面来访问该参数,即该应用中每个页面都可以访问该参数。

你可能感兴趣的:(Java,Web)