JSTL
JSP Standard Tag Library ,JSP标准标签库,即在JSP页中使用的标签库。
之前学习了如何将html转换成jsp开发,使html更灵活多变。当然,在JSP中有便也有不变指出。JSP可以直接引入类使用,缺点也是也为如果想使用对象数据,就必须先引入类。甚至在再使用过程中,需要写入特殊标签。这样带了很多不便。所以,有了JSTL标签库的发展。通过JSTL,就如同在html中写标签一样便利,还能简化代码量。
JSTL使用
EL表达式
可以用来接收request中的属性值。用法:${变量名}。例如
request.setAttribute("hello", "HelloWorld");
则JSP页面接收时:
hello(el表达式,语法:$和{}):${hello }<br>
就能输出:
hello(el表达式,语法:$和{}):HelloWorld
EL不仅仅是可以传字符串,也可以数组,实体(实体属性必须存在GET属性),map,等等,request传递的参数,同时也支持运算符的运算。
核心库
需要引入taglib,并且需要jstl.jar 和standard.jar放入到项目中。核心库代码就类似html标签:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
c:out 输出变量值.可以直接使用赋值,也可以接受传递的参数,接收时可以使用el表达式。
<c:out value="123"></c:out>
<c:out value="hello"></c:out>
<c:out value="${hello} "></c:out>
c:set 定义变量即其值
<c:set value="root" var="userid"/>
c:remove移除变量
<c:remove var="userid"/>
条件控制
c:if test 判断语句
<c:if test="${v1 lt v2}">
v1小于v2<br>
</c:if>
c:choose不能单独使用,必须存在一个when(c:when;c:otherwise)
<c:choose>
<c:when test="${v1 gt v2}">
v1大于v2<br>
</c:when>
<c:otherwise>
v1小于v2<br>
</c:otherwise>
</c:choose>
循环控制标签
c:forEach 循环语句
<c:forEach items="${users}" var="user" varStatus="vs">
<c:choose>
<c:when test="${vs.count mod 2 == 0}">
<tr bgcolor="red">
</c:when>
<c:otherwise>
<tr>
</c:otherwise>
</c:choose>
<td>${user.username }</td>
<td>${user.age }</td>
<td>${user.group.name }</td>
</tr>
</c:forEach>
varstatus:循环中的计数器
Begin:开始位置
end:结束位置
step:步长
<c:forEach items="${users}" var="user" begin="2" end="8" step="2">
<tr>
<td>${user.username }</td>
<td>${user.age }</td>
<td>${user.group.name }</td>
</tr>
</c:forEach>
c:forTokens 分割字符串输出
delims:分隔符
var:有效值
<c:forTokens items="${strTokens}" delims="#" var="v">
${v }<br>
</c:forTokens>
格式化库
比如日期、数字的格式化分别是formatDate 、formatNumber。使用法“fmt:格式化类”做标签,如
<fmt:formatDate value="${today}"/><!--日期格式化-->
<fmt:formatNumber value="${n}"/><!--数字格式化-->
并且,通过各自的type分别控制日期或者数字显示的形式。
函数库
可以调用函数中的某个方法,但是需要引入tld描述文件,如果是自定义类,则就必须要创建tld文件了。
用法:前缀+冒号+函数名;(前缀即引入的函数taglib名称prefix值,函数名即你需要使用的方法,并且该方法应该是函数库中定义过的)。
自定义函数
方法:必须是静态全局的
提供tld描述文件,并将tld放到WEB-INF或WEB-INF下的任意目录中
采用taglib进行引入在EL表达式中采用:前缀+冒号+函数名的方法进行调用
更多用法建议参考帮助文档,稍后会提供文件。。。