Jstl标签库
JSTL标签库
什么是JSTL标签库 JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL), JSTL是标签语言!JSTL标签使用以来非常方便,它与JSP动作 标签一样,只不过它不是JSP内置的标签,需要我们自己导包,以 及指定标签库而已!
如果你使用MyEclipse开发JavaWeb,那么在把项目发布 到Tomcat时,你会发现,MyEclipse会在lib目录下存放jstl的 Jar包!如果你没有使用MyEclipse开发那么需要自己来导入这个 JSTL的Jar包:jstl-1.2.jar。
JSTL标签库的作用 用来提升在JSP页面的逻辑代码的编码效率,使用标签来替换逻辑代码的直接书写,高效,美观,整洁,易读
Jstl标签库的使用
- 核心标签库 - 1.导入jar包 
- 2.声明jstl标签库的引入(核心标签库) - <%@taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core" %>
 
- 基本标签: - <-c:out value=”数据” default=”默认值”><-/c:out>- 数据可以为常量值也可以是EL表达式。
- 作用:将数据输出给客户端。
 
- <-c:set var=”hello” value=”hello pageContext” scope=”page”><-/c:set>- 作用:存储数据到作用域对象中
- var:表示存储的键名
- value:表示存储的数据
- scope:表示要存储的作用域对象 page request session application
 
- <-c:remove var=”hello” scope=”page”/>- 作用:删除作用域中的指定键的数据。
- var:表示要删除的键的名字
- scope:表示要删除的作用域(可选)
- 注意:如果在不指定作用域的情况使用该标签删除数据,会将四个作用域对象中的符合要求的数据全部删除。
 
 
- <-c:out value=”数据” default=”默认值”><-/c:out>
- 逻辑标签: - <-c:if test=”${表达式}”>前端代码<-/c:if> - 作用:进行逻辑判断,相当于java代码的单分支判断。
 
- <-c:choose> 
 <-c:when test=””>执行内容<-/c:when>
 <-c:when test=””>执行内容<-/c:when>
 …
 <-c:otherwise>执行内容<-/c:otherwise>
 <- /c:choose>
- 作用:用来进行多条件的逻辑判断,类似java中的多分支语句 - 注意:条件成立只会执行一次,都不成立则执行otherwise
 
 
- 循环标签: - <-c:forEach begin=”1” end=”4” step=”2”>循环体<-/c:forEach>
 作用:循环内容进行处理
- 使用:- begin:声明循环开始位置
- end:声明循环结束位置
- step:设置步长
- varStatus:声明变量记录每次循环的数据(角标,次数,是否是第一次循环,是否是最后一次循环)- 注意:数据存储在作用域中,需要使用EL表达式获取。
- 例如:${vs.index}–${vs.count}–${vs.first}–${vs.last}
 
- items:声明要遍历的对象。结合EL表达式获取对象
- var:声明变量记录每次循环的结果。存储在作用域中,需要使用EL表达式获取。
 
 
- <-c:forEach begin=”1” end=”4” step=”2”>循环体<-/c:forEach>
- 注意:逻辑判断标签需要依赖于EL的逻辑运算,也就是表达式中涉及到的数据必须从作用域中获取。  - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112- <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 
 <% prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 <%
 request.setAttribute("str","今天天气真好,适合学习");
 //request.setAttribute("hello","hello request");
 %>
 <!--基本标签学习 -->
 <h3>基本标签学习</h3>
 <c:out value="哈哈"></c:out>---哈哈--${str2}<br />
 <c:out value="${str2}" default="嘿嘿"></c:out><br />
 <c:set var="hello" value="hello pageContext" scope="page"></c:set><br />
 <c:set var="hello" value="hello request" scope="request"></c:set><br />
 <c:set var="hello" value="hello session" scope="session"></c:set><br />
 <c:set var="hello" value="hello application" scope="application"></c:set><br />
 <%-- <c:out value="${applicationScope.hello}"></c:out> --%>
 <c:remove var="hello" scope="page"/><br />
 <c:out value="${hello}"></c:out>
 <hr />
 <h3>逻辑标签学习</h3>
 <!--传统方式: -->
 <%
 int a=4;
 if(a>3){
 %>
 <b>今天的天气有点热哦</b>
 <%} %>
 <!--jstl方式: -->
 <c:set var="a" value="4"></c:set>
 <c:if test="${a>3}">
 <b>今天的天气有点热哦</b>
 </c:if>
 <br />
 <c:set var="score" value="68"></c:set>
 <c:choose>
 <c:when test="${score>=90}">
 <i>奖励吃鸡装配一套</i>
 </c:when>
 <c:when test="${score<90&&score>=80}">
 <i>奖励空投箱</i>
 </c:when>
 <c:when test="${score<80&&score>=70}">
 <i>无奖励无惩罚</i>
 </c:when>
 <c:otherwise>
 <i>男女混合双打</i>
 </c:otherwise>
 </c:choose>
 <hr />
 <h3>JSTL的循环标签</h3>
 <!--传统方式的表格 -->
 <table border="1px">
 <tr>
 <td>课程名称</td>
 <td>教师</td>
 <td>价格</td>
 <td>重要性</td>
 </tr>
 <%
 for(int i=0;i<3;i++){
 if(i==2){
 %>
 <tr>
 <td>java</td>
 <td>张老师</td>
 <td>不要钱</td>
 <td>非常重要</td>
 </tr>
 <%}} %>
 </table>
 <%
 ArrayList<String> list=new ArrayList<String>();
 list.add("a");
 list.add("b");
 list.add("c");
 list.add("d");
 request.setAttribute("list",list);
 HashMap<String,String> map=new HashMap<String,String>();
 map.put("a1", "哈哈哈");
 map.put("b1", "嘿嘿");
 request.setAttribute("map",map);
 %>
 <!-- 使用JSTL方式完成循环 -->
 <!--常量循环 -->
 <c:forEach begin="0" end="4" step="1" varStatus="vs">
 1111---${vs.index}--${vs.count}--${vs.first}--${vs.last}<br />
 </c:forEach>
 <!--动态循环 -->
 <c:forEach items="${list}" var="str">
 ${str}<br />
 </c:forEach>
 <!--创建表格数据 -->
 <table border="1px">
 <tr>
 <td>课程名称</td>
 <td>教师</td>
 <td>价格</td>
 <td>重要性</td>
 </tr>
 <c:forEach items="${list}" var="s">
 <tr>
 <td>${s}</td>
 <td>${s}</td>
 <td>${s}</td>
 <td>${s}</td>
 </tr>
 </c:forEach>
 </table>
 <!--遍历map集合 -->
 <c:forEach items="${map}" var="m">
 ${m.key}--${m.value} <br />
 </c:forEach>
 
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Kylin!
 评论







