Servlet三大作用域

一、Servlet三大作用域

servlet三大作用域:request,session,application(ServletContext)

1. Request
  request表示一个请求,只要发出一个请求就会创建一个request,它的作用域仅在 当前请求中有效,如果Web组件之间需要共享同一个请求中的数据,只能使用请求转发。

a.用处:

  • 用于服务器间同一请求不同页面之间的参数传递
  • 用于表单的控件值传递

b.常用方法:

request.setAttribute(); 
request.getAttribute(); 
request.removeAttribute(); 
request.getParameter().

2. Session
  服务器为每个会话创建一个session对象,所以session中的数据可供当前会话中所有servlet共享。作用域:会话从用户打开浏览器开始,直到关闭浏览器才结束,一次会话期间只会创建一个session对象。

a.用处:

  • 用于web开发中的登陆验证界面
  • 用于电商网站购物车功能

b.常用方法:

session.setAttribute(); 
session.getAttribute(); 
session.removeAttribute();

在Servlet直接获取session:

HttpSession session = request.getSession();

JSP页面中直接使用(session属于JSP九大内置对象之一):

<%session.serAttribute("name","admin")%> 

c.session被销毁

  • 1)session超时;
  • 2)浏览器关闭后,再也访问不到和该浏览器对应的session,它会在超时之后被销毁;
  • 3)调用 session.invalidate();

备注: session是服务器端对象,保存在服务器端,并且服务器可以将创建session后产生的 sessionid 通过一个 cookie 返回给客户端,以便下次验证。(session底层依赖于cookie)


3. Application(ServletContext)
  ServletContext在 服务器启动时创建,服务器关闭时销毁。一个JavaWeb应用只创建一个ServletContext对象,所有的浏览器在访问服务器时都共享同一个ServletContext对象,ServletContext对象一般用于在多个浏览器间共享数据时使用。

Servlet中获取Application对象:

	ServletContext serContext = this.getServletContext();
    serContext .setAttribute("name", "kaixuan");    //设置一个值进去
    serContext .getAttribute("name");      //获取键值对  

备注:ServletContext同属于JSP九大内置对象之一,在JSP页面中可以直接使用


4. 作用域对象共享数据:

1. 设置作用域中的共享数据
   作用域对象.setAttribute(String name,Object value);
2. 获取作用域中的共享数据
   Object value = 作用域对象.getAttribute(String name);
3. 删除作用域中的指定的共享数据
   作用域对象.removeAttribute(String name);

二、作用域总结

1. 生命周期

  • request:只作用于当前一次请求
  • session:一次会话(多次请求)
  • application:项目的启动到结束

2. 作用范围

  • requset:所有被请求转发的Servlet
  • session:所有Servlet(当前浏览器)
  • application:所有Servlet(所有浏览器都行)

3. 正确选择作用域

  • request:跟当前操作功能相关
  • session:跟用户信息相关,如登录信息、银行账号
  • application:跟项目全局信息相关,如:京东配送地址

如果选择的作用域不够准确,会造成内存浪费。

4. 测试作用域生命周期

验证

测试过程:新建项目部署到Tomcat,浏览器访问,F5多次刷新,中途换浏览器访问

测试结果:request的计数值始终是1,session的技术值当换了浏览器后从1开始,Application的计数值一直相加。

  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值