JSTL标签

2019-05-18  本文已影响0人  Mr_J316

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常用属性

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/>
上一篇 下一篇

猜你喜欢

热点阅读