Servlet三大作用域

作用域名称对应Servlet中的对象解释
应用域applicationServletContext服务器开启,会自动创建应用域对象,这个对象是全局唯一的,存在里面的数据在整个应用中都能共享。
会话域sessionHttpSession会话是指浏览器的一次开启以及关闭,开启浏览器表示开启了一个会话,关闭浏览器表示会话结束(会话就是单纯的浏览器的开启与关闭,与标签页无关,单独开启新的标签页不是新的会话),存在里面的数据可以在同一个会话共享。
请求域requestHttpRequest浏览器每次访问我们的服务器都称为一次请求,数据如果存在在请求域中,就代表只有当前葡请求能获取到里面的数据。

用处:

作用域主要就是用来存储数据的,根据作用域的级别不同,数据的存储范围也不同从大到小一次为:

应用域>会话域>请求域

如果数据存在应用域之中,只要服务不关闭所有的Servlet都能访问到数据,如果数据存放在会话域之中,只有同一个会话才能从里面获取数据,如果数据存放在请求域之中,只有同一个请求才能从里面获取数据


```java
public class AServlet extends HttpServlet {
	@Override
	protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
		//观察应用域数据(存)
		//arg0.getServletContext().setAttribute("msg", "和斗殴让他加油");
		//观察会话域数据(存)
		//arg0.getSession().setAttribute("msg", "立刻就离开他如今又卡了");
		/*HttpSession session = arg0.getSession();
		//设置会话域数据过期时间(不活跃的时间间隔)
		session.setMaxInactiveInterval(100);
		session.setAttribute("msg", "空间还看过的来看");
		session.setAttribute("msgg", "空间还看过的来看");*/
		
		arg0.setAttribute("aaa", "哦和金融诶具体如图");
	}
}


public class BServlet extends HttpServlet {
	@Override
	protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
		//取出应用域的数据
		//System.out.println("BServlet:"+arg0.getServletContext().getAttribute("msg"));
		//取出会话域的数据
		/*System.out.println("BServlet:"+arg0.getSession().getAttribute("msg"));
		System.out.println("BServlet:"+arg0.getSession().getAttribute("msgg"));*/
         
		System.out.println(arg0.getAttribute("aaa"));

	}

}

public class CServlet extends HttpServlet{
	
	protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
		//System.out.println("CServlet:"+arg0.getServletContext().getAttribute("msg"));
		//System.out.println("BServlet:"+arg0.getSession().getAttribute("msg"));
       //删除指定的会话层数据
		//arg0.getSession().removeAttribute("msg");
		//清空会话层所有数据
		//arg0.getSession().invalidate();
		System.out.println(arg0.getAttribute("aaa"));
	}
}
```

web.xml的配置

```xml
<servlet>
  <servlet-name>a</servlet-name>
  <servlet-class>com.ishangu.servlet.AServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>a</servlet-name> <!-- 指定Servlet的名字 -->
  <url-pattern>/a</url-pattern> <!-- 指定浏览器访问这个路径 -->
  </servlet-mapping>
  
  <servlet>
  <servlet-name>b</servlet-name>
  <servlet-class>com.ishangu.servlet.BServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>b</servlet-name> <!-- 指定Servlet的名字 -->
  <url-pattern>/b</url-pattern> <!-- 指定浏览器访问这个路径 -->
  </servlet-mapping>
  
  <servlet>
  <servlet-name>c</servlet-name>
  <servlet-class>com.ishangu.servlet.CServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>c</servlet-name> <!-- 指定Servlet的名字 -->
  <url-pattern>/c</url-pattern> <!-- 指定浏览器访问这个路径 -->
  </servlet-mapping>
```

实际开发中应用域我们是很少使用的,因为应用域的数据一般不会过期,频繁使用应用域的话会造成服务器数据越来越多,引起服务器崩溃,会话在开发使用中我们很少去设置过长的时间,因为会话的数据也是存储在服务器中的,如果会话长时间保持联系,也会造成服务器数据越来越多,|所以我们几乎不会在会话域和应用域存储大量数据,以及一般会根据情况给会话设置一个合理的过期时间。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值