美文网首页
servlet三大作用域

servlet三大作用域

作者: 码农的碎事 | 来源:发表于2017-11-02 09:44 被阅读0次

    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三大作用域

          本文链接:https://www.haomeiwen.com/subject/giqopxtx.html