JSP--常用標簽


JSTL簡介:

JSTL是Java中的一個定制標簽庫集

實現了JSP頁面中的代碼復用,提高效率

可讀性更強,方便前端查看與開發

環境搭建:

JSTL標簽和Servlet及JSP頁面有比較嚴格的版本對應關系

tomcat7.0+JSTL1.1.2

 JSTL的i基本配置:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

JSTL好幫手——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="&ltout標簽&gt" 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()

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM