1. 程式人生 > >JSP九個內置對象及指令、動作標簽

JSP九個內置對象及指令、動作標簽

nco 功能 word use idt ica throw 輸出流 his

一、JSP九大內置對象

(一)JSP中無需創建就可以使用的9個對象

輸入輸出對象

1.response(HttpServletResponse):處理JSP生成的響應,然後將響應結果發送給客戶端.是service方法的esponse參數。
2.out(JspWriter):表示輸出流,將作為請求的響應發送給客戶端.是PrintWriter的一個實例。

作用域對象

3.request(HttpServletRequest):表示客戶端的請求,包含了所有的請求信息,是service方法的resquest參數。
4.session(HttpSession):表示用戶的會話狀況,用此機制可以輕易的識別每一個用戶,能保存和 跟蹤用戶的會話狀態.是HttpSession的一個實例。
5.pageContext(PageContext):作用於此頁面,可以訪問頁面作用域中定義的所有隱式對象是PageContext的一個實例。
6.application(ServletContext):作用於整個應用程序.是ServletContext的一個實例。

Servlet對象

7.page:提供對網頁上定義的所有對象的訪問.是一個Object對象.是此Servlet的 一個引用。如Object page = this;
8.config(ServletConfig):存儲Servlet的一些初始信息是ServletConfig的一個實例。

異常對象
9.exception(Throwable):此對象負責處理程序執行過程中引發的異常.

(二)pageContext

  • 一個頂9個,
  • servlet中有三大域,而JSP中有四大域,它是最後一個域對象。
    • ServletContext:整個應用程序。
    • session:整個會話(一個會話中只有一個用戶)。
    • request:一個請求鏈。
    • pageContext:一個jsp頁面,這個域是當前jsp頁面和當前jsp頁面中使用的標簽之間共享數據。
      • 域對象。
      • 代理其他域:pageContext.setAttribute("xxx","XXX",PageContext.SESSION_SCOPE);
      • 全域查找:pageContext.findAttribute(“xxx”);從小到大,依賴查找。為了避免重名現象,命名時可采用如request_xxx;
      • 獲取其他8個內置對象:
        • JspWriter getOut(): 獲取out內置對象;
        • ServletConfig getServletConfig():獲取config內置對象
        • Object getPage():獲取page內置對象
        • ServletRequest getRequest():獲取request內置對象
        • ServletResponse getResponse():獲取response內置對象
        • HttpSession getSession():獲取session內置對象
        • ServletContext getServletContext():獲取application內置對象
        • Exception getException():獲取exception內置對象

二、JSP三大指令

  一個jsp頁面中,可以有0~N個指令的定義。

1、page:最復雜:<%@page language="java" info="xxx"......%>

  • pageEncoding和contentType:
    • pageEncoding:它指定當前jsp頁面的編碼,只要不說謊,就不會有亂碼。在服務器要把jsp編譯成.java時需要使用pageEncoding;
    • contentType:它表示添加一個響應頭:Content-Type;等同於response.setContentType("text/html;charset=utf-8");
    • 如果兩個屬性只提供一個,那麽另一個默認值為設置那一個。
    • 如果兩個屬性都沒有設置,那麽默認為iso
  • import:導包,可以出現多次
  • errorPage和isErrorPage
    • errorPage:當前頁面如果拋出異常,那麽要轉發到哪一個頁面,由errorPage來指定。
    • isErrorPage:它指定當前頁面是否為處理錯誤的頁面,但該屬性為true時,這個頁面會設置狀態碼為500,而且這個頁面可以使用9大內置對象中的exception。

在web.xml文件配置通用的錯誤頁面

 1     <error-page>
 2         <error-code>404</error-code>
 3         <location>/error/404.jsp</location>
 4     </error-page>
 5     <error-page>
 6         <error-code>500</error-code>
 7         <location>/error/500.jsp</location>
 8     </error-page>
 9     <error-page>
10         <exception-type>java.lang.RuntimeException</exception-type>
11         <location>/index.jsp</location>
12     </error-page> 
  • autoFlush和buffer
    • autoFlush:指定jsp的輸出流緩沖區滿時,是否自動刷新!默認為true,如果為false,那麽在緩沖區滿時拋出異常!
    • buffer:指定緩沖區大小,默認為8kb,通常不需要修改。
  • isELIgnored:是否忽略el表達式,默認值為false,不忽略,即支持。
  • 基本屬性:
    • language:指定當前jsp編譯後的語言類型,默認為java。
    • info:信息。
    • isThreadSafe:當前的jsp是否支持並發訪問。
    • session:當前頁面是否支持session,如果為false,那麽當前頁面就沒有session這個內置對象。
    • extends:讓jsp生成的servlet去繼承該屬性指定的類。

2、include:靜態包含

  • 與RequestDispatcher的include()方法的功能相似。
  • <%@include%>它是在jsp編譯成java文件時完成的,他們共同生成一個Java(就是一個servlet)文件,然後再生成一個class。
  • RequestDispatcher的include()的include()是一個方法,包含和被包含的是兩個servlet,即兩個.class。他們只是把響應的內容在運行時合並了。
  • 作用:把頁面分解了,使包含的方式中組合在一起,這樣一個頁面中不變的部分,就是一個獨立jsp,而我們只需要處理變化的頁面。

技術分享

3、taglib:導入標簽庫

  • 兩個屬性
    • prefix:指定標簽庫在本頁面中的前綴,由我們自己來起名稱。
    • uri:指定標簽庫的位置。
    • <%@taglib prefix="pre" uri="/struts-tags"%>前綴的用法<s:text>

三、JSP動作標簽

  這些jsp的動作標簽,與html提供的標簽有本質的區別。

  • 動作標簽是由Tomcat(服務器)來解釋執行,它與Java代碼一樣,都在服務器端執行的
  • html由瀏覽器來執行。
  • <jsp:forward>:轉發,它與RequestDispatcher的forward方法是一個樣的,一個是在Servlet中使用,一個是在jsp中使用。
  • <jsp:include>:包含,它與RequestDispatcher的include方法是一個樣的,一個是在Servlet中使用,一個是在jsp中使用。

技術分享

  • <jsp:param>:它用作為forward和include的子標簽,用來給轉發或包含的頁面傳遞參數。
1 <body>
2 <h1>a.jsp</h1>
3 <%-- 動態轉發 --%>
4 <jsp:forward page="b.jsp">
5 <jsp:param value="zhangsan" name="username"/>
6 <jsp:param value="zhangsan" name="password"/>
7 </jsp:forward>
8 </body>
1 <h1>b.jsp</h1>
2 <%
3     String username = request.getParameter("username");
4     String password = request.getParameter("password");
5     out.print(username+":"+password);
6 %>

JSP九個內置對象及指令、動作標簽