您当前的位置: 首页 >  servlet

Charge8

暂无认证

  • 0浏览

    0关注

    447博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Servlet 三大作用域

Charge8 发布时间:2018-12-22 20:20:46 ,浏览量:0

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分钟:

  
  	15 
  
   三、全局作用域 (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~

 

关注
打赏
1664721914
查看更多评论
立即登录/注册

微信扫码登录

0.0586s