JSP
一、jsp是什麼
JSP全稱Java Server Pages,是一種動態網頁開發技術。它使用JSP標簽在HTML網頁中插入Java代碼。標簽通常以<%開頭以%>結束。
JSP是一種Java servlet,主要用於實現Java web應用程序的用戶界面部分。網頁開發者們通過結合HTML代碼、XHTML代碼、XML元素以及嵌入JSP操作和命令來編寫JSP。 二、jsp的運行原理:
每個JSP 頁面在第一次被訪問時, JSP 引擎將它翻譯成一個 Servlet 源程序, 接著再把這個 Servlet 源程序編譯成 Servlet 的 class 類文件. 然後再由WEB容器(Servlet引擎)像調用普通Servlet程序一樣的方式來裝載和解釋執行這個由JSP頁面翻譯成的Servlet程序。
三、jsp的隱含變量
沒有聲明就可以使用的對象. JSP頁面一共有 9 個隱含對象. 使用 <% %> 編寫的代碼在此位置. 可以用到 request, response, pageContext, session application, config, out, page 這 8 個隱含對象. (實際上還可以使用一個叫 exception 的隱含對象)
①. request: HttpServletRequest 的一個對象. *
②. response: HttpServletResponse 的一個對象(在 JSP 頁面中幾乎不會調用 response 的任何方法.)
③. pageContext: 頁面的上下文, 是 PageContext 的一個對象. 可以從該對象中獲取到其他 8 個隱含對象. 也可以從中獲取到當前 頁面的其他信息. (學習自定義標簽時使用它) ④. session: 代表浏覽器和服務器的一次會話, 是 HttpSession 的一個對象.
⑤. application: 代表當前 WEB 應用. 是 ServletContext 對象. *
⑥. config: 當前 JSP 對應的 Servlet 的 ServletConfig 對象(幾乎不使用). 若需要訪問當前 JSP 配置的初始化參數,
⑦. out: JspWriter 對象. 調用 out.println() 可以直接把字符串打印到浏覽器上.
⑧. page: 指向當前 JSP 對應的 Servlet 對象的引用, 但為 Object 類型, 只能調用 Object 類的方法(幾乎不使用)
⑨. exception: 在聲明了 page 指令的 isErrorPage="true" 時, 才可以使用.
四、jsp指令
JSP指令(directive)是為JSP引擎而設計的, 它們並不直接產生任何可見輸出, 而只是告訴引擎如何處理JSP頁面中的其余部分。
在目前的JSP 2.0中,定義了page、include 和 taglib這三種指令 page指令用於定義JSP頁面的各種屬性, 無論page指令出現在JSP頁面中的什麼地方, 它作用的都是整個JSP頁面, 為了保持程序的可讀性和遵循良好的編程習慣, page指令最好是放在整個JSP頁面的起始位置。
①. import 屬性: 指定當前 JSP 頁面對應的 Servlet 需要導入的類. <%@page import="java.lang.*"%>
②. session 屬性: 取值為 true 或 false, 指定當前頁面的 session 隱藏變量是否可用, 也可以說訪問當前頁面時是否一定要生成 HttpSession對象. 服務器創建session是很耗資源的,所以在合適的地方不生成session也是一種優化。 <%@ 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 <%@ page contentType="application/vnd.ms-excel" %> 當前頁面的數據生成excel
⑤. pageEncoding: 指定當前 JSP 頁面的字符編碼. 通常情況下該值和 contentType 中的 charset 一致.
⑥. isELIgnored: 指定當前 JSP 頁面是否可以使用 EL 表達式. 通常取值為 false.