JSP-九大內置對象相關解釋

JSP的九大內置對象

JSP中有九個內置對象,我們在JSP頁面中編寫Java腳本語言時可以直接用這些內置對象。

我們已經明確知道了JSP的實質還是一個Servlet,至於它的編寫是自動生成的,我們查看它的java文件可以發現_jspService方法中有六個已經定義好的變量和兩個方法中的形參。

public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
      throws java.io.IOException, javax.servlet.ServletException {
     	//...
	final javax.servlet.jsp.PageContext pageContext;
	javax.servlet.http.HttpSession session = null;
	final javax.servlet.ServletContext application;
	final javax.servlet.ServletConfig config;
	javax.servlet.jsp.JspWriter out = null;
	final java.lang.Object page = this;

	//...
	
	try{
		session = pageContext.getSession();
     		out = pageContext.getOut();
     		//...

我們也明確的知道我們編寫的JSP中的腳本語言最終會被存放到jspService方法中,所以我們可以直接使用這些內置的對象

  • pageContext:頁面上下文
  • request:請求對象
  • response:響應對象
  • session:一次會話
  • application(ServletContext):代表這個Web應用的上下文
  • config(ServletConfig):Servlet的配置對象
  • out:頁面輸出的對象
  • page:就是本類的對象,代表當前這個頁面
  • exception:異常對象,這個對象只有當JSP聲明爲錯誤頁面時才能直接使用

pageContext

方法 作用
public HttpSession getSession(); 獲取該頁面的本次會話Session對象(session)
public Object getPage(); 返回當前頁面的對象值(page)
public ServletRequest getRequest(); 獲取該頁面的Request對象(request)
public ServletResponse getResponse(); 獲取該頁面的相應對象(response)
public Exception getException(); 獲取該頁面的錯誤異常對象(exception)
public ServletContext getServletContext(); 獲取該web應用的實例化對象(application)
public ServletConfig getServletConfig(); 獲取配置對象(config)
public void forward(String relativeUrlPath) throws ServletException, IOException; 用於請求轉發到指定路徑

request和response

可以參考博主的另一篇文章,request和response

Session

可以參考博主的另一篇文章,session

application(ServletContext)

可以參考博主的另一篇文章,ServletContext

config(ServletConfig)

方法 作用
public String getServletName(); 返回此servlet實例的名稱。 名稱可以通過服務器管理來提供,可以在 Web應用程序部署描述符中分配,或者對於未註冊(因此未命名)的Servlet實例,它將是Servlet的類名
public ServletContext getServletContext(); 返回該web應用的ServletContext對象
public String getInitParameter(String name); 返回包含命名初始化參數值的String,如果該參數不存在,則返回 null
public Enumeration getInitParameterNames(); 返回servlet的初始化參數的名稱作爲String 對象的 Enumeration,或如果servlet沒有沒有初始化參數,則返回一個空的Enumeration

out

該對象是javax.servlet.jsp.JspWriter,它繼承了java.io.Writer,它是向客戶端頁面輸出數據的一個類。

方法 作用
public void newLine() throws IOException; 頁面換行
public void print(var b) throws IOException; 向頁面輸出指定的數據,這裏的數據類型可以是boolean,char,int,long,float,double,char[],String,Object
public void println() throws IOException; 換行,和public void newLine() throws IOException;效果一致
public void println(var x) throws IOException; 和public void print(var b) throws IOException;效果一致,唯一不同的是,該方法輸出後會自動換行
public void clear() throws IOException; 清除緩衝區的內容。如果已經清除了緩衝區,則清除操作將拋出IOException 來表示某些數據已經不可撤銷地寫入客戶端響應流的事實
public void clearBuffer() throws IOException; 清除緩衝區的當前內容。與clear()不同,如果緩衝區已經被刷新,則此方法不會引發IOException。它僅清除緩衝區的當前內容並返回。
public void flush() throws IOException; 刷新流。如果流已將各種write()方法中的任何字符保存在緩衝區中,請立即將它們寫入其預期的目標。然後,如果該目標是另一個字符或*字節流,則將其刷新。因此,一次flush()調用將刷新Writer和OutputStreams鏈中的所有緩衝區。
public int getBufferSize(); 此方法返回JspWriter使用的緩衝區的大小。
public int getRemaining(); 此方法返回緩衝區中未使用的字節數。
public boolean isAutoFlush() 此方法返回值表示JspWriter是否正在自動刷新。

page

page就表示本類的對象,可以用於調用本類中存在的方法或者成員。

exception

只有當JSP頁面被聲明爲錯誤頁面時<%@ page isErrorPage="true" %>,才能直接使用該異常對象,我們還是直接看一個聲明錯誤JSP頁面的java代碼,發現其中與未聲明爲錯誤頁面的JSP的java文件的主要區別就是多了:

java.lang.Throwable exception = org.apache.jasper.runtime.JspRuntimeLibrary.getThrowable(request);
if (exception != null) {
      response.setStatus(javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
}

一般來說,這個是用於自定義錯誤頁面時使用,該對象用於記錄錯誤信息,然後在頁面中以友好的形式提示客戶端出現錯誤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章