JSP--常用標籤
阿新 • • 發佈:2018-12-11
轉自:https://www.cnblogs.com/Nyan-Workflow-FC/p/6420852.html
JSTL簡介:
JSTL是Java中的一個定製標籤庫集
實現了JSP頁面中的程式碼複用,提高效率
可讀性更強,方便前端檢視與開發
環境搭建:
JSTL標籤和Servlet及JSP頁面有比較嚴格的版本對應關係
tomcat7.0+JSTL1.1.2
JSTL的基本配置:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
EL表示式
Expression Language,經常與JSTL配合使用
普通寫法:<%=session.getValue("name")%>
EL表示式:<c:out value="${sessionScop.name}"/>
.與[]通常是通用
除2種情況外:
包含特殊字元${user.first-name} ${user[“first-name”]}
通過變數動態取值:${user[param]} param(name|sex|…)
JSTL的四大分類以及JSTL函式
核心標籤
格式化標籤
SQL標籤
XML標籤
EL變數:
在JSP內建物件:Page,Request,Session,Application
EL自動型別轉換:
獲取文字框的輸入
String str_count = request.getParameter("count"); int count = Integer.parseInt(str_count);
EL自動轉換:${param.count+20}
EL隱式物件:
EL運算子:
表示式標籤:
- JSTL之out標籤:
<c:out value="歡迎您"></c:out> <%String str = "user"; request.setAttribute("name", str);%> <c:out value="${empty name}"></c:out> <!-- 當變數不存在時,通過default輸出值 --> <c:out value="${defalut }" default="error"></c:out><br> <!-- escapeXML設定成false,轉義生效 --> <c:out value="<out標籤>" escapeXml="false"></c:out>
- JSTL之set標籤:
存值到scope中
<c:set value="today" var="day" scope="session"></c:set>
<c:set var="age" scope="application">12</c:set>
存值到JavaBean中
<c:set target="${person }" property="name" value="nyan"></c:set>
<c:out value="${person.name }"></c:out>
- JSTL之remove標籤:只能remove某個變數,而不能remove一個物件
- JSTL之catch標籤:
<c:catch var="error">
<c:set target="${person }" property="id">1024</c:set>
</c:catch>
<c:out value="${error}"></c:out>
流程控制標籤:
- JSTL之if標籤:
test屬性用於存放判斷的條件,一般使用EL表示式來編寫
var指定名稱用來存放判斷的結果型別為true或false
scope用來存放var屬性存放的範圍
<form action="index.jsp" method="post">
<!-- 使用者輸入的資料存入到${param.score}變數中去 -->
<input type="text" name="score" value="${param.score }"/>
<input type="submit" value="submit"/>
</form>
<c:if test="${param.score>=90 }" var="result">
<c:out value="優秀"></c:out>
</c:if>
<c:out value="${result }"></c:out>
- JSTL之choose、when、otherwise
<c:choose>
<c:when test="${param.score>=90 && param.score<=100 }">
<c:out value="優秀"></c:out>
</c:when>
<c:when test="${param.score>=80 && param.score<90 }">
<c:out value="良好"></c:out>
</c:when>
<c:when test="${param.score>=70 && param.score<80 }">
<c:out value="一般"></c:out>
</c:when>
<c:when test="${param.score>=60 && param.score<70 }">
<c:out value="及格"></c:out>
</c:when>
<c:when test="${param.score<60 && param.score>0 }">
<c:out value="不及格"></c:out>
</c:when>
<c:otherwise>
<c:out value="您的輸入不合法"></c:out>
</c:otherwise>
</c:choose>
第二種用法:
只使用choose和when
- JSTL之forEach標籤:
根據迴圈條件遍歷集合中的元素
var 設定變數名用於儲存從集合取得的元素(必須無預設值)
items指定要遍歷的集合(必須無預設值)
begin、end用於指定遍歷的起始位置和終止位置‘
step指定迴圈的步長
varStatus通過index、count、first、last幾個狀態值,描述begin和end子集中的元素狀態
1、全部遍歷
<c:forEach var="儲存當前遍歷元素的變數" items="待遍歷集合">
</c:forEach>
<%
List<String> fruits = new ArrayList<String>();
fruits.add("apple");
fruits.add("orange");
fruits.add("pear");
fruits.add("watermelon");
fruits.add("banana");
request.setAttribute("fruits", fruits);
%>
<c:forEach var="fruit" items="${fruits }">
<c:out value="${fruit }"></c:out><br>
</c:forEach>
2、部分遍歷
<c:forEach var="fruit" items="${fruits }" begin="2" end="4">
<c:out value="${fruit }"></c:out><br>
</c:forEach>
<c:forEach var="fruit" items="${fruits }" varStatus="fru">
<c:out value="${fruit }"></c:out><br>
<c:out value="index屬性值:${fru.index }"></c:out><br>
<c:out value="first屬性值:${fru.first }"></c:out><br>
</c:forEach>
- JSTL之forTokens:
用於瀏覽器字串,並根據指定字串擷取
items指定被迭代的字串
delims指定使用的分隔符
var指定用來存放遍歷到的成員
<c:forTokens items="010-8809687879-142" delims="-" var="num">
<c:out value="${num }"></c:out>
</c:forTokens>
URL操作標籤:
- JSTL之import標籤
URL被匯入資源的URL路徑
context相同伺服器下其他的web工程,必須以“/”開頭
var以String型別存入被包含檔案的內容
Scope var變數的JSP範圍
charEncoding被匯入檔案的編碼格式
varReader以Reader型別儲存被包含的檔案內容
<!-- 匯入網路絕對路徑 -->
<c:catch var="error09">
<c:import url="http://www.imooc.com">
</c:import>
</c:catch> <!-- 匯入相對路徑 -->
<c:catch var="error08">
<c:import url="files/1.txt" charEncoding="gbk">
</c:import>
</c:catch>
- JSTL之redirect標籤:
<c:redirect url="firstDemo.jsp">
<!-- 傳遞引數 -->
<c:param name="username">lily</c:param>
<c:param name="password">passw0rd</c:param>
</c:redirect>
- JSTL之URL標籤
<!-- 動態生成URL -->
<c:if test="${1<3 }">
<c:set var="partURL">aa</c:set>
</c:if>
<c:url value="http://localhost:8081/${partURL }" var="newURL" scope="session"></c:url>
<a href="${newURL }">新的URL</a>
JSTL常用函式:
<c:out value="${fn:contains('nyan','a')}"></c:out>
fn:endsWith()
fn:indexOf()
fn:escapeXML()
fn:containsIgnoreCase()