1. 程式人生 > >JSP基本功 pageContext物件page,request,session,application四個域物件的使用及區別JSP執行原理和九大隱式物件及下載檔案、訪問次數的程式碼總結出el表示式簡單

JSP基本功 pageContext物件page,request,session,application四個域物件的使用及區別JSP執行原理和九大隱式物件及下載檔案、訪問次數的程式碼總結出el表示式簡單

pageContext物件

    pageContext物件是JSP技術中最重要的一個物件,它代表JSP頁面的執行環境,這個物件不僅封裝了對其它8大隱式物件的引用,它自身還是一個域物件,可以用來儲存資料。並且,這個物件還封裝了web開發中經常涉及到的一些常用操作,例如引入和跳轉其它資源、檢索其它域物件中的屬性等。

通過pageContext獲得其他物件

    getException方法返回exception隱式物件

    getPage方法返回page隱式物件

    getRequest方法返回request隱式物件

    getResponse方法返回response隱式物件

    getServletConfig方法返回config隱式物件

    getServletContext方法返回application隱式物件

    getSession方法返回session隱式物件

    getOut方法返回out隱式物件

    pageContext封裝其它8大內建物件的意義,思考:如果在程式設計過程中,把pageContext物件傳遞給一個普通java物件,那麼這個java物件將具有什麼功能? 

pageContext作為域物件

pageContext物件的方法

    public void setAttribute(java.lang.String name,java.lang.Object value)

    public java.lang.Object getAttribute(java.lang.String name)

    public void removeAttribute(java.lang.String name)

pageContext物件中還封裝了訪問其它域的方法

    public java.lang.Object getAttribute(java.lang.String name,int scope)

    public void setAttribute(java.lang.String name, java.lang.Object value,int scope)

    public void removeAttribute(java.lang.String name,int scope)

代表各個域的常量

    PageContext.APPLICATION_SCOPE

    PageContext.SESSION_SCOPE

    PageContext.REQUEST_SCOPE

    PageContext.PAGE_SCOPE

findAttribute方法    (*重點,查詢各個域中的屬性)

引入和跳轉到其他資源

    PageContext類中定義了一個forward方法和兩個include方法來分別簡化和替代RequestDispatcher.forward方法和include方法。

方法接收的資源如果以“/”開頭, “/”代表當前web應用。

JSP標籤

    JSP標籤也稱之為Jsp Action(JSP動作)元素,它用於在Jsp頁面中提供業務邏輯功能,避免在JSP頁面中直接編寫java程式碼,造成jsp頁面難以維護。

JSP常用標籤

1、<jsp:include>標籤 

<jsp:include>標籤用於把另外一個資源的輸出內容插入進當前JSP頁面的輸出內容之中,這種在JSP頁面執行時的引入方式稱之為動態引入。

語法:

       <jsp:include page="relativeURL | <%=expression%>" flush="true|false" />

page屬性用於指定被引入資源的相對路徑,它也可以通過執行一個表示式來獲得。

flush屬性指定在插入其他資源的輸出內容時,是否先將當前JSP頁面的已輸出的內容重新整理到客戶端。 

<jsp:include>與include指令的比較

    <jsp:include>標籤是動態引入, <jsp:include>標籤涉及到的2個JSP頁面會被翻譯成2個servlet,這2個servlet的內容在執行時進行合併。

而include指令是靜態引入,涉及到的2個JSP頁面會被翻譯成一個servlet,其內容是在原始檔級別進行合併。

不管是<jsp:include>標籤,還是include指令,它們都會把兩個JSP頁面內容合併輸出,所以這兩個頁面不要出現重複的HTML全域性架構標籤,否則輸出給客戶端的內容將會是一個格式混亂的HTML文件。

2、<jsp:forward>標籤 

 <jsp:forward>標籤用於把請求轉發給另外一個資源。

語法:

       <jsp:forward page="relativeURL | <%=expression%>" />

page屬性用於指定請求轉發到的資源的相對路徑,它也可以通過執行一個表示式來獲得。

3、<jsp:param>標籤 

當使用<jsp:include>和<jsp:forward>標籤引入或將請求轉發給其它資源時,可以使用<jsp:param>標籤向這個資源傳遞引數。

語法1:

       <jsp:include page="relativeURL | <%=expression%>">

              <jsp:param name="parameterName" value="parameterValue|<%= expression %>" />

       </jsp:include>

語法2:

       <jsp:forward page="relativeURL | <%=expression%>">

              <jsp:param name="parameterName" value="parameterValue|<%= expression %>" />

       </jsp:include>

<jsp:param>標籤的name屬性用於指定引數名,value屬性用於指定引數值。在<jsp:include>和<jsp:forward>標籤中可以使用多個<jsp:param>標籤來傳遞多個引數。

對映JSP

<servlet>

       <servlet-name>SimpleJspServlet</servlet-name>

       <jsp-file>/jsp/simple.jsp</jsp-file>

       <load-on-startup>1</load-on-startup >

</servlet>

       ……

<servlet-mapping>

       <servlet-name>SimpleJspServlet</servlet-name>

       <url-pattern>/xxx/yyy.html</url-pattern>

</servlet-mapping>

如何查詢JSP頁面中的錯誤

    JSP頁面中的JSP語法格式有問題,導致其不能被翻譯成Servlet原始檔,JSP引擎將提示這類錯誤發生在JSP頁面中的位置(行和列)以及相關資訊。

    JSP頁面中的JSP語法格式沒有問題,但被翻譯成的Servlet原始檔中出現了Java語法問題,導致JSP頁面翻譯成的Servlet原始檔不能通過編譯,JSP引擎也將提示這類錯誤發生在JSP頁面中的位置(行和列)以及相關資訊。

    JSP頁面翻譯成的Servlet程式在執行時出現異常,這與普通Java程式的執行時錯誤完全一樣,Java虛擬機器將提示錯誤發生在Servlet原始檔中的位置(行和列)以及相關資訊。