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);
%>