servlet三大作用域

Sevlet中的三个作用域

Servlet中常用来存储数据的三大作用域:按照使用范围从小到大排列为:HttpServletRequest、HttpSession、ServletContext三个作用域,下边详细介绍这三个作用域。

1、HttpServletRequest作用域:

存入数据的方法request.setAttribute("User",user);(这里是把user放入到request作用域中,key是User,value是user),此作用域保存的数据只是针对一次请求。使用该对象保存数据,一次请求内数据有效。请求转发是属于一次请求的,所以放在此作用域中的数据,在一个页面转发多个页面数据都是有效的。

作用域创建时间:客户端向服务器发送一次请求时创建。

销毁时间:服务器为这次请求作出响应之后,销毁request.

2、HttpSession作用域:

针对一次会话,使用该对象保存数据,数据保存在服务器上,一次会话(多个请求)内数据有效,如果关闭一次浏览器,结束这次回话,再次打开的时候session就失效了。

创建时间:服务器第一次调用getSession()方法的时候,服务器创建session对象。

销毁时间:销毁有三种情况

(1)服务器非正常关闭(正常关闭时:Session被序列化);

(2):Session过期,xml文件配置默认时间是30分钟。

(3):手动调用Session的invalidate的方法。

3、SevletContext作用域:

针对一个web应用。一个web应用只有一个SevletContext对象,使用该对象保存的数据在整个web应用中都有效。

创建时间:服务器启动的时候。

销毁时间:服务器关闭的时候或者项目移除的时候。

总结:如果数据保存在request对象中,一般使用请求转发,来获取。因为请求转发是只有一次请求的。但是如果是重定向,因为重定向是多次请求,所以不能使用request中的数据,可以使用session或context中的。

4、三个作用域通用API:

存放数据:setAttribute(name,value)

获取数据:getAttribute(name);

删除数据:removeAttribute(name);

你可能感兴趣的:(servlet三大作用域)