本篇繼前兩篇內置對象,繼續記錄JSP中的其餘的內置對象:application,page,pageContext,config,exceptionhtml
該對象至關於JAVA中的全局靜態對向,在服務器啓動後,就一直存在,知道服務器關閉。java
該對象中的值,在整個服務器開啓期間都是全部用戶共享的,所以一般用於作一些用戶登陸次數統計和服務相關信息的操做。apache
經常使用的方法包括:服務器
setAttribute()session
getAttribute()app
getAttributeNames()jsp
getServerInfo()ide
使用方式以下:ui
<% application.setAttribute("name","xingoo"); application.setAttribute("age","32"); %> name:<%=application.getAttribute("name") %><br> application中的屬性:<br><% Enumeration attributes = application.getAttributeNames(); while(attributes.hasMoreElements()){ String name = attributes.nextElement().toString(); out.println(name+": "+application.getAttribute(name)+"<br>"); } %><br> JSP(servlet)引擎版本號:<%=application.getServerInfo() %>
樣例代碼:this
<%@ page language="java" import="java.util.*,java.io.*" contentType="text/html; charset=utf-8"%> <%-- language 腳本使用的語言 import 加載類文件 contentType 編碼方式 --%> <!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>application內置對象</title> </head> <body> <h1>application</h1> <% application.setAttribute("name","xingoo"); application.setAttribute("age","32"); %> name:<%=application.getAttribute("name") %><br> application中的屬性:<br><% Enumeration attributes = application.getAttributeNames(); while(attributes.hasMoreElements()){ String name = attributes.nextElement().toString(); out.println(name+": "+application.getAttribute(name)+"<br>"); } %><br> JSP(servlet)引擎版本號:<%=application.getServerInfo() %> </body> </html>
運行效果:
能夠看到application默認保存了一些服務器相關的信息
page對象用於JSP頁面自己的引用,至關於一個this指針。
由於JSP自己會解析成一個java類,這個page對象,就是該類的一個類對象。
經常使用方法就是類的基本方法:
class getClass()返回此object類 int hashCode() hash碼 boolean equals(Object obj) 是否與制定的對象相等 void copy(Object obj) 拷貝 Object clone() 克隆 String toString() void notify() 喚醒線程 void notifyAll() 喚醒全部線程 void wait(int timeout) 使一個線程處於等待直到timeout結束或被喚醒 void wait() 使一個線程處於等待直到被喚醒
好比,在頁面中引用:
pageObject:<%=page.getClass() %>
能夠獲得以下的結果:
pageObject:class org.apache.jsp.jspPage_jsp
這是由於jsp頁面,會被解析成:【JSP頁面名字】_jsp.java
這個對象很強大,經過它能夠獲得session,page,application,request,response等對象。
經常使用的方法:
JspWriter getOut()回去輸出流 HttpSession getSession() 返回當前HttpSession對象 Object getPage() 返回Object對象 ServletRequest getRequest() ServletResponse getResponse() void setAttribute Object getAttribute() int getAttributeScope(String name)返回屬性的做用範圍 void forward(String relativeUrlPath) 使當前頁面重導到另外一頁面 void include(String relativeUrlPath)當前位置包含另外一文件
這個對象用於初始化Servlet時,傳遞一些必要的信息參數等,好比服務器的相關信息都會以ServletContext對象進行傳遞,經過該對象能夠得到ServletContext的引用。
經常使用的方法:
ServketContext getServletContext()返回服務器相關信息對象 String getInitParameter(String name)返回初始化參數值 Enumeration getInitParameterNames() 返回Servlet初始化須要的參數
這個對象時異常對象,若是要使用該對象,須要注意:
1 在使用界面使用 errorPage="錯誤處理頁面.jsp" ,指定錯誤處理的JSP
2 在錯誤處理的JSP頁面中,設定 isErrorPage="true"
參考樣例以下:
在使用界面,指定錯誤處理的界面
<%@ page language="java" import="java.util.*,java.io.*" contentType="text/html; charset=utf-8" errorPage="exception.jsp"%> <!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>exception內置對象</title> </head> <body> <h1>JSP</h1> <% System.out.println(100/0);//拋出運行時異常,算術異常 %> </body> </html>
在錯誤處理界面,進行一場的捕獲:
<%@ page language="java" import="java.util.*,java.io.*" contentType="text/html; charset=utf-8" isErrorPage="true"%> <!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>exception內置對象</title> </head> <body> <h1>JSP</h1> 異常消息是:<%=exception.getMessage() %><br> 異常字符串描述:<%=exception.toString() %><br> </body> </html>
可獲得以下的錯誤信息: