0


Servlet作用域对象

简介

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对象

本文转载自: https://blog.csdn.net/lianghecai52171314/article/details/124057918
版权归原作者 梁云亮 所有, 如有侵权,请联系我们删除。

“Servlet作用域对象”的评论:

还没有评论