JSP九大內置對象和四個作用域

JSP九大內置對象和四個作用域


  1.   

現在我們先來說一下四個作用域,以便描述各大對象都分屬於什麼作用域,下面我們就通過一張簡單的表格來看看各大作用域的信息共享範圍:

    第一個作用域是page,他只在當前頁面有效,也就是用戶請求的頁面有效,噹噹前頁面關閉或轉到其他頁面時,page對象將在響應回饋給客戶端後釋放。

    第二個作用域是request,他在當前請求中有效,request可以通過setAttribute()方法實現頁面中的信息傳遞,也可以通過forward()方法進行頁面間的跳轉,需要注意的是request是轉發不是重定向,轉發相對於瀏覽器來說是透明的,也就是無論頁面如何跳轉,地址欄上顯示的依舊是最初的地址。

    第三個作用域是session,他在當前回話中有效。當一個臺電腦上的同一瀏覽器對服務器進行多次訪問時,在這多次訪問之間傳遞的信息就是session作用域的範圍。它從瀏覽器發出第一個HTTP請求即可認爲會話開始,但是會話結束的時間是不確定的,因爲在瀏覽器關閉時並不會通知服務器,一般Tomcat設置的默認時間爲120分鐘,也可以通過setMaxInactiveInterval(int)方法進行設置,或是通過invalidate()方法強制結束當前會話。

    第四個作用域是application,他在所有的應用程序中都有效,也就是當服務器開始到服務器結束這段時間,application作用域中存儲的數據都是有效的,同樣可以通過setAttribute賦值和getAttribute取值。

    好了,相信現在大家已經對四個作用域有了一定的瞭解,下面我們來說一下九大內置對象。

內置對象一(out):

    out 對象用於在Web瀏覽器內輸出信息,並且管理應用服務器上的輸出緩衝區。在使用 out 對象輸出數據時,可以對數據緩衝區進行操作,及時清除緩衝區中的殘餘數據,爲其他的輸出讓出緩衝空間。待數據輸出完畢後,要及時關閉輸出流。其最常用的方法爲print,可在頁面中顯示字符串信息。out的作用域爲page:

<%out.print("Hello"); %>

 

內置對象二(request):

    request 對象是 javax.servlet.httpServletRequest類型的對象。 該對象代表了客戶端的請求信息,主要用於接受通過HTTP協議傳送到服務器的數據。(包括頭信息、系統信息、請求方式以及請求參數等)。request對象的作用域爲一次請求(也就是request作用域)。request的常用方法有getParameter(String name)根據表單組件名稱獲取頁面提交數據,getParameterValues(String name)獲取一組以相同名稱命名的表單組件提交的數據,setCharacterEncoding(String charset)在調用getParameter()方法前進行設定,用於解決中文亂碼,getRequestDispatcher(String path)返回一個javax.servlet.RequestDispatcher對象,該對象的forward()方法用於轉發請求:

  1. <%  
  2.   Object obj = new Object();  
  3.       request.getParameter("uname");  
  4.       request.getParameterValues("rid");  
  5.       request.setCharacterEncoding("UTF-8");  
  6.       request.getRequestDispatcher("目標頁面").forward(request,response);  
  7.   %>  
 <%
   Object obj = new Object();
       request.getParameter("uname");
       request.getParameterValues("rid");
       request.setCharacterEncoding("UTF-8");
       request.getRequestDispatcher("目標頁面").forward(request,response);
   %>


 

內置對象三(response):

    response 代表的是對客戶端的響應,主要是將JSP容器處理過的對象傳回到客戶端。response對象也具有作用域,它只在JSP頁面內有效。response的常用方法有addCookie(Cookie cookie)向客戶端添加cookie,serContentType(String type)設置HTTP響應的contentType類型,setCharacterEncoding(String charset)設置響應所採用的字符編碼類型,sendRedirect(String location)將請求重新定位到一個新的地址上,這是地址欄上的地址會改變:

  1. <%  
  2.   response.addCookie(cokkie);  
  3.   response.setContentType("type");  
  4.   response.setCharacterEncoding("utf-8");  
  5.   response.sendRedirect("重新定位的頁面");  
  6.   %>  
 <%
   response.addCookie(cokkie);
   response.setContentType("type");
   response.setCharacterEncoding("utf-8");
   response.sendRedirect("重新定位的頁面");
   %>


內置對象四(session):

    session 對象是由服務器自動創建的與用戶請求相關的對象。服務器爲每個用戶都生成一個session對象,用於保存該用戶的信息,跟蹤用戶的操作狀態。session對象內部使用Map類來保存數據,因此保存數據的格式爲 “Key/value”。 session對象的value可以使用對象類型。session的常用方法有setAttribute(String key,Object value)以key/value的形式將對象保存到session中,getAttribute(String key)通過key值獲取session中保存的value,invalidate()強制session對象失效,getId()獲取sessionid,setMaxInactiveInterval(int interval)設置session的非活動時間,getMaxInactiveInterval()獲取session的有效非活動時間,removeAttribute(String key)刪除session中對應key的value值:

  1. <%  
  2.    Object obj = new Object();  
  3.    session.setAttribute("key",obj);  
  4.    session.getAttribute("key");  
  5.    session.setMaxInactiveInterval(100);  
  6.    session.getMaxInactiveInterval();  
  7.    session.getId();  
  8.    session.removeAttribute("key");  
  9.    session.invalidate();  
  10.    %>  
<%
   Object obj = new Object();
   session.setAttribute("key",obj);
   session.getAttribute("key");
   session.setMaxInactiveInterval(100);
   session.getMaxInactiveInterval();
   session.getId();
   session.removeAttribute("key");
   session.invalidate();
   %>


內置對象五(application):

    application 對象可將信息保存在服務器中,直到服務器關閉,否則application對象中保存的信息會在整個應用中都有效。與session對象相比,application對象生命週期更長,類似於系統的“全局變量”。application常用方法有setAttribute(String key,Object value)以key/value的形式將對象存儲到application中,getAttribute(String key)通過key獲取application中存儲的對象,getRealPath(String path)返回相對路徑的真實路徑:

  1. <%  
  2.  Object obj = new Object();  
  3.  application.setAttribute("key",obj);  
  4.  application.getAttribute("key");  
  5.  application.getRealPath("路徑名");  
  6.  %>  
  <%
   Object obj = new Object();
   application.setAttribute("key",obj);
   application.getAttribute("key");
   application.getRealPath("路徑名");
   %>


內置對象六(pageContext):

    pageContext 對象的作用是取得任何範圍的參數,通過它可以獲取 JSP頁面的out、request、reponse、session、application 等對象。pageContext對象的創建和初始化都是由容器來完成的,在JSP頁面中可以直接使用 pageContext對象。pageContext的常用方法有getRequest()獲取request對象,getResponse()獲取response對象,getSession()獲得session對象,getOut()獲取out對象,setAttribute(String key,Object value)保存屬性,getAttribute(String key)獲取屬性,include("url")請求指定的資源,並且將目標資源的響應結果包含在調用頁面的響應中:

 

  1. <%  
  2.    Object obj = new Object();  
  3.    pageContext.getRequest();  
  4.    pageContext.getResponse();  
  5.    pageContext.getSession();  
  6.    pageContext.getOut();  
  7.    pageContext.setAttribute("key",obj);  
  8.    pageContext.getAttribute("key");  
  9.    pageContext.include("資源地址");  
  10.    %>  
<%
   Object obj = new Object();
   pageContext.getRequest();
   pageContext.getResponse();
   pageContext.getSession();
   pageContext.getOut();
   pageContext.setAttribute("key",obj);
   pageContext.getAttribute("key");
   pageContext.include("資源地址");
   %>

內置對象七(page):

    page 對象代表JSP本身,只有在JSP頁面內纔是合法的。 page隱含對象本質上包含當前 Servlet接口引用的變量,類似於Java編程中的 this 指針。

內置對象八(config): 

    config 對象的主要作用是取得服務器的配置信息。通過 pageConext對象的 getServletConfig() 方法可以獲取一個config對象。當一個Servlet 初始化時,容器把某些信息通過 config對象傳遞給這個 Servlet。 開發者可以在web.xml 文件中爲應用程序環境中的Servlet程序和JSP頁面提供初始化參數。

內置對象九(exception):

    exception 對象的作用是顯示異常信息,只有在包含 isErrorPage="true" 的頁面中纔可以被使用,在一般的JSP頁面中使用該對象將無法編譯JSP文件。excepation對象和Java的所有對象一樣,都具有系統提供的繼承結構。exception 對象幾乎定義了所有異常情況。在Java程序中,可以使用try/catch關鍵字來處理異常情況; 如果在JSP頁面中出現沒有捕獲到的異常,就會生成 exception 對象,並把 exception 對象傳送到在page指令中設定的錯誤頁面中,然後在錯誤頁面中處理相應的 exception 對象。

    因爲後三個對象很少在JSP頁面中使用,所以在這裏不過多介紹。

0
0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章