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"屬性即可