内置对象
内置对象的概念:jsp已经帮助初始化过的,可以拿来直接用。
jsp存在九个内置对象
request | HttpServletRequest |
---|---|
response | HttpServletResponse |
page | 类似于java中的this,很少用 |
application | 类似于ServletContext |
pageContext | PageContext类的实例,提供对jsp页面所有对象以及命名空间的访问 |
out | 输出对象,Printwriter类的实例,用于把结果输出至网页上,类似于response.getWrite() |
session | 就是servlet的HttpSession |
config | ServletConfig类的实例,做配置选项的 |
exception | 做异常实例 |
域对象
用来存值,保存数据。级别越高,越不容易丢。
PageContext <request<session<application
PageContext:只能本页面,页面级别
request:同一个请求,请求级别
session:回话级别
application:应用级别
PageContext范围:本页面有效
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//在pageContext设置值
//在域对象中设置值得时候,键只能是字符串
pageContext.setAttribute("name", "zhangsan");
%>
<%
String name=(String)pageContext.getAttribute("name");
out.println(name);
%>
<h1><%=pageContext.getAttribute("name") %></h1>
<jsp:forward page="context02.jsp"/>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String name=(String)pageContext.getAttribute("name");
out.println(name);
%>
<h1><%=pageContext.getAttribute("name") %></h1>
</body>
</html>
request是一个请求内有效
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//request请求头
request.setAttribute("name", "大葱");
%>
<%
String name=(String)request.getAttribute("name");
out.println(name);
%>
<h1><%=request.getAttribute("name") %></h1>
<jsp:forward page="context02.jsp"/>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String name=(String)request.getAttribute("name");
out.println(name);
%>
<h1><%=request.getAttribute("name") %></h1>
</body>
</html>
使用重定向拿不到
<%
//使用重定向拿不到
response.sendRedirect("context02.jsp");
%>
session:会话级别,登录一次内容一直在,关闭浏览器,重新登录,使用重定向能拿到
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
session.setAttribute("name", "xiaohei");
%>
<%
//使用重定向能拿到
response.sendRedirect("context02.jsp");
%>
<h1><%=session.getAttribute("name") %></h1>
<%-- <jsp:forward page="context02.jsp"/> --%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String name=(String)session.getAttribute("name");
out.println(name);
%>
</body>
</html>
application:永久存在,服务器重启后不存在
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
session.setAttribute("name", "xiaohei");
//会保存成全局变量,只有web服务器关闭、重启等操作才会销毁
application.setAttribute("count", 10000);
%>
<%
//使用重定向能拿到
response.sendRedirect("context02.jsp");
%>
<h1><%=session.getAttribute("name") %></h1>
<%-- <jsp:forward page="context02.jsp"/> --%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String name=(String)session.getAttribute("name");
out.println(name);
%>
<h1><%=application.getAttribute("count") %></h1>
</body>
</html>