EL語言:
四大作用域對象的別名:
EL別名 JSP
requestScope request
sessionScope session
applicationScope application
pageScope page(當前JSP),不是當前作用域pageContext
EL語言的公式:
${作用域別名.關鍵字}:
tomcat編輯jsp頁面時,根據el表達式,調用響應的java代碼,從指定作用域中,讀取與當前關鍵字對應的內容,
並將這個內容進行響應的數據類型轉換,並輸出到jsp頁面上
${關鍵字}:
按以下順序尋找
1.pageContext尋找對應的關鍵字
2.request尋找對應的關鍵字
3.session尋找對應的關鍵字
4.application尋找對應的關鍵字
5.null
從作用域獲得自定義數據類型對象:
${作用域別名.關鍵字.屬性名}
${作用域別名.關鍵字["屬性名"]}
關係運算符號:
EL表達式 Java語言
eq ==
lt <
gt >
le <=
ge >=
通過EL中包含的內置對象,通知tomcat調用當前JSP頁面中九大內置對象。
1.param:通知tomcat獲得request作用域中的請求參數
Java:<%=request.getParameter("請求參數名")%>
EL:${param.請求參數名}
2. pageContext------->JSP中的pageContext
<!-- 獲得當前工程在服務器端的請求路徑 -->
<%=request.getContextPath()%>
${pageContext.request.contextPath}
JSTL:jsp strand tag lib [jsp 標準標籤庫]
JSTL分類:1. 核心標籤庫------------------core
2. 數據格式轉換標籤庫
3. 數據庫操作標籤庫
4. xml數據操作標籤庫
1.導入核心標籤庫配置文件(.tld)
<%@ taglib uri="標籤庫配置文件" prefix="標籤的前綴名"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
2.<c:set>:負責向四大作用域的數據設置和修改
<c:set scope="作用域名稱" var="關鍵字" value="值"/>
eg:<c:set scope="session" var="age" value="19"></c:set>
<c:out>:從四大作用域,讀取數據
<c:out value="EL表達式">
eg:<c:out value="${sessionScope.age}"></c:out>
<c:remove>:從四大作用域中,移除數據
作用域.removeAttribute(key)
<c:remove scope="作用域" var="關鍵字">
eg:<c:remove scope="session" var="age"/>
<c:catch>:負責進行異常撲捉.
<c:catch var="關鍵字">
<% int a = 5/0;%>
</c:catch>
異常產生時,catch標籤將異常信息與關鍵字關聯,形成一個鍵值對:關鍵字-------java.lang.NullPointerExceptino
catch標籤,將鍵值對保存到當前頁作用域中。
EL從當前頁作用域中,讀取異常信息:${pageScope.關鍵字}
<c:if>:用於進行if判斷,相當於if(){}
根據EL表達式的判斷結果,決定是否運行<if>內部的內容
<c:if test="EL表達式">
內容
</c:if>
<c:choose>-------------------------------多分支選擇結果
<c:when test="EL表達式">內容</c:when>----if
<c:when test="EL表達式">內容</c:when>----if
<c:otherwise>----------------------------else
內容
</c:choose>
<c:forEach>:循環操作:
1.指定循環次數,進行循環
<c:forEach var="循環變量名稱" begin="循環變量初始值" end="循環次數" step="每次循環後,循環變量自增的值">
eg:<c:forEach var="num" begin="1" end="5" step="1" >------從1開始循環五次每次自增1
**** 循環變量,被forEach標籤保存到當前頁作用域中
${pageScope.循環變量名稱}
</c:forEach>
2.循環遍歷集合(*******)
List:
<c:forEach items="EL表達式獲得集合對象(List)" var="關鍵字1" varStatus="關鍵字2">
${關鍵字1.屬性}
varStatus="關鍵字2":包含循環基本信息,比如本次循環是第幾次循環
${關鍵字2.count}: 當前循環次數
</c:forEach>
Map{key:value;key1:value1}
<c:forEach items="EL表達式獲得集合對象(Map)" var="關鍵字">
var="關鍵字":指向的map中一個鍵值對
讀取當前鍵值對中關鍵字:${關鍵字.key}
讀取當前鍵值對中value:${關鍵字.value}
</c:forEach>
自定義標籤開發:
一個JSTL標籤,就是一個java類
1.開發一個標籤實現類需要繼承javax.servlet.jsp.tagext.TagSupport
public class TextTag extends TagSupport {
@Override
/**
* 當tomcat調用一個標籤類時,一定要調用標籤類中doStartTag()
*/
public int doStartTag() throws JspException {
/**
* TagSupport提供pageContext屬性,
* 這個屬性的賦值,是由tomcat負責賦值。
* pageContext指向當前標籤類所在的jsp文件中的pageContext
*/
JspWriter out= super.pageContext.getOut();
try {
out.print("<input type='text' value='自定義文本框'/>");
} catch (IOException e) {
e.printStackTrace();
}
return super.doStartTag();
}
}
public class SelectTag extends TagSupport {
private String num; // 接收用戶輸入的option的個數
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
@Override
public int doStartTag() throws JspException {
JspWriter out= super.pageContext.getOut();
try{
out.print("<select>");
for(int i=1;i<=Integer.valueOf(num);i++){
out.print("<option >");
out.print(i);
out.print("</option>");
}
out.print("</select>");
}catch(Exception ex){}
return super.doStartTag();
}
}
2.開發一個標籤庫配置文件 (xxx.tld)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>自定義名稱</short-name>
<uri>靜態資源路徑/http://com.bjpowernode/669/tag</uri>
<!-- 配置標籤類的別名,用於在JSP頁面使用 -->
<tag>
<name>textTag</name>
<tag-class>com.bjpowernode.tag.TextTag</tag-class>
</tag>
<tag>
<name>selectTag</name>
<tag-class>com.bjpowernode.tag.SelectTag</tag-class>
<!-- 配置當前標籤類,在jsp中使用屬性 -->
<attribute>
<name>num</name>
<required>true</required>
</attribute>
</tag>
</taglib>
3.在JSP中應用
<%@ taglib uri="http://com.bjpowernode/669/tag" prefix="yz"%>
<html>
<yz:textTag></yz:textTag><br/>
<yz:selectTag num="5"></yz:selectTag>
</html>