简介
servlet有三大作用域对象:request、session、application
类型对象HttpServletRequestrequestHttpSessionsessionServletContextapplication
作用域对象共享数据相关的方法:
- 设置作用域中的共享数据:作用域对象.setAttribute(String name,Object value);
- 获取作用域中的共享数据:Object value = 作用域对象.getAttribute(String name);
- 删除作用域中指定的共享数据:作用域对象.removeAttribute(String name);
注意:在哪个作用域中设置共享数据,就只能从该作用域中取出数据。
request
request表示一个请求,只要发出一个请求就会创建一个request,它的作用域仅在当前请求中有效,如果Web组件之间需要共享同一个请求中的数据,只能使用请求转发。
每一次请求都是一个新的request对象,如果在web组件之间需要共享同一个请求中的数据,只能使用请求转发。
应用场景:
- 用于服务器间同一请求不同页面之间的参数传递
- 用于表单的控件值传递
session
服务器为每个会话创建一个session对象,所以session中的数据可供当前会话中的所有servlet共享。
每一次会话都是一个新的session对象,如果需要在一次会话中多个请求之间需要共享数据,只能使用session。
会话从用户打开浏览器开始,直到关闭浏览器才结束,一次会话期间只会创建一个session对象。
session是服务器端对象,保存在服务器端,并且服务器可以将创建session后产生的 sessionid 通过一个 cookie 返回给客户端,以便下次验证。(session底层依赖于cookie)。
应用场景:
- 用于web开发中的登陆验证
- 用于电商网站购物车功能
session销毁的场景:
- session超时;
- 浏览器关闭后,session会在超时之后被销毁;
- 调用 session.invalidate()方法;
application
application在服务器启动时创建,服务器关闭时销毁。
application表示一个应用,在一个应用中有且只有一个application对象,作用于整个web应用,可以实现多次会话之间的数据共享。
获取ServletContext对象的方式:
- 在servlet类中:super.getServletContext();
- 通过请求对象来获取:request.getServletContext();
- 通过session对象来获取:request.getSession().getServletContext(); 注意点:无论是哪一种方式,获取的都是同一个ServletContext对象
版权归原作者 梁云亮 所有, 如有侵权,请联系我们删除。