java web--jsp(4)

來源:互聯網
上載者:User

標籤:可讀性   響應   let   說明   local   session   mat   作用   jsp指令   

1. JSP 指令: JSP指令(directive)是為JSP引擎而設計的,
它們並不直接產生任何可見輸出, 而只是告訴引擎如何處理JSP頁面中的其餘部分。

2. 在目前的JSP 2.0中,定義了page、include 和 taglib這三種指令

3. page 指令:

1). page指令用於定義JSP頁面的各種屬性, 無論page指令出現在JSP頁面中的什麼地方,
它作用的都是整個JSP頁面, 為了保持程式的可讀性和遵循良好的編程習慣, page指令最好是放在整個JSP頁面的起始位置。

2). page 指令常用的屬性:

①. import 屬性: 指定當前 JSP 頁面對應的 Servlet 需要匯入的類.
<%@page import="java.text.DateFormat"%>

②. session 屬性: 取值為 true 或 false, 指定當前頁面的 session 隱藏變數是否可用, 也可以說訪問當前頁面時是否一定要產生 HttpSession
對象.
<%@ page session="false" %>

③. errorPage 和 isErrorPage:
> errorPage 指定若當前頁面出現錯誤的實際響應頁面時什麼. 其中 / 表示的是當前 WEB 應用的根目錄.
<%@ page errorPage="/error.jsp" %>

> 在響應 error.jsp 時, JSP 引擎使用的請求轉寄的方式.

> isErrorPage 指定當前頁面是否為錯誤處理頁面, 可以說明當前頁面是否可以使用 exception 隱藏變數. 需要注意的是: 若指定
isErrorPage="true", 並使用 exception 的方法了, 一般不建議能夠直接存取該頁面.

> 如何使客戶不能直接存取某一個頁面呢 ? 對於 Tomcat 伺服器而言, WEB-INF 下的檔案是不能通過在瀏覽器中直接輸入地址的方式
來訪問的. 但通過請求的轉寄是可以的!

> 還可以在 web.xml 檔案中配置錯誤頁面:

<error-page>
<!-- 指定出錯的代碼: 404 沒有指定的資源, 500 內部錯誤. -->
<error-code>404</error-code>
<!-- 指定響應頁面的位置 -->
<location>/WEB-INF/error.jsp</location>
</error-page>

<error-page>
<!-- 指定異常的類型 -->
<exception-type>java.lang.ArithmeticException</exception-type>
<location>/WEB-INF/error.jsp</location>
</error-page>

④. contentType: 指定當前 JSP 頁面的響應類型. 實際調用的是 response.setContentType("text/html; charset=UTF-8");
通常情況下, 對於 JSP 頁面而言其取值均為 text/html; charset=UTF-8. charset 指定返回的頁面的字元編碼是什麼. 通常取值為 UTF-8

⑤. pageEncoding: 指定當前 JSP 頁面的字元編碼. 通常情況下該值和 contentType 中的 charset 一致.

⑥. isELIgnored: 指定當前 JSP 頁面是否可以使用 EL 運算式. 通常取值為 false.

3. include 指令: <%@ include file="b.jsp" %>

1). include 指令用於通知 JSP 引擎在翻譯當前 JSP 頁面時將其他檔案中的內容合并進當前 JSP 頁面轉換成的 Servlet 源檔案中,
這種在源檔案層級進行引入的方式稱之為靜態引入, 當前JSP頁面與靜態引入的頁面緊密結合為一個Servlet。

2). file屬性的設定值必須使用相對路徑

3). 如果以 / 開頭,表示相對於當前WEB應用程式的根目錄(注意不是網站根目錄),否則,表示相對於當前檔案。

4. jsp:incluce 標籤:

1). <jsp:include page="b.jsp"></jsp:include>

2). 動態引入: 並不是像 include 指令產生一個 Servlet 源檔案, 而是產生兩個 Servlet 源檔案, 然後通過一個方法的方式把目標頁麵包含
進來.

org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "b.jsp", out, false);

5. jsp:forward:

1).

<jsp:forward page="/include/b.jsp"></jsp:forward>

相當於.

<%
request.getRequestDispatcher("/include/b.jsp").forward(request, response);
%>

2). 但使用 jsp:forward 可以使用 jsp:param 子標籤向 b.jsp 傳入一些參數. 同樣 jsp:include 也可以使用 jsp:param 子標籤.

<jsp:forward page="/include/b.jsp">
<jsp:param value="abcd" name="username"/>
</jsp:forward>

OR

<jsp:include page="/include/b.jsp">
<jsp:param value="abcd" name="username"/>
</jsp:include>

在 b.jsp 頁面可以通過 request.getParameter("username") 擷取到傳入的請求參數.

6. 關於中文亂碼:

1). 在 JSP 頁面上輸入中文, 請求頁面後不出現亂碼: 保證 contentType="text/html; charset=UTF-8",
pageEncoding="UTF-8" charset 和 pageEncoding 的編碼一致, 且都支援中文. 通常建議取值為UTF-8

還需保證瀏覽器的顯示的字元編碼也和請求的 JSP 頁面的編碼一致.

2). 擷取中文參數值: 預設參數在傳輸過程中使用的編碼為 ISO-8859-1

①. 對於 POST 請求: 只要在擷取請求資訊之前(在調用 request.getParameter 或者是 request.getReader 等),
調用 request.setCharacterEncoding("UTF-8") 即可.

②. 對於 GET 請求: 前面的方式對於 GET 無效. 可以通過修改 Tomcat 的 server.xml 檔案的方式.

參照 http://localhost:8989/docs/config/index.html 文檔的 useBodyEncodingForURI 屬性.
為 Connector 節點添加 useBodyEncodingForURI="true" 屬性即可.

<Connector connectionTimeout="20000" port="8989" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/>

java web--jsp(4)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.