JSTL
JSTL
JSP Standard Tag Library JSP 标准标签库,JSP 为开发者提供的⼀系列的标签,使⽤这些标签可以完成
⼀些逻辑处理,⽐如循环遍历集合,让代码更加简洁,不再出现 JSP 脚本穿插的情况。
实际开发中 EL 和 JSTL 结合起来使⽤,JSTL 侧重于逻辑处理,EL 负责展示数据。
JSTL 的使⽤
1、需要导⼊ jar 包(两个 jstl.jar standard.jar)存放的位置 web/WEB-INF
2、在 JSP ⻚⾯开始的地⽅导⼊ JSTL
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3.一个直白的例子
<c:forEach items="${list}" var="user"> <tr> <td>${user.id}</td> <td>${user.name}</td> <td>${user.score}</td> <td>${user.address.value}</td> </tr> </c:forEach>
4.JSTL 优点
1、提供了统⼀的标签
2、可以⽤于编写各种动态功能
5.
核⼼标签库常⽤标签:
set、out、remove、catch
set:向域对象中添加数据
<% requset.setAttribute(key,value) %> <c:set var="name" value="tom" scope="request"></c:set> ${requestScope.name} <% User user = new User(1,"张三",66.6,new Address(1,"科技路")); request.setAttribute("user",user); %> ${user.name} <hr/> <c:set target="${user}" property="name" value="李四"></c:set> ${user.name}
out:输出域对象中的数据
<c:set var="name" value="tom"></c:set>
<c:out value="${name}" default="未定义"></c:out>
remove:删除域对象中的数据
<c:remove var="name" scope="page"> </c:remove> <c:out value="${name}" default="未定义"></c:out>
catch:捕获异常
<c:catch var="error"> <% int a = 10/0; %> </c:catch> ${error}
一个例子
<% List<User> list=(List<User>) request.getAttribute("list"); for(User user:list){
request.setAttribute("user",user);//修改后 %> <tr> <td>${user.id}</td> <td>${user.name}</td> <td>${user.score}</td> <td>${user.address.value}</td> </tr> <% } %>
此时用${}取值不行
原因:没有将user对象setAttribute
修改方式:加上setAttribute
迭代标签:forEach
<c:forEach items="${list}" var="str" begin="2" end="3" step="2" varStatus="sta"> ${sta.count}、${str}<br/> </c:forEach>
条件标签:if choose
<c:set var="num1" value="1"></c:set> <c:set var="num2" value="2"></c:set>
<c:if test="${num1>num2}">ok</c:if> <c:if test="${num1<num2}">fail</c:if> <hr/> <c:choose> <c:when test="${num1>num2}">ok</c:when> <c:otherwise>fail</c:otherwise> </c:choose>
格式化标签库常⽤的标签:
<% request.setAttribute("date",new Date()); %> <fmt:formatDate value="${date}" pattern="yyyy-MM-dd HH:mm:ss"> </fmt:formatDate><br/> <fmt:formatNumber value="32145.23434" maxIntegerDigits="2" maxFractionDigits="3"></fmt:formatNumber>
函数标签库常⽤的标签:
<% request.setAttribute("info","Java,C"); %> ${fn:contains(info,"Python")}<br/> ${fn:startsWith(info, "Java")}<br/> ${fn:endsWith(info, "C")}<br/> ${fn:indexOf(info, "va")}<br/> ${fn:replace(info, "C","Python")}<br/> ${fn:substring(info, 2, 3)}<br/> ${fn:split(info, ",")[0]}-${fn:split(info, ",")[1]}