1. 程式人生 > >重新學javaweb----九大隱式物件

重新學javaweb----九大隱式物件

JSP九大隱式物件:在翻譯過來的Servlet中Service方法自動幫我們前置定義的九個物件,可以在jsp頁面中直接使用

      page(代指該jsp翻譯過去的那個servlet)
      confing(ServletConfig)
      application(ServletContext 表示本web應用)
      response
      request
      session
      out(response.getWriter 但是有緩衝區  )
      exception
      pageContext  (其他八大隱式物件的入口 )

out

  相當於是response.getWriter得到PrintWriter
   out和response.getWriter獲取到的流不同在於,在於這個out物件本身就具有一個緩衝區.利用out寫出的內容,會先緩衝在out緩衝區中,直到out緩衝區滿了或者整個頁面結束時out緩衝區中的內容才會被寫出到response緩衝區中,最終可以帶到瀏覽器頁面進行展示
   page指令中的
    [buffer=”none | 8kb | sizekb” ]可以用來禁用out緩衝區或設定out緩衝區的大小,預設8kb
   [ autoFlush=”true | false”]用來設定當out緩衝區滿了以後如果在寫入資料時out如何處理,如果是true,則先將滿了的資料寫到response中後再接受新資料,如果是false,則滿了再寫入資料直接拋異常

  在jsp頁面中需要進行資料輸出時,不要自己獲取response.getWriter,而是要使用out進行輸出,防止即用out又用response.getWriter而導致輸出順序錯亂的問題

pageContext

  • (1)可以作為入口物件獲取其他八大隱式物件的引用

            getException方法返回exception隱式物件 
            getPage方法返回page隱式物件
            getRequest方法返回request隱式物件 
            getResponse方法返回response隱式物件 
            getServletConfig方法返回config隱式物件
            getServletContext方法返回application隱式物件
            getSession方法返回session隱式物件 
            getOut方法返回out隱式物件
    
  • (2)域物件,四大作用域的入口,可以操作四大作用域中的域屬性

作用範圍: 當前jsp頁面
生命週期: 當對jsp頁面的訪問開始時,建立代表當前jsp的PageContext,當對當前jsp頁面訪問結束時銷燬代表當前jsp的pageContext
作用:在當前jsp中共享資料


 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)

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

PageContext.APPLICATION_SCOPE
PageContext.SESSION_SCOPE
PageContext.REQUEST_SCOPE
PageContext.PAGE_SCOPE 

  findAttribute方法 – 搜尋四大作用域中的屬性,如果找到則返回該值,如果四大作用域中都找不到則返回一個null,搜尋的順序是從最小的域開始向最大的域開始尋找

(3)提供了請求轉發和請求包含的快捷方法
pageContext.include(“/index.jsp”);
pageContext.forward(“/index.jsp”);
3.零散知識
(1)jsp對映
< servlet>
 < servlet-name>index
 < jsp-file>/index.jsp
< /servlet>
< servlet-mapping>
 < servlet-name>index
 < url-pattern>/jsp/*
< /servlet-mapping>

(2)JSP最佳實踐

(3)域的總結
servletContext (application)
session (session)
request (request)
pageContext

如果一個數據只在當前jsp頁面使用,可以使用pageContext域儲存
如果一個數據,除了在當前Servlet中使用,還要在請求轉發時帶到其他Servlet處理或jsp中顯示,這個時候用request域
如果一個數據,除了現在我自己要用,過一會我自己還要用,存在session域
如果一個數據,除了現在我自己要用過一會其他人也要用,存在ServletContext域中