四大作用域对象
1.四大作用域对象介绍
类 | 对象 | 范围 |
PageContext | pageContext | 当前页面(作用不大) |
HttpRequest | request | 一次请求(必需请求转发) |
HttpSession | session | 一次会话 |
ServletContext | application | 整个应用(有且只有一个) |
2.1 作用域对象中添加数据
作用域对象.setAttribute(key,value);
修改(再设制一个相同的key覆盖原有的)
2.2 从作用域对象中获取数据
作用域对象.getAttribute(key);
2.3 删除作用域中的数据
作用域对象.removeAttribute("key");
注意:存在哪个作用域对象里,就需要在哪个作用域对象中去取得
使用作用域的经典案例
/**
* 完成计数器
*
* */
@WebServlet("/scope/count")
public class CountServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
/**
* 测试request作用域
* 步骤:
* 1.从request对象中拿到计数器(如果计数器不存在,创建一个计数器)
* 2.拿到之后计数器加1
* 3.把这个计数器放到request作用域中
* 4.跳转到展示页面(浏览器)
* */
//拿到计数器
Integer req_count = (Integer)req.getAttribute("REQ_COUNT");
//判断
if(req_count==null){
req_count = 0;
}
// 2.拿到之后计数器加1
req_count = req_count + 1;
//3.把这个计数器放到request作用域中
req.setAttribute("REQ_COUNT",req_count);
/**
* 测试session作用域
* 步骤:
* 1.从session对象中拿到计数器(如果计数器不存在,创建一个计数器)
* 2.拿到之后计数器加1
* 3.把这个计数器放到session作用域中
* 4.跳转到展示页面(浏览器)S
* */
//1.从session对象中拿到计数器(如果计数器不存在,创建一个计数器)
HttpSession session = req.getSession();
//2.拿到之后,计数器加1
Integer session_count = (Integer)session.getAttribute("SESSION_COUNT");
if(session_count==null){
session_count = 0;
}
session_count = session_count + 1;
// 3.把这个计数器放到session作用域中
session.setAttribute("SESSION_COUNT", session_count);
/**
* 测试application作用域
* 步骤:
* 1.从application对象中拿到计数器(如果计数器不存在,创建一个计数器)
* 2.拿到之后计数器加1
* 3.把这个计数器放到application作用域中
* 4.跳转到展示页面(浏览器)
* */
ServletContext application = req.getServletContext();
Integer application_count = (Integer)application.getAttribute("APPLICATION_COUNT");
if(application_count==null){
application_count = 0;
}
application_count = application_count + 1;
application.setAttribute("APPLICATION_COUNT", application_count);
//4.跳转到展示页面(浏览器) 跳转使用请求转发,因为我们要把数据传过来(共享数据)
req.getRequestDispatcher("/scope/show").forward(req, resp);
}
}
/**
* 显示作用域中的计数器
*
* */
@WebServlet("/scope/show")
public class ShowCountServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//显示request中的计数器
Object req_count = req.getAttribute("REQ_COUNT");//得到request作用域中的值
resp.getWriter().println("request:"+req_count);
//显示session作用域中的计数器
Object session_count = req.getSession().getAttribute("SESSION_COUNT");
resp.getWriter().println("Session:"+session_count);
//显示application作用域中的计数器
Object application_count = req.getServletContext().getAttribute("APPLICATION_COUNT");
resp.getWriter().println("application:"+application_count);
}
}