域对象
域对象用于存储和传递数据,不同的域对象所能传递数据的范围不同
请求域
HttpServletRequest,传递数据范围是:一次请求之内、请求转发
会话域
HttpSession,传递数据范围是:一次会话内,可以跨多个请求
应用域
ServletContext,请求数据范围是:本应用之内,可以跨多个会话
API
| API | 说明 |
|---|---|
| setAttribute(String key, Object value) | 设置属性 |
| getAttribute(String key) | 获取指定属性值 |
| removeAttribute(String key) | 删除指定属性 |
案例
-
在ControllerA中设置请求域、会话域、应用域
@WebServlet("/controllerA") public class ControllerA extends HttpServlet { public void service(HttpServletRequest req, HttpServletResponse resp) { // 设置请求域 req.setAttribute("request", "requestContent"); // 请求转发 RequestDispatcher dispatcher = req.getRequestDispatcher("/controllerB"); dispatcher.forward(req, resp); // 设置会话域 HttpSession httpSession = req.getSession(); httpSession.setAttribute("session", "sessionContent"); // 设置应用域 ServletContext app = getServletContext(); app.setAttribute("app", "appContent"); } } -
在ControllerB中获取请求域、会话域、应用域
@WebServlet("/controllerB") public class ControllerB extends HttpServlet { public void service(HttpServletRequest req, HttpServletResponse resp) { // 获取请求域 String request = (String)req.getAttribute("request"); System.out.println("请求域:" + request); // 获取会话域 HttpSession httpSession = req.getSession(); String session = (String)httpSession.getAttribute("session"); System.out.println("会话域:" + session); // 获取应用域 ServletContext app = getServletContext(); String appContent = (String)app.getAttribute("app"); System.out.println("应用域:" + appContent); } }

1698

被折叠的 条评论
为什么被折叠?



