JSP常用標簽


 

JSP常用標簽可以理解為JSTL

 

user:普通用戶

admin:站點管理員

 

 

 

JSTL1.1.2下載地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/

 

第一個JSTL小程序

 

<c:out>輸出標簽:是屬於JSTL核心標簽中的一個,所以要先導入核心標簽庫

 

 

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>Insert title here</title>
 9 </head>
10 <body>
11 <!-- 使用out標簽輸出常量 -->
12 <c:out value="this is our first JSTL demo"></c:out><br>
13 </body>
14 </html>

 

運行結果

 

 

 

value中的值可以輸出變量以及常量

常量:直接輸出

變量:EL表達式進行變量的獲取

普通的寫法:通過JSP內置的session對象去獲取name這個value

EL表達式寫法:從session的范圍中取出name的值

 

 

 

 

 

如果沒有直接做范圍的限定,它會按以下順序依次去找:從小到大的順序

如果四個范圍都沒有找到,說明頁面中沒有這個變量。沒有的話正常應該輸出null,但是EL變量做了優化,不會輸出null,它會直接輸出一個為空的字符串。

例:<c:out value = "${username}"></c:out>  如果四個范圍都沒有找到,說明頁面中沒有username這個變量

 

獲取用戶的輸入

如果想通過count進行運算的話,要轉換成Int值的類型

用於計算。要是沒進行字符串的轉換,計算結果只是字符串的拼接

 

 

 <%String username="zhangsan";request.setAttribute("username",username);%>
<c:out value="${empty username}"></c:out>

輸出結果為false

 <%String username="null";request.setAttribute("username",username);%> 為空
<c:out value="${empty username}"></c:out>

輸出結果為true

 <%String username="";request.setAttribute("username",username);%>  為空字符串
<c:out value="${empty username}"></c:out>

輸出結果為true

注意:如果沒有request.setAttribute("username",username);EL表達式取不到username的值

 

 

 

輸出變量首先要向某一個scope賦值,存儲變量值

1 <!-- 使用out標簽輸出變量 -->
2 <!-- 直接輸出變量 -->
3 <%session.setAttribute("name","Jessica");%>
4 <c:out value="${name}"></c:out><br>
5 <!-- 當變量不存在時,通過default屬性輸出默認值error -->
6 <c:out value="${name1}" default="error"></c:out><br>

 

<!-- 設置輸出轉義后的字符需要escapeXml屬性值設置成false -->
<c:out value="&ltout標簽&gt" escapeXml="false"></c:out><br

輸出結果

 

 

 

快捷鍵:Alt+↑  將選中的代碼塊上移

 1 package com.imooc.test;
 2 
 3 public class Person {
 4 
 5     private String name2;
 6     private String age2;
 7     private String address;
 8     public String getName2() {
 9         return name2;
10     }
11     public void setName2(String name2) {
12         this.name2 = name2;
13     }
14     public String getAge2() {
15         return age2;
16     }
17     public void setAge2(String age2) {
18         this.age2 = age2;
19     }
20     public String getAddress() {
21         return address;
22     }
23     public void setAddress(String address) {
24         this.address = address;
25     }
26     
27 }

 

將Person類實例化,實例化的變量名叫person

firstDemo.jsp

<jsp:useBean id="person" class="com.imooc.test.Person"></jsp:useBean>

 

 1 <!-- 存值到scope中 -->
 2 <c:set value="today" var="day" scope="session"></c:set>
 3 <c:out value="${day}"></c:out><br>
 4 
 5 <c:set var="age" scope="application">eleven</c:set>
 6 <c:out value="${age}"></c:out><br>
 7 
 8 <!-- 通過set標簽向person中賦值 -->
 9 <c:set target="${person}" property="name2" value="zhangsan"></c:set>
10 <c:out value="${person.name2}"></c:out>&nbsp;&nbsp;
11 <c:set target="${person}" property="age2" value="26"></c:set>
12 <c:out value="${person.age2}"></c:out>&nbsp;&nbsp;
13 <c:set target="${person}" property="address" value="北京市 朝陽區"></c:set>
14 <c:out value="${person.address}"></c:out>&nbsp;&nbsp;<br>
15 
16 <!-- value值可以寫在兩個標簽之間 -->
17 <c:set target="${person}" property="name2">zhangsan</c:set>
18 <c:out value="${person.name2}"></c:out>&nbsp;&nbsp;
19 <c:set target="${person}" property="age2">26</c:set>
20 <c:out value="${person.age2}"></c:out>&nbsp;&nbsp;
21 <c:set target="${person}" property="address">北京市 朝陽區</c:set>
22 <c:out value="${person.address}"></c:out>&nbsp;&nbsp;<br>

 

運行結果

 

 

1 <!-- remove標簽的用法 -->
2 <c:set var="lastName" value="Lily"></c:set>
3 <c:out value="${lastName}"></c:out>
4 <c:set var="firstName" value="Wang"></c:set>
5 <c:remove var="firstName"/>
6 <c:out value="${firstName}"></c:out><br>

 

注意:remove只能直接remove掉某一個變量,對象中的某一個屬性就不可以。

 

1 <!-- catch標簽的用法 -->
2 <c:catch var="error">
3     <c:set target="aa" property="bb">asasa</c:set>
4 </c:catch>
5 <c:out value="${error}"></c:out><br>

 

 

 

 1 <form action="firstDemo.jsp" method="post" >
 2 <!-- 通過表單接收用戶的輸入,表單中包含文本框,name:記錄用戶的成績,value:用戶的輸入,接收到用戶的輸入之后,把它直接存到我們param范圍內的score變量中去
 3 用戶點擊提交到firstDemo.jsp頁面,提交方式:post -->
 4     <input type="text" name="score" value="${param.score}"/>
 5     <input type="submit"/>
 6 </form>
 7 <!-- 優秀 score>=90 -->
 8 <c:if test="${param.score>=90}" var="result" scope="application">
 9     <c:out value="恭喜,您的成績是優秀!"></c:out>
10 </c:if>
11 <c:out value="${applicationScope.result}"></c:out>

 

通過表單接收用戶的輸入,表單中包含文本框,name:記錄用戶的成績,value:用戶的輸入,接收到用戶的輸入之后,把它直接存到我們param范圍內的score變量中去

用戶點擊提交到firstDemo.jsp頁面,提交方式:post

 

 

 

 1 <form action="firstDemo.jsp" method="post" >
 2     <input type="text" name="score" value="${param.score}"/>
 3     <input type="submit"/>
 4 </form>
 5 
 6 <!-- choose、when、otherwise -->
 7 <c:choose>
 8     <c:when test="${param.score>=90 && param.score<=100}">
 9         <c:out value="優秀"></c:out>
10     </c:when>
11     <c:when test="${param.score>=80 && param.score<90}">
12         <c:out value="良好"></c:out>
13     </c:when>
14     <c:when test="${param.score>=70 && param.score<80}">
15         <c:out value="中等"></c:out>
16     </c:when>
17     <c:when test="${param.score>=60 && param.score<70}">
18         <c:out value="及格"></c:out>
19     </c:when>
20     <c:when test="${param.score>=0 && param.score<60}">
21         <c:out value="不及格"></c:out>
22     </c:when>
23     <c:otherwise>
24     <c:out value="您的輸入有問題"></c:out>
25     </c:otherwise>
26 </c:choose>

 

 

 

<c:choose>
    <c:when test="${param.score==100}">
        <c:out value="太棒了,你是第一名!"></c:out>
    </c:when>
</c:choose>

 

 

 

 

var:給當前遍歷的變量取一個名字

<!-- 用法一:全部遍歷 -->
<c:forEach var="fruit" items="${fruits}">
    <c:out value="${fruit}"></c:out><br>
</c:forEach>

 

 

 

<!-- 用法二:部分遍歷 -->
<c:forEach var="fruit" items="${fruits}" begin="1" end="4">
    <c:out value="${fruit}"></c:out><br>
</c:forEach>

 

<!-- 用法三:部分遍歷並指定步長 -->
<c:forEach var="fruit" items="${fruits}" begin="1" end="4" step="2">
    <c:out value="${fruit}"></c:out><br>
</c:forEach>

 

1 <!-- 用法四:部分遍歷並輸出元素狀態 -->
2 <c:forEach var="fruit" items="${fruits}" begin="1" end="4" varStatus="fru">
3     <c:out value="${fruit}的四個屬性值"></c:out><br>
4     <c:out value="index屬性:${fru.index}"></c:out><br><!-- (集合元素中的下標)下標 -->
5     <c:out value="count屬性:${fru.count}"></c:out><br><!-- (計算在集合中的是第幾個數)集合中計數,從1開始 -->
6     <c:out value="first屬性:${fru.first}"></c:out><br><!-- 第一個值為true,其它都為false -->
7     <c:out value="last屬性:${fru.last}"></c:out><br><!-- 最后一個值為true,其它都為false -->
8     <c:out value="-----------------------------"></c:out><br>
9 </c:forEach>

 

 

<!-- forTokens標簽的用法 -->
<c:forTokens items="010-88096789-123" delims="-" var="num">
    <c:out value="${num}"></c:out><br>
</c:forTokens>

 

 

 

 

 1 <!-- import標簽的用法 -->
 2 <!-- 導入網絡上的絕對路徑 -->
 3 <c:catch var="error09">
 4     <c:import url="https://www.imooc.com"></c:import>
 5 </c:catch>
 6 <c:out value="${error09}"></c:out>
 7 
 8 <!-- 導入相對路徑文件 -->
 9 <c:catch var="error08">
10     <c:import url="tt.txt" charEncoding="gbk"></c:import>
11 </c:catch>
12 <c:out value="${error08}"></c:out><br>

 

引入同一個服務器的發布路徑下的AnotherWebProject下的importFile.jsp頁面到當前的project路徑來

<!-- context屬性的用法 -->
<c:catch var="error06">
    <c:import url="/importFile.jsp" context="/AnotherWebProject" charEncoding="gbk"></c:import>
</c:catch>
<c:out value="${error06}"></c:out><br>

 

 

 

 

 

 

 

常用JSTL函數

fn:contains

fn:escapeXml

 


免責聲明!

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



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