JSP标准标签库:Java Server Pages 标准标签库 (JSTL) 包含的各种标签可用于 JSP 页面中;
其优点有:
- 提供一组标准标签;
- 可用于编写各种动态 JSP 页面;
- 用于访问数据库、有条件地执行代码和支持国际化;
其组成为:
功能范围 URI 前缀
core(核心) http://java.sun.com/jsp/jstl/core c *
I18N http://java.sun.com/jsp/jstl/fmt fmt *
SQL http://java.sun.com/jsp/jstl/sql sql
XML http://java.sun.com/jsp/jstl/xml x
funcions http://java.sun.com/jsp/jstl/functions fn *
在使用标准标签库时,第一步要先引入标准标签库:如引入core(核心):
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
一、通用便签:
1. set,<c:set>用于在某个范围(Page,Request,Session,Application等)中设置某个值,或者设置某个对象的属性
代码如下:
<%--set --%>
<c:set value="${pageContext.request.contextPath }" scope="page" var="ctx"></c:set>
<c:set value="${pageContext.request.contextPath }" scope="page" var="ctx1"></c:set>
<p>ctx的值为:${ctx }</p>
2. remove ,<c:remove>用于删除某个变量或者属性
代码如下:
<%--remove --%>
<c:remove var="ctx1" scope="page"/>
<p>ctx1的值为:${ctx1 }</p>
3. out <c:out>计算一个表达式并将结果输出到当前的JspWrite对象
代码如下:
<%--out --%>
<c:out value="${ctx }"></c:out>
4. catch <c:catch>将可能抛出异常的代码放置在<c:catch>和</c:catch>之间,如果其中的代码抛出异常,异常将被捕获
效果如下:
二、条件标签
1. if <c:if>实现java语言中if语句的功能
代码如下:
<%--条件标签 当条件为真,则输出 applicationMessage.properties--%>
<c:if test="${5<10 }" var="ifvalue">
<p>5小于10</p>
<p>ifvalue的值:${ifvalue }</p>
</c:if>
2. choose <c:choose>、<c:when>、<c:otherwise>一起实现互斥条件的执行,类似于java语言的if/else语句
代码如下:
<%--<c:choose>、<c:when>、<c:otherwise> --%>
<c:set value="15" scope="page" var="peopleAge"></c:set>
<c:choose>
<c:when test="${peopleAge<=2 }">
<p>婴儿</p>
</c:when>
<c:when test="${peopleAge<18 }">
<p>未成年人</p>
</c:when>
<c:otherwise>
<p>成年人</p>
</c:otherwise>
三、迭代标签
1. forEach <c:forEach>对于包含了多个对象的集合进行迭代,重复执行它的标签体,或者重复迭代固定的次数
代码如下:
<!-- items表示要迭代的变量 -->
<c:forEach items="${persons }" var="person">
<p>${person.name }------${person.name }age</p>
</c:forEach>
2. forTokens <c:forTokens>用于迭代字符串中由分隔符的各个成员
代码如下:
<%--forTokens 迭代字符串,对字符串进行分割--%>
<c:forTokens items="${stringT }" delims="," var="emp">
<p>${emp }</p>
</c:forTokens>
效果如下:
四、I18N 国际化
程序在不做任何修改的情况下,就可以在不同的地区和不同的语言环境下,按照当地的语言和格式习惯显示字符.
I18N 与格式化标签:
- setLocale <fmt:setLocale>用于设置用户的本地语言环境,并将指定的Locale保存到javax.servlet.jsp.jstl.fmt.locale配置变量中去;
- setBundle <fmt:setBudle>创建一个I18N本地上下文环境,加载资源包到上下文中,资源包的名字通过basename指定
- message <fmt:message>从资源包中查找一个指定键的值,用于显示本地化的消息
- formatDate <fmt:formatDate>标签用于格式化日期
- formatNumber <fmt:formatNumber> 标签用于格式化数字,百分比,货币
常用的国际语言于国际语言代码:
重要代码如下:
<!-- 国际化输出 -->
<fmt:setLocale value="en_US"/>
<!-- 读取配置文件 -->
<fmt:setBundle basename="applicationMessage" var="amg"/>
<fmt:message key="name" bundle="${amg }"> </fmt:message>
<%--<ftm:formatDate>标签用于格式化日期 --%>
<h3>日期格式化</h3>
<p>
日期格式化(1):
<fmt:formatDate type="time" value="${dateNow }" />
</p>
<%--<fmt:formatNumber>标签用于格式化数字、百分比、货币 --%>
<h3>数字格式化:</h3>
<c:set var="balance" value="120000.2309"></c:set>
<p>数字格式化1:
<fmt:formatNumber type="currency" value="${balance }"></fmt:formatNumber>
</p>
<fmt:setLocale value="en_US"/>美元
<fmt:formatNumber value="${balance }" type="currency"></fmt:formatNumber>
<br>
<br>
<fmt:setLocale value="zh_CN"/>人民币
<fmt:formatNumber value="${balance }" type="currency"></fmt:formatNumber>
<br>
效果如下:
<fmt:formatDate>的属性:
Value:要显示的日期;
Type:DATE, TIME, 或 BOTH;
DataStyle: FULL, LONG, MEDIUM, SHORT, 或 DEFAULT;
Pattern:自定义格式模式;
timeZone:要显示的时区;
var:存储格式化日期的变量名(显示在页面内)
scope:存储格式化日志变量的范围;
JSP标准标签库的标签很多,在这里是不可能一一列举完的,这只是比较常用的一部分,具体的可以参考Java WebTag;