JSP系列五:JSP隱含對象

來源:互聯網
上載者:User

一,jsp隱含對象
 1,jsp隱含對象是JSP容器載入管理的一組類的執行個體.

  * jsp隱含對象在 _jspService方法 中定義,所以只能在運算式,scriptlet中使用這些對象。
 
 2,jsp隱含對象分為4類:

  * 輸入輸出對象 : HttpServletRequest的request, HttpServletResponse的response, JspWriter的out;
  * 範圍通訊對象 : HttpSession的session, ServletContext的application, PageContext的pageContext;
  * servlet對象 : Object的page, ServletConfig的config;
  * 錯誤對象 : Throwable的exception;

 3,servlet中的程式碼片段:
  ... ...
 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;

  ... ...

 }
二,輸入輸出對象:控制頁面的輸入輸出;

 1,HttpServletRequest request:用戶端請求資訊的封裝。
  * 範圍:
   一次請求到響應的階段。在這階段,對於轉寄和頁麵包含對象是共用的。
   請求對象對於每一次請求都重新建立。

 2, HttpServletResponse response : 伺服器響應資訊的封裝。
  * 用於設定響應前序,Cooike等響應資訊。

 3,JspWriter :以字元流形式輸出資料,是PrintWriter的緩衝版本,使用page指令的buffer屬性來設定緩衝區的大小。
  
  * 幾個和快取作業有關的方法:
   flush : 重新整理緩衝區;
   isAutoFlush:判斷out對象是否自動重新整理。設定自動重新整理在page指令的buffer屬性中。
   clear和clearBuffer:清除緩衝區中的內容.如果緩衝區被"重新整理",  前者拋出IO異常,後者不會。
   
  * servlet中的程式碼片段:
   out = pageContext.getOut();
         _jspx_out = out;
 
三,範圍通訊對象:JSP頁面和servlet的通訊資訊;

 1, PageContext pageContext :提供訪問其他隱含對象及其屬性和自身屬性的統一入口,來保持同一頁面不同組件之間的資料共用。

  * javax.servlet.jsp.PageContext;

  * 範圍:
   page的範圍。每個頁面和請求都有不同的PageContext對象。
   使用include指令包含頁面時,被包含檔案分享權限設定該pageContext 對象。jsp:include動作則不可以。
   對於這樣的屬性那就放到request中。
   servlet和jsp頁面不共用PageContext對象。

  * 訪問,設定和移除 其他隱含對象的屬性:scope為PageContext常量.
   getAttribute(string name, int scope);
   setAttribute(string name, int scope);
   removeAttribute(string name, int scope);
   removeAttribute(string name)方法將移除所有範圍類的指定屬性。

  * 搜尋所有範圍內指定的屬性,按page,request,session,application的順序來搜尋。
   findAttribute(string name);

  * servlet中的程式碼片段:
    ... ...
  private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();
    ... ...
  public void _jspService(HttpServletRequest request, HttpServletResponse response)
    ... ...
   pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true);
   PageContext _jspx_page_context = null;
         _jspx_page_context = pageContext;

   application = pageContext.getServletContext();
         config = pageContext.getServletConfig();
         session = pageContext.getSession();
         out = pageContext.getOut();
    ... ...
   _jspxFactory.releasePageContext(_jspx_page_context);
    ... ...
  }

 2,HttpSession session :封裝當前請求的會話資訊,實現會話跟蹤。

  * servlet中的程式碼片段:
   session = pageContext.getSession();

 2,ServletContext application

  * 範圍: web應用程式運行期間,所有頁面都共用該對象。
  * servlet中的程式碼片段:
    application = pageContext.getServletContext();

四,servlet對象:JSP頁面的環境資訊;

 1,Object  page :當前請求期間servlet對象的引用。

  * 可以使用page訪問產生的servlet的類成員和方法。page指令就是對該對象的應用。

  * 範圍:
   每次請求jsp頁面時建立,在請求轉寄或響應後被銷毀。
   這個範圍的對象只能在建立對象的頁面中訪問。
   pageContext對象屬於page範圍。
   
  * servlet中的程式碼片段:
   Object page = this;

 2,ServletConfig  config :servlet初始化資訊。

五,錯誤對象:處理頁面的錯誤;

  * java.lang.Throwable exception : 表示JSP頁面運行時產生的異常。
 
 ** 該對象只能在錯誤頁面(page指令中isErrorPage=true的頁面)中使用。
 
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.