1.引言
為了方便程式員對常用對象的訪問,在JSP中規範了就中隱含對象,這些對象不用聲明可以直接拿來使用,在從JSP轉換為servlet時,他們會轉換為對應的servlet類型。
out:表示輸出,相當於servlet中的PrintWriter,對應的類型是javax.servlet.jsp.JspWriter
request:表示請求資訊,對用的類型是javax.servlet.http.HttpServletRequest
response:表示響應資訊,對應的類型是javax.servlet.http.HttpServletResponse
session:和servlet中的HttpSession一樣。對應的類型是javax.servlet.http.HttpSession
application:表示整個應用的上下文,和getServletConfig().getServletContext()等效。對應類型為javax..servlet.jsp.PageContext
exception:頁面異常,可以通過它獲得異常的資訊,對應的類型是java.lang.Throwable;
page:表示此JSP頁面,和java類中的this含義一樣
pageContext:表示此JSP的上下文,對應的類型是javax.servlet.jsp.PageContext
config:表示此JSP的servletconfig,對應的類型是javax.servlet.ServletConfig
其中pageContext, request, session, application為四個範圍對象。
2.request對象
這裡說說用他來傳值。
request.setAttribute("name","guo");
request.getRequestDispatcher("地址").forward(request,response);
在另外的頁子中可以接收:request.getAttribute("name");
3.session對象
session對象對應於HttpSession對象,在JSP中,page指令有一個屬性和session相關,這個屬性的名字也叫做session,倘若他的值被設定為false,
那麼在這個JSP頁面中就不能使用session。
注意這裡因為是內建對象,所以不用再產生,直接使用即可。
setAttribute(java.lang.String name, java.lang.Object value)
getAttribute(java.lang.String name) 傳回值為object
4.application
application對象時一個對web應用有效全域變數,他實現了ServletContext介面,注意他是全域的,也就是說所有的用戶端訪問的都是同一對象
setAttribute(java.lang.String name, java.lang.Object value)
getAttribute(java.lang.String name) 傳回值為object
5.四個範圍對象的總結
如果把變數放到pageContext裡,就說明它的範圍是page,它的有效範圍只在當前jsp頁面裡,從把變數放到pageContext開始,到jsp頁面結束,你都可以使用這個變數。
如果把變數放到request裡,就說明它的範圍是request,它的有效範圍是當前請求周期。 所謂請求周期,就是指從http請求發起,到伺服器處理結束,返迴響應的整個過程。在這個過程中可能使
用forward的方式跳轉了多個jsp頁面,在這些頁面裡你都可以使用這個變數。
如果把變數放到session裡,就說明它的範圍是session,它的有效範圍是當前會話。 所謂當前會話,就是指從使用者開啟瀏覽器開始,到使用者關閉瀏覽器這中間的過程。這個過程可能包含多個
請求響應。也就是說,只要使用者不關瀏覽器,伺服器就有辦法知道這些請求是一個人發起的,整個過程被稱為一個會話(session),而放到會話中的變數,就可以在當前會話的所有請求裡使用。
如果把變數放到application裡,就說明它的範圍是application,它的有效範圍是整個應用,整個應用是指從應用啟動,到應用結束,可以簡單理解為從伺服器啟動,到伺服器關閉 。
6.exception
exception對象是Throwable的執行個體,他表示的是JSP中的異常資訊,注意exception這個隱含對象並非在所有的JSP頁面中都可以用,如果要使用
這個對象,必須將此JSP的page指令的isErrorPage屬性值設定為true。
他的使用我舉個例子:
error.jsp中:
設定他為錯誤頁面:<%@ page isErrorPage="true" %>
jsp代碼:<%
Date date=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日HH時mm分ss秒");
String s=sdf.format(date);
out.println("您出錯了,請您檢查");
out.println("錯誤時間:"+s+"<br>");
out.println("錯誤類型:"+exception);
%>
web.xml檔案中:
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/error.jsp</location>>
</error-page>
通過上面的設定,整個網站的錯誤資訊都可以集中到error.jsp中取處理。自己試著弄一個錯誤頁面:index.jsp
<%
int a=3;
out.println(a/0);
%>