JSP學習(三)

JSP指令(最好放在整個頁面的起始位置):

1、page:

<%page language="java" contentType="text/html" ;charset="UTF-8"  pageEncoding="UTF-8" isErrorPage="true"  errorPage="/error.jsp"  import="java.util.Date"%>

isELIgnored:指定當前JSP頁面是否可以使用EL表達式,通常取值爲false

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

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

import屬性:指定當前JSP頁面對應的Servlet需要導入的類

session屬性:取值爲true或false,制定當前頁面的session隱藏變量是否可用,也可以說訪問當前頁面時是否一定要生成HttpSession對象

errorPage:指定若當前頁面出現錯誤的實際響應頁面是什麼,其中“/”表示的是當前WEB應用的根目錄

<%@ page errorPage="error.jsp"%>

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

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

如何使客戶不能直接訪問一個頁面,對於Tomcat服務器而言,WEB-INF下的文件是不能通過在瀏覽器中直接輸入來訪問的

還可以在web.xml文件中配置錯誤頁面:

<error-page>

    <error-code>500</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>

2、include:

include指令用於通知JSP引擎在翻譯當前JSP頁面時將其他文件中的內容合併到當前JSP頁面轉化成的Servlet源文件中,這種在源文件級別進行引入的方式稱之爲靜態引入,當前JSP頁面與靜態引入的頁面緊密結合爲一個Servlet

file屬性的設置值必須使用相對路徑

如果以“/”開頭,表示相對於當前WEB應用程序的根目錄(注意不是站點根目錄),否則,表示相對於當前文件

靜態引入

3、taglib:

JSP標籤

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

動態引入:並不是像include指令生成一個Servlet源文件,而是生成兩個Servlet源文件,然後通過一個方法的方式把目標頁面包含進來

該標籤是在當前JSP頁面的執行期間插入被引入資源的輸出內容;被動態引入的資源必須是一個能獨立被WEB容器調用和執行的資源

include指令只能引入遵循JSP格式的文件,被引入文件與當前JSP文件共同合併翻譯成一個Servlet源文件

jsp:forward:

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

相當於

<%

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

%>

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

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

        <jsp:param value="abc" name="username"/>

</jsp:forward>

或者

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

         <jsp:param value="abc" name="username"/>

</jsp:include>

關於中文亂碼:

1、在JSP頁面上輸入中文,請求頁面後不出現亂碼:保證contentType="text/html;charset=UTF-8",pageEncoding="UTF-8" 

charset和pageEncoding的編碼一致,且都支持中文,通常建議取值爲UTF-8

還要確保瀏覽器顯示字符編碼和請求的JSP頁面的編碼一致

2、獲取中文參數值

對於POST請求,只要在獲取請求信息前,調用request.setCharacterEncoding("UTF-8")即可

對於GET請求,前面的方式對於GET請求無效,可以通過修改Tomcat的server.xml文件的方式

參照http://localhost:8080/docs/config/index.html文檔的useBodyEncodingForURI屬性

爲Connector節點添加useBodyEncodingForURI="true"屬性即可

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章