JSP:
1. 指令
* 作用:用於配置JSP頁面,導入資源文件
* 格式:
<%@ 指令名稱 屬性名1=屬性值1 屬性名2=屬性值2 ... %>
* 分類:
1. page : 配置JSP頁面的
* contentType:等同於response.setContentType()
1. 設置響應體的mime類型以及字符集
2. 設置當前jsp頁面的編碼(只能是高級的IDE才能生效,如果使用低級工具,則需要設置pageEncoding屬性設置當前頁面的字符集)
* import:導包
* errorPage:當前頁面發生異常後,會自動跳轉到指定的錯誤頁面
* isErrorPage:標識當前也是是否是錯誤頁面。
* true:是,可以使用內置對象exception
* false:否。默認值。不可以使用內置對象exception
2. include : 頁面包含的。導入頁面的資源文件
* <%@include file="top.jsp"%>
3. taglib : 導入資源
* <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
* prefix:前綴,自定義的
2. 註釋:
1. html註釋:
<!-- -->:只能註釋html代碼片段
2. jsp註釋:推薦使用
<%-- --%>:可以註釋所有
3. 內置對象
* 在jsp頁面中不需要創建,直接使用的對象
* 一共有9個:
變量名 真實類型 作用
* pageContext PageContext 當前頁面共享數據,還可以獲取其他八個內置對象
* request HttpServletRequest 一次請求訪問的多個資源(轉發)
* session HttpSession 一次會話的多個請求間
* application ServletContext 所有用戶間共享數據
* response HttpServletResponse 響應對象
* page Object 當前頁面(Servlet)的對象 this
* out JspWriter 輸出對象,數據輸出到頁面上
* config ServletConfig Servlet的配置對象
* exception Throwable 異常對象
EL表達式(編寫代碼直接輸出到頁面)
1. 概念:Expression Language 表達式語言
2. 作用:替換和簡化jsp頁面中java代碼的編寫
3. 語法:${表達式}
4. 注意:
* jsp默認支持el表達式的。如果要忽略el表達式
1. 設置jsp中page指令中:isELIgnored="true" 忽略當前jsp頁面中所有的el表達式
2. \${表達式} :忽略當前這個el表達式
5. 使用:
1. 運算:
* 運算符:
1. 算數運算符: + - * /(div) %(mod)
2. 比較運算符: > < >= <= == !=
3. 邏輯運算符: &&(and) ||(or) !(not)
4. 空運算符: empty
* 功能:用於判斷字符串、集合、數組對象是否爲null或者長度是否爲0
* ${empty list}:判斷字符串、集合、數組對象是否爲null或者長度爲0
* ${not empty str}:表示判斷字符串、集合、數組對象是否不爲null 並且 長度>0
2. 獲取值
1. el表達式只能從域對象中獲取值
2. 語法:
1. ${域名稱.鍵名}:從指定域中獲取指定鍵的值
* 域名稱:
1. pageScope --> pageContext
2. requestScope --> request
3. sessionScope --> session
4. applicationScope --> application(ServletContext)
* 舉例:在request域中存儲了name=張三
* 獲取:${requestScope.name}
2. ${鍵名}:表示依次從最小的域中查找是否有該鍵對應的值,直到找到爲止。
3. 獲取對象、List集合、Map集合的值
1. 對象:${域名稱.鍵名.屬性名}
* 本質上會去調用對象的getter方法
2. List集合:${域名稱.鍵名[索引]}
3. Map集合:
* ${域名稱.鍵名.key名稱}
* ${域名稱.鍵名["key名稱"]}
3. 隱式對象:
* el表達式中有11個隱式對象
* pageContext:
* 獲取jsp其他八個內置對象
* ${pageContext.request.contextPath}:動態獲取虛擬目錄
JSTL
1. 概念:JavaServer Pages Tag Library JSP標準標籤庫
* 是由Apache組織提供的開源的免費的jsp標籤 <標籤>
2. 作用:用於簡化和替換jsp頁面上的java代碼
3. 使用步驟:
1. 導入jstl相關jar包
2. 引入標籤庫:taglib指令: <%@ taglib %>
3. 使用標籤
4. 常用的JSTL標籤
1. if:相當於java代碼的if語句
1. 屬性:
* test 必須屬性,接受boolean表達式
* 如果表達式爲true,則顯示if標籤體內容,如果爲false,則不顯示標籤體內容
* 一般情況下,test屬性值會結合el表達式一起使用
2. 注意:
* c:if標籤沒有else情況,想要else情況,則可以在定義一個c:if標籤
3. 格式
<c:if test="判斷邏輯">
執行代碼
</c:if>
4.示例:
<c:if test="true">
hello,world
</c:if>
2. choose:相當於java代碼的switch語句
1. 使用choose標籤聲明 相當於switch聲明
2. 使用when標籤做判斷 相當於case
3. 使用otherwise標籤做其他情況的聲明 相當於default
4. 格式:
<c:choose>
<c:when test="判斷條件1">執行代碼1<br></c:when>
<c:when test="判斷條件2">執行代碼2</c:when>
<c:otherwise>執行代碼<br></c:otherwise>
</c:choose>
5.示例:
<c:choose>
<c:when test="number == 1">執行代碼<br></c:when>
<c:when test="number == 2">執行代碼</c:when>
<c:otherwise>執行代碼<br></c:otherwise>
</c:choose>
3. foreach:相當於java代碼的for語句
1. 完成重複的操作
for(int i = 0; i < 10; i ++){
}
* 屬性:
begin:開始值
end:結束值
var:臨時變量
step:步長
varStatus:循環狀態對象
index:容器中元素的索引,從0開始
count:循環次數,從1開始
1. 格式
<c:forEach begin="初始值" end="結束值" var="臨時變量" step="步長" varStatus="循環狀態對象別名s">
執行代碼
</c:forEach>
2. 示例
<c:forEach begin="1" end="10" var="i" step="2" varStatus="s">
${i}<br>
</c:forEach>
2. 遍歷容器
List<User> list;
for(User user : list){
}
* 屬性:
items:容器對象
var:容器中元素的臨時變量
varStatus:循環狀態對象
index:容器中元素的索引,從0開始
count:循環次數,從1開始
1.格式
<c:forEach items="${容器對象}" var="臨時變量" varStatus="循環狀態對象別名">
執行代碼
</c:forEach>
2.示例
<c:forEach items="${list}" var="str" varStatus="s">
${str}<br>
</c:forEach>