[02] JSP內置對象
阿新 • • 發佈:2017-12-27
object jsp頁面 res cep add 系列 ice containe obj
在 [01] JSP的基本認識 已經說過JSP的本質,並明白了其運行的流程,容器會幫我們將JSP翻譯成為Java類,其中會有一些“固定”代碼,我們還是先看其核心方法:
可以看到,在方法的開頭中定義了一系列變量,在 try catch 塊中對變量進行了賦值。根據容器翻譯JSP文件的流程我們知道,我們自定義的Java代碼都是加載在“固定”代碼之後,也就是變量賦值之後,所以我們完全可以使用該方法體中內部定義的變量,以及方法的參數,並且可以順利執行。
於是我們常用的JSP內置對象就這麽有了:
註:在某個頁面拋出異常時(需頁面定義 errorPage="xxx.jsp"),將轉發至JSP錯誤頁面。提供exception對象是為了在JSP中進行處理,只有在錯誤頁面中才可以使用該對象。所以如果是作為錯誤頁面則必須定義 <%@page isErrorPage="true" %>
那麽內置對象的使用也很簡單,直接在JSP頁面的<% %>中嵌入即可,如 <%=request.getParameter("title)%>
至於內置對象的作用域,從他們的類型來說,已經不言而喻了,詳情可以參考Servlet部分的作用域知識點。
1、內置對象的來歷
JSP是由一些內置對象的,即不需要定義,也不需要我們主動創建,就可以直接使用的對象。當然,其對象名稱也是固定的,無法修改,我們可以直接調用其相關方法。在 [01] JSP的基本認識 已經說過JSP的本質,並明白了其運行的流程,容器會幫我們將JSP翻譯成為Java類,其中會有一些“固定”代碼,我們還是先看其核心方法:
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException
{PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
JspWriter _jspx_out = null;
PageContext _jspx_page_context = null;
- try {
response.setContentType("text/html"
);pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;
//我們自定義的Java代碼會被翻譯到這個位置
} catch (Throwable t) {
if (!(t instanceof SkipPageException)) {
out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
try {
out.clearBuffer();
} catch (java.io.IOException e) {
}
if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
}
} finally {
_jspxFactory.releasePageContext(_jspx_page_context);
}
}
可以看到,在方法的開頭中定義了一系列變量,在 try catch 塊中對變量進行了賦值。根據容器翻譯JSP文件的流程我們知道,我們自定義的Java代碼都是加載在“固定”代碼之後,也就是變量賦值之後,所以我們完全可以使用該方法體中內部定義的變量,以及方法的參數,並且可以順利執行。
於是我們常用的JSP內置對象就這麽有了:
類型 | 變量名 | 備註 |
HttpServletRequest | request | |
HttpServletResponse | response | |
PageContext | pageContext | JSP上下文對象,可以由此獲取其他內置對象 |
HttpSession | session | |
ServletContext | application | |
ServletConfig | config | |
JspWriter | out | 可以像客戶端輸出內容,然而<%= %>更便捷 |
Object | page | page = this 指翻譯後當前類的對象,很少使用 |
Throwable | exception | 錯誤頁面才可使用 |
註:在某個頁面拋出異常時(需頁面定義 errorPage="xxx.jsp"),將轉發至JSP錯誤頁面。提供exception對象是為了在JSP中進行處理,只有在錯誤頁面中才可以使用該對象。所以如果是作為錯誤頁面則必須定義 <%@page isErrorPage="true" %>
那麽內置對象的使用也很簡單,直接在JSP頁面的<% %>中嵌入即可,如 <%=request.getParameter("title)%>
至於內置對象的作用域,從他們的類型來說,已經不言而喻了,詳情可以參考Servlet部分的作用域知識點。
[02] JSP內置對象