前言
本文主要讲解javaweb的四个域对象以及他们的作用范围,后面会有小demo来具体测试。
四个域对象
(1)pageContext:属性的作用范围仅限于当前JSP页面;
(2)request:属性的作用范围仅限于同一个 请求;
(3)session:属性的作用范围仅限于一次会话,游览器打开直到关闭为一次会话(前提是在此期间会话不会失效)
(4)application:属性的作用范围限于当前WEB应用。
域对象共有的方法:
(1)Object getAttribute(String name):获取指定属性;
(2)Enumeration getAttributeNames():获取所有属性的名字组成的Enumeration对象;
(3)removeAttribute(String name):移除指定属性;
(4)void setAttribute(String name,Object o):设置属性。
项目结构
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>javaWeb_13</display-name> <welcome-file-list> <welcome-file>first.jsp</welcome-file> </welcome-file-list> </web-app>
first.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>当前页获取域对象里面的属性值</title> </head> <body> <h2>First Page</h2> <% pageContext.setAttribute("pageContextAttr", "pageContextValue"); request.setAttribute("requestAttr", "requestValue"); session.setAttribute("sessionAttr", "sessionValue"); application.setAttribute("applicationAttr", "applicationValue"); %> 01-pageContext:<%=pageContext.getAttribute("pageContextAttr") %> <br><br> 02-request:<%=request.getAttribute("requestAttr") %> <br><br> 03-session:<%=session.getAttribute("sessionAttr") %> <br><br> 04-application:<%=application.getAttribute("applicationAttr") %> <br><br> <a href="second.jsp">To Second Page</a> </body> </html>
second.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>跨页面获取域对象里面的属性值</title> </head> <body> <h2>Second Page</h2> 01-pageContext:<%=pageContext.getAttribute("pageContextAttr") %> <br><br> 02-request:<%=request.getAttribute("requestAttr") %> <br><br> 03-session:<%=session.getAttribute("sessionAttr") %> <br><br> 04-application:<%=application.getAttribute("applicationAttr") %> <br><br> <a href="first.jsp">To First Page</a> </body> </html>
运行项目后,在当前页面里面可以取到所有域对象的值
跨页面时,由于是不同的页面,不同的请求,所以pageContext和request为空
关闭游览器,再次重新打开,直接输入第二个页面的地址,session也为空,说明再次打开游览器后不是同一次会话
参考视频:点击打开链接