JSP-JSTL标签库
概念
JSP标准标签库(Jsp Standarded Tag Library) ,使用标签取代JSP页面上的Java代码。
JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言。JSTL标签使用非常方便,它与JSP动作标签一样,只不过它不是JSP内置的标签,需要我们自己导包,以及指定标签库。
如果你使用MyEclipse开发JavaWeb,那么在把项目发布到Tomcat时,你会发现,MyEclipse会在lib目录下存放jstl的Jar包!如果你没有使用MyEclipse开发那么需要自己来导入这个JSTL的Jar包:jstl-1.2.jar。
作用
用来提升在JSP页面的逻辑代码的编码效率,使用标签来替换逻辑代码的直接书写,高效,美观,整洁,易读。使用
JSTL的核心标签库(c)(重点)JSTL的格式化标签库(fmt)(学习)
JSTL的SQL标签库(sql)(了解)
JSTL的函数标签库(fn)(了解)
JSTL的XML标签库(x)(了解)
具体JSTL学习可登录网址:http://www.runoob.com/jsp/jsp-jstl.html
JSTL 快速入门
1.在pom.xml导入坐标(导入jar包)
<dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency>
2.在JSP页面上引入JSTL标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3.使用标签
JSTL的核心标签库
基本标签
<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:表示要删除的作用域(可选)
注意:
如果在不指定作用域的情况使用该标签删除数据,会将四个作用域对象中的符合要求的数据全部删除。
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setAttribute("str","今天天气真好,适合学习"); //request.setAttribute("hello","hello request"); %> <!--基本标签学习 --> <c:out value="哈哈"></c:out><br /> <c:out value="${str}" 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 />
逻辑标签
<c:if test="${表达式}">前端代码
</c:if>
作用:进行逻辑判断,相当于java代码的单分支判断。
注意:逻辑判断标签需要依赖于EL的逻辑运算,也就是表达式中涉及到的数据必须从作用域中获取。
<!--传统方式: --> <% 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>
<c:choose>
<c:when test="">执行内容</c:when><c:when test="">执行内容</c:when>
...
<c:otherwise>执行内容</c:otherwise>
</c:choose>
作用:用来进行多条件的逻辑判断,类似java中的多分支语句
注意:条件成立只会执行一次,都不成立则执行otherwise
<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>
循环标签
相当于 for 循环。java中有增强for循环和普通for循环,JSTL 中的 <c:forEach> 也有两种用法
用法一:
类似于 Java 中的增强for循环。涉及到的 <c:forEach> 中的属性如下
items:被遍历的容器
var:遍历产生的临时变量
varStatus:遍历状态对象
1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 4 <!DOCTYPE html> 5 <html lang="en"> 6 <head> 7 <meta charset="UTF-8"> 8 <title>Title</title> 9 </head> 10 <body> 11 <input type="button" value="新增"><br> 12 <hr> 13 <table border="1" cellspacing="0" width="800"> 14 <tr> 15 <th>序号</th> 16 <th>品牌名称</th> 17 <th>企业名称</th> 18 <th>排序</th> 19 <th>品牌介绍</th> 20 <th>状态</th> 21 <th>操作</th> 22 </tr> 23 24 <c:forEach items="${brands}" var="brand" varStatus="status"> 25 <tr align="center"> 26 <%--<td>${brand.id}</td>--%> 27 <%--<td>${status.index}</td>--%><%--从0开始--%> 28 <td>${status.count}</td><%--从1开始--%> 29 <td>${brand.brandName}</td> 30 <td>${brand.companyName}</td> 31 <td>${brand.ordered}</td> 32 <td>${brand.description}</td> 33 <c:if test="${brand.status == 1}"> 34 <td>启用</td> 35 </c:if> 36 <c:if test="${brand.status != 1}"> 37 <td>禁用</td> 38 </c:if> 39 <td><a href="#">修改</a> <a href="#">删除</a></td> 40 </tr> 41 </c:forEach> 42 </table> 43 </body> 44 </html>
用法二:
类似于 Java 中的普通for循环。涉及到的 <c:forEach> 中的属性如下
begin:开始数
end:结束数
step:步长
实例代码:
从0循环到10,变量名是 i ,每次自增1
<c:forEach begin="0" end="10" step="1" var="i"> ${i} </c:forEach>