内置对象
- pageContext:存东西(setAttribute),保存的数据只在当前页面中有效
- request:存东西(setAttribute),保存的数据只在一次请求中有效,请求转发也会携带(请求一次,请求不变)
- session:存东西(setAttribute),保存的数据在一次会话中有效,从打开浏览器到关闭浏览器(其实并不严格,同一个用户的sessionID对应的cookie没被删除,那么服务器中对应的session就一直是一个)
- application:存东西(setAttribute),等价于servletContext,保存的数据在服务器启动过程中有效,从服务器打开到关闭,数据对该服务器中所有应用可见
- response:响应
- config:配置,等价于ServletConfig
- out:输出
- page:页面,基本没人用
- exception:异常
- 四种存储数据的内置对象,作用域pageContext<request<session<application
- 其中request>page的原因是,请求转发之后,数据可以被待到其他页面
举例:
1. demo01:在同一个页面(pageContextDemo01.jsp)存/取,都能取出来
- pageContextDemo01.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--存数据--%>
<%
pageContext.setAttribute("name1", "于晶1");
request.setAttribute("name2", "于晶2");
session.setAttribute("name3", "于晶3");
application.setAttribute("name4", "于晶4");
%>
<%--使用pageContext寻找数据--%>
<%
String name1 = (String) pageContext.findAttribute("name1");
String name2 = (String) pageContext.findAttribute("name2");
String name3 = (String) pageContext.findAttribute("name3");
String name4 = (String) pageContext.findAttribute("name4");
String name5 = (String) pageContext.findAttribute("name5");
%>
<%--使用EL表达式输出--%>
<h1>取出的值为:</h1>
<h2>${name1}</h2>
<h2>${name2}</h2>
<h2>${name3}</h2>
<h2>${name4}</h2>
<h2>${name5}</h2>
</body>
</html>
2. demo02:在页面1(pageContextDemo01.jsp)存,在页面2(pageContextDemo02.jsp)取,只有session和application中的能够取出来
- pageContextDemo02.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--使用pageContext寻找数据--%>
<%
String name1 = (String) pageContext.findAttribute("name1");
String name2 = (String) pageContext.findAttribute("name2");
String name3 = (String) pageContext.findAttribute("name3");
String name4 = (String) pageContext.findAttribute("name4");
String name5 = (String) pageContext.findAttribute("name5");
%>
<%--使用EL表达式输出--%>
<h1>取出的值为:</h1>
<h2>${name1}</h2>
<h2>${name2}</h2>
<h2>${name3}</h2>
<h2>${name4}</h2>
<h2>${name5}</h2>
</body>
</html>
3. demo03:请求页面1,页面1又自动将请求转发到页面2,request、session和application中的数据都能取出来
- pageContextDemo01.jsp (pageContext.forward("/pageContextDemo02.jsp");)