JavaWeb學習筆記 (八)JSP和JSTL
一.JSP
1.什麼是jsp
使用者角度:就是一個網頁()
程式設計師角度:就是一個java類,繼承了servlet
實質:html中內嵌了java程式碼
2.為什麼有jsp
html提供靜態的內容,不能滿足網頁動態的需求,
為了提升了使用者體驗,增加了客戶端和伺服器的互動性。
3.jsp三大編譯指令
在jsp編譯成servlet時起作用。
指令寫法<%@ 指令名字 %>
(1)page 指令
- language
表明jsp頁面可以使用的語言
- contentType
表明檔案是什麼型別以及用什麼編碼(是伺服器告訴瀏覽器
)
contentType=“text/html;charset=utf-8”
說明:MIME(Multipurpose Internet Mail Extensions) 多用途網際網路郵件擴充套件型別,用於設定某種副檔名檔案以特定的應用開啟==
如:text/html 表明這是一個文字檔案,用html開啟
video/mp4 表明這是一個視訊檔案,用mp4格式開啟
- pageEncoding
JSP內容的編碼
- extends
用於指定jsp轉換成java檔案後,繼承的父類,預設是httpJspBase,一般不修改
- import
用來導包
- session
用於表示在這個頁面能否直接使用session物件
只有兩個值,true或者false
ture代表可以直接在jsp中直接使用session,jsp轉換的java原始碼中有getSession()獲取的session物件的程式碼。
false則代表不能直接使用,jsp轉換的java程式碼中沒有獲取session物件的程式碼
- errorPage isErrorPage
errorPage 其值為轉向出錯頁面的路徑
當頁面出錯時,轉向指定出錯頁面isErrorPage 其值為true或者false
用來宣告這個頁面是否為出錯頁面
(2)include 指令
<%@ include file = “網頁路徑” %>
作用:包含另外一個jsp頁面
- 背後的細節
將被包含的頁面的所有內容都放到包含頁面的轉換成的java程式碼中。
(3)taglib
<%@ taglib prefix=" " uri=" "%>
uri: 標籤庫路徑
prefix: 標籤庫別名
4.jsp動作指令
執行時的動作
- <jsp: include page=" "></jsp:include>
包含指定的頁面, 這裡是動態包含,也就是不把包含頁面的所有元素拿過來,而是把它執行的結果拿過來。
- <jsp: forward page=" "></jsp:forward>
直接跳轉到指定頁面,原來頁面的內容都不顯示。等同與以下程式碼
request.getRequestDispatcher(“跳轉頁面路徑”).forward(request,response);
- <jsp:param value=" " name=" "></jsp:param>
在跳轉頁面的時候將引數攜帶過去,需要寫在跳轉頁面標籤的裡面。
在跳轉後頁面中,利用requset.getParameter()
來過去傳遞過來的引數。
5. jsp的九大內建物件
所謂的內建物件就是不用建立就可以使用
pageContext
request
session
application
以上四個是作用域物件
out
exception
page
config
response
- 作用域
表示這些物件可以存值,他們的存值範圍有限定。
都是通過setAttribute()存值 使用getAttribute()取值
- 四個作用域的區別
pageContext 型別:PageContext 作用域限制與本頁面,通過這個物件可以拿到其他八個物件。
request 型別:HttpRequest 作用域限制與一次請求
session 型別:HttpSession 作用域限制域一次會話
application 型別 :servletContext 整個工程都可以訪問,伺服器關閉後就不能使用了
- out物件 和 response物件
out 型別:JspWriter
response 型別:HttpServletResponse
輸出結果並沒有按照程式碼的順序顯示。
這是因為out物件最終還是依靠response物件來進行輸出。因此,response先輸出自己的內容,然後再輸出out物件要輸出的內容。
- exception物件 page物件 與config物件
exception 型別:Throwable
page 型別:Object 其實就是這個jsp頁面翻譯成java類的例項
config 型別:ServletConfig
二. EL表示式
為了簡化jsp中java的程式碼
- 寫法格式
${ 表示式 }
從指定域中取值
${ pageScope.name}
${ requestScope.name}
${sessionScope.name}
${applicationScope.name }
name為在域中儲存的key值
如果直接用${ name }
,按照作用域物件由作用域有小到大找name對應的值
- 取值方式
(1)如果值有下標,直接用 名字[]取值
(2)如果沒有下標,直接使用 . 的 方式來取值
- EL物件的11個內建物件
pageScope
requestScope
sessionScope
applicationScopeheader 請求頭資訊
headerValues
param 請求攜帶的引數
params
cookie
initparam
pageContext
三. JSTL
- 定義
jsp standard tag library jsp標準標籤庫
作用:簡化jsp程式碼的編寫,替換<% %>寫法,一般於EL表示式配合
- 用法
(1) 匯入jar檔案到工程webContent/Web-inf/lib jstl.jar standard.jar
(2) jsp頁面使用taglib指令,引入標籤庫
(3) 如果想支援 EL 表示式,那麼引入的 標籤庫必須選擇1.1版本
- 常用標籤
<c:set> </c:set>
<c:if > </c:if>
當滿足if裡面的語句時,將會執行這個標籤中的語句
<c:foreach begin=" " end=" "></c:foreach>