2017年9月7日 上午11:07
概述
- Servlet提供三个作用域(变量池),用于让方便用户存储变量
- 关键是要了解这三个作用域(变量池),何时开始,何时释放,不要自己需要这个池子里的变量时,但是池子已经释放了
- 附录中有使用的源码
servlet的作用域
概述:每个作用域对象都相应的代表一个域容器 其中的信息在本域中共享。
- request作用域 作用范围:一次请求
- 当前request池子结束标志:
- 用户刷新了一下当前页面,原来的request池子就释放了,产生了一个新的request池子
- 如果使用在service中使用请求转发的方式,那么依然算一次请求,request池子还在
- session作用域 作用范围:一次会话
- session池子结束标志
- 用户把浏览器关了
- 用户换了一个浏览器登陆
- application作用域 作用范围:一次服务周期
- application结束标志
- 服务器管理员将tomcat服务器重启了
- application作用域 > session作用域 > request作用域
- 小的作用域存在,大的作用域一定存在
附录:
MyServlet5 extends HttpServlet:给池子里赋值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| package com.shanxi.weixin.servlet;
import java.io.IOException; import java.util.Enumeration;
import javax.servlet.GenericServlet; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession;
public class MyServlet5 extends HttpServlet {
@Override protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { HttpSession session = req.getSession(); ServletContext application = req.getServletContext(); req.setAttribute("name","mike"); session.setAttribute("name","john"); application.setAttribute("name","rose"); res.sendRedirect("/servletDemo/myServlet6"); } }
|
MyServlet6 extends HttpServlet:从池子里取值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| package com.shanxi.weixin.servlet;
import java.io.IOException; import java.util.Enumeration;
import javax.servlet.GenericServlet; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession;
public class MyServlet6 extends HttpServlet {
@Override protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { HttpSession session = req.getSession(); ServletContext application = req.getServletContext(); System.out.println(req.getAttribute("name")); System.out.println(session.getAttribute("name")); System.out.println(application.getAttribute("name")); } }
|