JSP的9个内置对象,4个常用对象

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):

主要提及下面四个对象(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>
经验分享 程序员 微信小程序 职场和发展