JavaWeb之JSP基礎小結,javawebjsp小結
1.概述
JSP檔案是通過三大指令,九大對象以及JSP運算式等與HTML語句結合形成的一個檔案,其本質為Servlet。簡單來說,即Java代碼+HTML語句。
2.運行原理
每個JSP頁面被訪問時,即被JSP引擎翻譯為一個Servlet來源程式,該來源程式再被編譯成Servlet的class類檔案。之後的執行流程與普通Servlet的執行一致。Servlet引擎將class類檔案裝載並翻譯執行。
3.九大對象
JSP有9個內建對象,不需要聲明就可以使用。
(1)request:實際就是HTTPServletRequest。
(2)response:實際就是HTTPServletResponse。
(3)pageContext:代表當前JSP頁面,幾乎包含了當前JSP頁面的所以資訊,也可以從該對象中擷取其它八個對象。
(4)session:代表瀏覽器和伺服器的一次會話,是HttpSession的一個對象。
(5)out:可以直接通過該對象的方法在頁面輸出文字資訊或者HTML代碼。
(6)application:代表當前WEB應用,是ServletContext對象。
(7)exception:在聲明了<%@page isErrorPage="true"%>後可以通過該對象輸出異常資訊。
(8)config:當前JSP對應的Servlet的ServletConfig對象,若要訪問當前JSP的配置參數,需要映射訪問才可以。
(9)page:指向當前Jsp對應的Servlet對象的引用 ,但是為object類型。
其中最為常用也最為重要的四個對象按範圍範圍如下:
pageContext:範圍為當前JSP頁面。通過<%@ include file=""%>引入的檔案中的變數等當前頁面也可以訪問。但是通過pageContext.include("file")引入檔案的變數和參數並不能直接在當前頁面使用和修改,該方法的實質是將file中的內容原封不動地添加在當前頁面,可以理解為將HTML頁面直接拼接在該位置。
request:作用範圍在請求轉寄的過程中一直有效。
session:範圍為瀏覽器和伺服器的一次會話。直觀表現在瀏覽器的一次開啟與關閉。應用案例如購物網站中購物車的實現。
application:當前應用裝載在伺服器中時有效。該應用從伺服器卸載或者重新裝載,以及伺服器關閉等都會導致該對象失效。應用案例如網站統計訪問人數。
和屬性相關的方法:
Object getAttribute(String name)擷取指定的屬性
Enumerration getAttributeNames()擷取所有屬性群組成的Enumeration對象
removeAttribute(String name)移除指定的屬性
setAttribute(String name, Object o)設定屬性
4.三大指令
(1)page:聲明頁面資訊或匯入內容
① 匯入檔案所需的jar包。外部添加的jar包一般存放在Web項目下 WEB-INF\lib、
<%@ page import="java.util.*"%>
② 關閉session,session預設開啟。
<%@ pagesession="false" %>
③ 當前頁面出錯則跳轉到"file"頁面。並且該跳轉方式為請求轉寄。
<%@ page errorPage="file"%>
④ 上文的"file"頁面,可以對分頁錯誤做處理或說明,可以配合exception對象使用。
<%@ page isErrorPage="true"%>
⑤ 當前JSP頁面的字元編碼(JSP檔案編碼)
<%@ page pageEncoding="utf-8"%>
⑥ 當前JSP頁面的響應類型(伺服器發送給瀏覽器的內容編碼)
<%@ page contentType="text/html; charset=utf-8"%>
⑦ 是否使用EL運算式,通常為false
<%@ page isELInored="false" %>
⑧ 指定JSP頁面的資訊,可以使用getServletInfo()方法擷取到該字串
<%@page info="this JSP info" %>
(2)include指令:將其它檔案包含進來與當前頁面進行合并。這類檔案通常包括文本、JSP或其他格式的檔案。
① 靜態引入:通知JSP引擎在翻譯JSP頁面時,將其他源檔案合并到當前JSP頁面轉換成的Servlet源檔案中。兩個源檔案合并為一個Servlet源檔案。"file"為相對路徑。
<%@ include page="file"%>
②動態引入:該句被執行時程式通過請求轉寄跳轉到"file",執行當中的內容之後再返回執行當前頁面的剩餘部分,實際是兩個Servlet源檔案。
<jsp:include page="file"></jsp:include>
(3) taglib: 能夠讓使用者根據需求自訂新的標籤,便於功能的實現,但因此也導致了代碼易讀性不高。
5.其它
(1) JSP運算式:可以直接將運算式中的內容顯示在瀏覽器中
<%= "Hello World!" %>
(2) 聲明函數
<%! pulic void function(){ out.println("Hello World!"); }%>
(3)注釋
<!-- 用戶端注釋,用戶端查看源可以看到 -->
<%-- 服務端注釋,用戶端查看不到 --%>