2019-05-18
JSP标签库(JSP Standard Tag Library,JSTL)替代了过去页面中嵌入Java代码实现业务逻辑的模式,实现了业务逻辑与视图的隔离。
JSTL必须在支持Servlet/JSP的容器(如Tomcat)中才能运行。
使用步骤
将JSTL的jstl.jar和standard.jar复制到Web应用的WEB-INF/lib目录下。
在JSP页面首部加入如下语句:
<%@ taglib prefix="标签库前缀" uri="标签库URI" %>
标签库名称 | URI | 使用的前缀 |
---|---|---|
核心标签库 | http://java.sun.com/jsp/jstl/core | c |
XML处理标签库 | http://java.sun.com/jsp/jstl/xml | x |
国际化处理标签库 | http://java.sun.com/jstl/fmt_rt | fmt |
SQL标签库 | http://java.sun.com/jsp/jstl/sql | sql |
函数标签库 | http://java.sun.com/jsp/jstl/functions | fn |
核心标签库
核心标签库提供基本的输入输出、流程控制功能。
set标签
定义变量或设置Java对象属性。语式方法有两种:
(1)定义变量
<c:set var="变量名" value="变量值" scope="page|request|session|application"></c:set>
变量值只能是Integer、Double、Float、String等数据类型,或是EL表达式,不能使用Java Bean或者Map等复杂类型。
变量值可以写在value属性里,也可以写在标签体内。下列两种写法等效:
<c:set var="var1" value="hello"></c:set>
<c:set var="var2">hello</c:set>
(2)设置对象属性
<c:set target="${对象名称}" property="属性名称" value="属性值" ></c:set>
目标对象必须是JavaBean或Map。如果是JavaBean,则property为JavaBean的一个属性;如果是Map,则propery为Map的一个key。
只能修改已经存在的JavaBean属性或Map,而不能创建JavaBean或者Map,如果target为null,会抛出异常。
与JavaBean标签作用和相同
<jsp:useBean id="user" class="com.web.model.Users" scope="page"></jsp:useBean>
<jsp:setProperty property="name" name="user" value="jevon"/> <%-- 使用javabean标签设置属性 --%>
<c:set target="${user }" property="sex">男</c:set> <%-- 使用jstl标签设置属性 --%>
out标签
用来显示数据内容,类似于<%=%>。
<c:out value="数据值" default="默认值"/>
value属性必须是EL表达式或常量。
default属性指定默认值。如果value的值为null时,则显示default的值。
remove标签
用来移除指定范围的变量。
<c:remove var="变量名" scope="page|request|session|application">
catch标签
用于在JSP中捕获异常,并将异常信息保存于指定的变量中
<c:catch var="用于保存异常信息的变量名">
可能出现异常的代码
</c:catch>
if标签
<c:if test = "判断式" [var="变量名" scope="page|request|session|application"] /></if>
test属性必须填写,表示进行判断的EL表达式。
属性var定义变量,存放判断后的结果。
scope表示var定义变量储存的范围。
当test中表达式的结果为true时,则会执行本体内容;如果为false则不会执行。
choose标签
<choose>
本身只能作为父标签使用。其中可以有一个或多个<when>
标签,有零个或多个<otherwise>
标签。
与switch用法基本相同。若条件满足,则不再继续执行下面的分支
<c:choose>
<c:when test=""> <!--条件一 -->
</c:when>
<c:when test=""> <!--条件二 -->
</c:when>
<c:when test=""> <!--条件三 -->
</c:when>
<c:otherwise> <!--其他情况 -->
</c:otherwise>
</c:choose>
forEach标签
<c:forEach items="被遍历的集合" begin="开始索引(默认0)" end="结束索引(默认最后)"
step="增量(默认1)" var="当前变量名" varStatus="当前成员状态">
</c:forEach>
varStatus常用属性
- index 当前成员的索引
- count 共访问过的成员数量
- first 当前是否为第一个成员
- last 当前是否为最后一个成员
forTokens标签
用于在JSP中遍历字符串中由指定字符分隔的子串
<c:forTokens items="被遍历的集合" delims="分割符" begin="开始索引(默认0)" end="结束索引(默认最后)"
step="增量(默认1)" var="当前变量名" varStatus="当前成员状态">
</c:forTokens>
import标签
可以把其他静态或动态的文件包含到当前JSP中。和JSP行为<jsp:include>
区别是:<jsp:include>
只能包含和自己在同一Web应用下的文件;而<import>
除了能够包含和自己的同一Web 应用的文件外,也可以包含不同Web应用或者其他网站的文件。
<c:import url="文件地址"></c:import>
url标签
<c:url value="http://www.163.com" var="myurl" />
<a href="${myurl}">点击跳转</a>
redirect标签
实现页面重定向功能。可以通过<param>标签传递参数。
<c:redirect url="second.jsp">
<c:param name="userName" value="admin"></c:param>
</c:redirect>
函数标签库
必须在EL表达式内使用。
大小写转换
${fn:toLowerCase("ABC")}
${fn:toUpperCase("abc")}
长度计算
fn:length(字符串|数组|集合)
${fn:length(lists)}
子串包含检测
contains标签:判断是否包含指定的字符串。
fn:contains(字符串,要查找的子串)
${fn:contains("ABC","AB")}
endsWith标签:判断某字符串是否以指定的子串结尾。
fn:endsWith(字符串,要查找的子串)
${fn:startsWith("ABCDE","ABC") }
startsWith标签:判断某字符串是否以指定子串开始。
fn:startsWith(字符串,要查找的子串)
${fn:endsWith("xxx.jpg","jpg") }
子串查找
${fn:indexOf("abc@163.com", "@") }
取子串
fn:substring(字符串,起始索引,结束索引)
在"abc"中取1到3的子串为:
${fn:substring("abcdef",1,3)}
去字符串空格
${fn:trim(" abc ")}
分割字符串
字符串连接
将字符串数组以分隔符为界链接成字符串返回。
fn:join(字符串数组,分隔符)
字符串替换
fn:replace (字符串,原始内容,替换后的内容)
${fn:replace("abc","a","xy")}
国际化标签库
formatDate标签
用于格式化日期
<%
pageContext.setAttribute("CURDATE", new Date());
%>
<fmt:formatDate value="${CURDATE}" type="both"/> <br />
<fmt:formatDate value="${CURDATE}" type="date"/> <br />
<fmt:formatDate value="${CURDATE}" type="time"/> <br />
<fmt:formatDate value="${CURDATE}" type="date" dateStyle="default"/> <br />
<fmt:formatDate value="${CURDATE}" type="date" dateStyle="short"/> <br />
<fmt:formatDate value="${CURDATE}" type="date" dateStyle="medium"/> <br />
<fmt:formatDate value="${CURDATE}" type="date" dateStyle="long"/> <br />
<fmt:formatDate value="${CURDATE}" type="date" dateStyle="full"/> <br />
<fmt:formatDate value="${CURDATE}" type="time" timeStyle="default"/> <br />
<fmt:formatDate value="${CURDATE}" type="time" timeStyle="short"/> <br />
<fmt:formatDate value="${CURDATE}" type="time" timeStyle="medium"/> <br />
<fmt:formatDate value="${CURDATE}" type="time" timeStyle="long"/> <br />
<fmt:formatDate value="${CURDATE}" type="time" timeStyle="full"/> <br />
<fmt:formatDate value="${CURDATE}" type="both" pattern="yyyy-MM-dd, HH:mm:ss" />
formatNumber标签
用于格式化数字
<p>货币示例(货币符号和当前web服务器的 local设定有关)</p>
<fmt:formatNumber value="12" type="currency" pattern="$.00"/> <br/>
<fmt:formatNumber value="12" type="currency" pattern="$.#"/> <br/>
<fmt:formatNumber value="12" type="currency" pattern="¥.00"/> <br/>
<fmt:formatNumber value="12" type="currency" pattern="#0.00元"/> <br/>
<fmt:formatNumber value="12" type="currency"/>
<p>普通数字示例</p>
<fmt:formatNumber value="123456.7891" pattern="#0.00"/> <br/>
<fmt:formatNumber value="123456.7891" pattern="#,#00.00"/> <br/>
<fmt:formatNumber value="0.7891" pattern="#.00"/> <br/>
<fmt:formatNumber value="0.1234" type="percent" pattern="#0.00%"/><br/>
<fmt:formatNumber value="12" type="percent" /><br/>
<fmt:formatNumber value="12" type="percent" pattern="#0.00%"/><br/>
网友评论