JSP的内置对象(9个)是可以直接使用的。
内置对象 | 真实的对象 | 方法 |
request | HttpServletRequest | setAttribute() 、getAttribute() |
response | HttpServletResponse | addCookie()、getWriter() |
session | HttpSession | setAttribute()、getAttribute() |
application | ServletContext | setAttribute()、getAttribute() |
config | ServletConfig | getInitParameter()、getInitParameterNames() |
exception | Throwable | getMessage() |
page | Object | (不使用对象) |
out | JspWriter | write()、print() |
pageContext | PageContext | setAttribute()、getAttribute() |
前五个例子如下(request,response,session,application,config):
<%@ 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>
<h3>转发成功</h3>
<%
request.getAttribute(name);
response.addCookie(cookie);
session.getAttribute(name);
application.getAttribute(name);
config.getInitParameter(name);
%>
</body>
</html>
主要提及下面四个对象(exception,page,out,pageContext):
1.exception:
其实这个对象用的比较少了。需要在可能出错的页面属性设置errorPage的路径,然后另外在exception对象所在jsp文件属性设置isErrorPage为true。完事。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" errorPage="/JSP/1.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
int a = 10/0;
%>
</body>
</html>
————————————————————————————————————————————————————————————————————————
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>你好,服务器正在维护</h3>
<%=exception.getMessage() %>
</body>
</html>
2.page
基本上不用。当前页面对象,指的就是自己。类似Java中的this关键字。当然了,JSP文件翻译成Java文件以后page对象的值就变成了this。在哪里找到编译后的文件?tomcat——work——cataline
3.out
out隐式对象得到的是JspWriter对象。在输出过程中会需要再次转换成response.getwrite()得到的PrintWriter对象才能输出。因此会有一个输出快慢的问题。response.getwrite()明显更快!
4.PageContext对象
PageContextx对象是一个域对象,还可以通过该对象获得其他8个对象。
1.可以向自己的域存东西
2.可以向其他的域存东西
* setAttribute(String name, Object value, int scope)
* getAttribute(String name, int scope)
<%@ 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>
<h4>向pageContext域存取东西</h4>
<%
//下面两句等价
pageContext.setAttribute("name", "page");
pageContext.setAttribute("name", "page", pageContext.PAGE_SCOPE);
//下面两句等价
request.setAttribute("name", "request");
pageContext.setAttribute("name", "request", pageContext.REQUEST_SCOPE);
//类似的
pageContext.setAttribute("name", "session", pageContext.SESSION_SCOPE);
//ServletContext是application的真是对象
pageContext.setAttribute("name", "pageContext", pageContext.APPLICATION_SCOPE);
%>
<%=pageContext.getAttribute("name",pageContext.PAGE_SCOPE) %>
<%=pageContext.getAttribute("name",pageContext.REQUEST_SCOPE) %>
<%=pageContext.getAttribute("name",pageContext.SESSION_SCOPE) %>
<%=pageContext.getAttribute("name",pageContext.APPLICATION_SCOPE) %>
</body>
</html>