1. 程式人生 > >JSP(Java Server Page)九大內置對象

JSP(Java Server Page)九大內置對象

proto ram eth 共享 getc response tin notifyall sage

× Web程序的請求相應模式(請求[request]、響應[response])

× form method="get"和method="post"提交方式的區別
                                                         
 1.get:以明文形式通過url進行參數的傳遞,數據能在url獲取,提交的數據最多不超過2KB,安全性低但效率比post高。
    適用於提交數據量不大,安全性不高的數據。eg:搜索、查詢等                      

 2.post:將用戶提交的信息封裝在HTML HEAD內。                              
    適用提交數據量大,安全性高的用戶信息。eg:註冊、修改、上傳                    
                                                         

×請求轉發與請求重定向的區別

操作名 行為 方法 描述
請求重定向 客戶端行為 response.sendRedirect("url path");
相當於兩次請求,前一次的請求對象不會被保存,且url地址會發生變化
請求轉發 服務端行為 request.getRequestDispatcher("urlpath").forward(request,response); 一次請求,轉發後請求對象會被保存,地址欄不會變化

通俗易懂點講:


  重定向:這事不歸我管,你自己走去XXX弄   (客戶端行為)
   轉發:這事不歸我管,但我能幫你轉交給XXX(服務端行為)

九大內置對象(out、request、response、session、application、page、pageContext、exception)

1.out對象(JspWriter類的實例,向客戶端[瀏覽器]輸出內容常用的對象)

  常用方法:

  1. void println(); 向客戶端打印字符串。

  2. void clear(); 清除緩存區的內容,如果在flush之後調用會拋出異常。

  3. void clearBuffer(); 清除緩沖區的內容,如果在flush之後調用不會拋出異常。

  4. void flush(); 將緩沖區內容輸出到客戶端。

  5. int getBufferSize(); 返回緩沖區以字節數的大小,若不設緩沖區則為0。

  6. int getRemaining() 返回緩沖區剩余可用空間大小。

  7. boolean isAutoFlush(); 當緩沖區滿時,是否自動清空,若否,則拋出異常。

  8. void close(); 關閉輸出流。

2.request對象 |—1.HttpServletRequest的實例對象;
          |—2.客戶端的請求信息被封裝到該對象中,通過該對象獲取信息,並且做出響應;
          |—3.該對象具有請求域,即在完成用戶請求之前,該對象一直有效;

  常用方法:

  1. String getParameter(String param); 返回指定參數param的參數值。

  2. String[] getParameterValues(String param); 返回包含參數param的所有參數值的數組。

  3. void setAttribute(String param,Object obj); 將obj對象以param指明保存到request對象中。

  4. Object getAttribute(String param); 返回指定參數名的屬性值。

  5. String getContextType(); 得到請求體的MIME類型

  6. String getProtocol(); 返回請求體的協議類型以及版本號

  7. String getServerName(); 返回接收請求體的服務器主機名

  8. int getServerPort(); 返回接收請求體的服務器的端口號

  9. String getCharacterEncoding(); 返回字符集編碼

  10. void setCharacterEncoding(); 設置字符集編碼

  11. int getContentLength(); 以字節數返回請求體的長度

  12. String getRemoteAddr(); 返回發送該請求的客戶端IP地址

  13. String getRealAddr(); 返回虛擬路徑的真實地址

  14. String getContextPath(); 返回上下文路徑(項目名)

 3.response對象 |—1.HttpServletResponse的實例對象;
            |—2.response對象包含了響應客戶端請求的有關信息,但在JSP中很少直接使用它;
            |—3.該對象具有請求域,即訪問一個頁面時,該頁面內的response對象只能對這次訪問有效,其它頁面的response對象對當前頁面無效;

  常用方法:

  1. String getCharacterEncoding(); 返回響應使用的字符編碼
  2. void setContentType(String type); 設置響應的MIME類型
  3. PrintWriter getWriter(); 返回可以向客戶端輸出字符的一個對象
    註意:PrintWriter與內置對象out的區別
  4. sendRedirect(java.lang.String location); 重定向,重新定向客戶端請求。

 4.session對象 |—1.HttpSession的實例(表示客戶端與服務器的一次會話);
          |—2.session是指用戶瀏覽網站時,從進入網站開始便會產生session,直到瀏覽器關閉時,session也便隨之銷毀;
          |—3.session實際上是一個特定的時間觀念;

  常用方法:

  1. long getCreationTime(); 返回session創建時的時間(單位 毫秒)
  2. String getId(); 返回session的ID(ID為JSP引擎設置)
  3. Object setAttribute(String name,Object obj); 使用指定名稱將對象捆綁在此次會話中(設置自定義屬性[name]、屬性值[obj])
  4. Object getAttribute(String name); 返回此次會話中指定屬性名的屬性值,若不存在,返回null
  5. String[] getValueNames(); 返回一個包含此session中所有可用屬性的數組
  6. int getMaxInactiveInterval; 返回該session的最大期限[單位 秒](若兩次請求間隔超過期限時間,則該session將被銷毀)
  7. voidsetMaxInactiveInterval(int second);設置session的最大期限[單位 秒]

  × session的生命周期

    『 1. 創建 - 當瀏覽器登錄頁面時便創建session

      2. 活動

      3. 銷毀 - 方式一:session.invalidate();

         - 方式二:session超出最大期限 --- Tomcat默認期限為30分鐘
         設置最大期限:
             1) 調用方法[setMaxInactiveInterval]
             2) 在web.xml配置 [ 單位 分鐘]
              <session-config>
                <session-timeout>10</session-timeout>
              </session-config>

         - 方式三:服務器重啟

      註意:當關閉該session相關的所有頁面時,再次打開頁面將會創建新的session

 5.Application對象 |—1.ServletContext的實例(實現用戶間數據的共享,可存放全局變量);
              (說白了就是遊走於整個web應用的對象撒~)
             |—2.application對象隨著服務器的啟動而產生,隨著服務器的關閉而消亡;
             |—3.在任何地方對application對象操作,都會影響其他用戶的訪問;

  常用方法:

  1. void setAttribute(String name,Object obj); 設置自定義屬性[name]、屬性值[obj]
  2. Object getAttribute(String name); 返回指定屬性名的屬性值,若不存在,返回null
  3. Enumeration getAttributeNames(); 返回所有可用屬性名的枚舉
  4. String getServerInfo(); 返回JSP(servlet)引擎號以及版本號

 6.page對象(指JSP頁面本身)

  常用方法:

  1. class getClass(); 返回該Object的Class
  2. int hashCode(); 返回該Object的hash碼
  3. boolean equals(Object obj); 判斷該Object是否與指定的Object相等
  4. void copy(Object obj); 將該Object拷貝到指定的Object中
  5. Object clone(); 克隆該Object,返回新的Object
  6. String toString(); 將該Object對象轉換成String對象
  7. void notify(); 喚醒一個等待的線程
  8. void notifyAll(); 喚醒所有等待的線程
  9. void wait(int timeout); 使一個線程處於等待狀態,直到timeout結束或者被notify(喚醒)
  10. void wait(int timeout); 使一個線程處於等待狀態,直到被notify(喚醒)

 7.pageContext對象 |—1.pageContext的實例(對JSP頁面所有對象以及名稱空間的訪問);
              |—2.能獲取當前頁面的session、application;

  常用方法:

  1. JspWriter getOut(); 返回當前客戶端響應被使用的JspWriter流(out)
  2. HttpSession getSession(); 返回當前頁中的HttpSession對象(session)
  3. Object getPage(); 返回當前頁的Object對象(page)
  4. ServletRequest getRequest(); 返回當前頁面的ServletRequest對象(request)
  5. ServletResponse getResponse(); 返回當前頁面的ServletResponse對象(response)
  6. void setAttribute(String name,Object); 設置自定義屬性[name]、屬性值[obj]
  7. Object getAttribute(String name,int scope); 返回指定範圍內指定屬性名的屬性值,若不存在,返回null
  8. int getAttributeScope(String name); 返回某屬性的作用範圍
  9. void forward(String utlPath); 轉發到urlPath頁面
  10. void include(String utlPath); 當前位置包含另一個文件

 8.config對象(當servlet初始化時,JSP引擎向它傳遞信息,包括參數(形式以鍵值對呈現)以及服務器的有關信息
    說白了就是在serlvet初始化的時候將config以參數形式傳遞給servlet的構造方法

  常用方法:

  1. ServletContext getServletContext(); 返回含有服務器相關信息的SerlvetContext對象
  2. String getInitParamter(String name); 返回初始化參數的值
  3. Enumeration getInitParamterNames(); 返回Serlvet初始化所需所有參數的枚舉

 9.exception對象(異常對象,當一個頁面運行過程中發生異常,便會產生該對象)
    當一個JSP要應用該對象,則必須在page指令內將isErrorPage設為true,且在可能會發生錯誤的頁面的page指令中設置 errorPage="JspPageName" 來指定該頁面

  常用方法:

  1. String getMessage(); 返回描述異常的消息
  2. String toString(); 返回關於異常的簡短描述信息
  3. void printStackTrace(); 顯示異常以及其棧軌跡
  4. Throwable FillInStakTrace(); 重寫異常的執行棧軌跡

JSP(Java Server Page)九大內置對象