Servlet作用域对象

简介

servlet有三大作用域对象:request、session、application

类型对象
HttpServletRequestrequest
HttpSessionsession
ServletContextapplication

作用域对象共享数据相关的方法:

  • 设置作用域中的共享数据:作用域对象.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对象
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梁云亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值