JSP九個內建對象及指令、動作標籤,jsp九個

來源:互聯網
上載者:User

JSP九個內建對象及指令、動作標籤,jsp九個

一、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 %>

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.