操作属性的方法
void setAttribute(String name, Object o):设置属性
Object getAttribute(String name):获取指定的属性
Enumeration getAttributeNames():获取所有的属性的名字组成的 Enumeration 对象
removeAttribute(String name):移除指定的属性
pageContext, request, session, application 对象都有这些方法,这四个对象也称之为域对象。
操作属性的域对象
pageContext:属性的作用范围仅限于当前 JSP 页面。
request:属性的作用范围仅限于同一个请求。(在有转发的情况下,可以跨页面获取属性值)
session:属性的作用范围限于一次会话:浏览器打开直到关闭称之为一次会话(在此期间会话不失效)。
application:属性的作用范围限于当前 WEB 应用。是范围最大的属性作用范围,只要在一处设置属性,在其他各处的 JSP 或 Servlet 中都可以获取到。
举例
1. 添加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>DomainObjAttrOperation1</title> </head> <body> <% pageContext.setAttribute("pageContextAttr", "pageContextValue"); request.setAttribute("requestAttr", "requestValue"); session.setAttribute("sessionAttr", "sessionValue"); application.setAttribute("applicationAttr", "applicationValue"); %> <h2>DomainObjAttrOperation1 Page: <%= new java.util.Date() %></h2> <br><br> pageContextAttr: <%= pageContext.getAttribute("pageContextAttr") %> <br><br> requestAttr: <%= request.getAttribute("requestAttr") %> <br><br> sessionAttr: <%= session.getAttribute("sessionAttr") %> <br><br> applicationAttr: <%= application.getAttribute("applicationAttr") %> <br><br> <a href="domainObjAttrOperation2.jsp">使用超链接跳转到"domainObjAttrOperation2.jsp"页面</a> <br><br> <a href="domainObjAttrOperation2ServletPage">使用servlet配置跳转到"domainObjAttrOperation2.jsp"页面</a> <br><br> <a href="domainObjAttrOperation2Servlet">使用servlet跳转到"DomainObjAttrOperation2Servlet"servlet</a> </body> </html>
<%@ 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>DomainObjAttrOperation2</title> </head> <body> <h2>DomainObjAttrOperation2 Page: <%= new java.util.Date() %></h2> <br><br> pageContextAttr: <%= pageContext.getAttribute("pageContextAttr") %> <br><br> requestAttr: <%= request.getAttribute("requestAttr") %> <br><br> sessionAttr: <%= session.getAttribute("sessionAttr") %> <br><br> applicationAttr: <%= application.getAttribute("applicationAttr") %> </body> </html>
2. 添加servlet类
package org.rabbitx.web.jsp.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DomainObjAttrOperation2Servlet extends HttpServlet {
private static final long serialVersionUID = -8770653869992121955L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter pw = resp.getWriter();
String requestAttr = (String) req.getAttribute("requestAttr");
pw.println("requestAttr: " + requestAttr);
String sessionAttr = (String)req.getSession().getAttribute("sessionAttr");
pw.println("sessionAttr: " + sessionAttr);
String applicationAttr = (String)req.getServletContext().getAttribute("applicationAttr");
pw.println("applicationAttr: " + applicationAttr);
pw.flush();
pw.close();
}
}
3. 配置web.xml
<!--/JspPages/domainObjAttrOperation1.jsp页面的相关配置--> <servlet> <servlet-name>domainObjAttrOperation2Servlet</servlet-name> <servlet-class>org.rabbitx.web.jsp.servlet.DomainObjAttrOperation2Servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>domainObjAttrOperation2Servlet</servlet-name> <url-pattern>/JspPages/domainObjAttrOperation2Servlet</url-pattern> </servlet-mapping> <servlet> <servlet-name>domainObjAttrOperation2ServletPage</servlet-name> <jsp-file>/JspPages/domainObjAttrOperation2.jsp</jsp-file> </servlet> <servlet-mapping> <servlet-name>domainObjAttrOperation2ServletPage</servlet-name> <url-pattern>/JspPages/domainObjAttrOperation2ServletPage</url-pattern> </servlet-mapping>
4. 测试
4.1 输入地址http://localhost:8080/org.rabbitx.web.jsp/JspPages/domainObjAttrOperation1.jsp
4.2 点击使用超链接跳转到"domainObjAttrOperation2.jsp"页面
4.3 点击使用servlet配置跳转到"domainObjAttrOperation2.jsp"页面
4.4 点击使用servlet跳转到"DomainObjAttrOperation2Servlet"servlet