Servlet 三大作用域

Servlet三大作用域包括:

   1、request作用域:针对同一次请求,一般存放提示信息

         每一次请求都是一个新的request对象,如果Web组件之间需要共享同一个请求中的数据,只能使用request作用域

         对象类型 javax.servlet.http.HttpServletRequest

   2、session作用域:针对同一次会话,一般存放用户信息

         每一次会话都是一个新的session对象,如果需要一个会话中的多个同一个请求之间需要共享数据,只能使用session作用域

         对象类型 javax.servlet.http.HttpSession

   3、application作用域:针对同一个web项目/web应用

        Tomcat从启动到关闭,web项目中有且仅有一个application对象,作用于整个Web应用,可以实现多个会话之间的数据共享

        对象类型 javax.servlet.ServletContext

一、请求作用域(request作用域):1次请求中数据是有效的

    只要发送一个请求就会创建一个request对象,这个对象只在本次请求中有效。

    一般用于不同页面之间的同一请求,比如表单的传值,a链接的传值跳转等。

    通过 HttpServletRequest  request 对象直接获取方法

    常用的方法有:request.setAttribute(), request.getAttribute(), request.removeAttribute(), request.getParameter()等。

 

二、 会话作用域(session作用域):1次会话中数据是有效的

      服务器会为每一个会话创建一个session对象,session中的数据可以被本次会话中的所有servlet访问,会话是从浏览器打开开始,到关闭浏览器结束。

     session常用于登录验证,登录成功后浏览器会为其分配一个session键值对,之后的访问权限判断键值对就可以了

     获取方式:HttpSession session = request.getSession();

Session的超时时间

  Tomcat中Session的默认超时时间为20分钟。

   java通过 session.setMaxInactiveInterval(int seconds) 修改超时时间。

  也可以修改web.xml 配置超时时间。例如修改为15分钟:

  <session-config>
  	<session-timeout>15</session-timeout> <!-- 单位: 分钟 -->
  </session-config>
</web-app>

  

三、全局作用域 (application作用域):只要服务器不关,数据一直是有效的

      application是应用程序作用域,是从程序开始运行到运行停止。
      注意:服务器只会创建一个ServletContext 对象

获取方式:

        ServletContext application1 = super.getServletContext();
        ServletContext application2 = req.getServletContext();
        ServletContext application3 = req.getSession().getServletContext();

 

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//1.request作用域
		String username = request.getParameter("username");
		request.setAttribute("amount", 100);//设值
		request.removeAttribute("amount");
		
		//2.session作用域
		//先获得session
		HttpSession session = request.getSession();
		session.setAttribute("username", username);
		Object s_username = session.getAttribute("username");
		session.setMaxInactiveInterval(30*60); //超时时间30分钟,单位秒
		session.removeAttribute("username");
		
		//3.全局作用域 (application作用域)
		//通过获取session再获取application
		ServletContext application = request.getSession().getServletContext();
		//直接获取父类javax.servlet.GenericServlet的方法
		application = getServletContext();
		application.setAttribute("number", 10);
		Object a_number = application.getAttribute("number");
		application.removeAttribute("number");		
		
		doPost(request, response);
	}

 

ends~

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值