@cxm-2016
2016-12-27T09:06:27.000000Z
字数 3556
阅读 2583
Web
版本:1
作者:陈小默
声明:禁止商业,禁止转载
JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。
JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。
根据JSTL标签所提供的功能,可以将其分为5个类别。
导入核心标签库:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:out>标签用来显示一个表达式的结果,与<%= %>作用相似,它们的区别就是标签可以直接通过"."操作符来访问属性。
| 属性 | 描述 | 是否必要 | 默认值 |
|---|---|---|---|
| value | 要输出的内容 | 是 | 无 |
| default | 输出的默认值 | 否 | 主体中的内容 |
| escapeXml | 是否忽略XML特殊字符 | 否 | true |
输出常量
<c:out value="hello jstl"/>${"hello jstl"}
输出变量
<c:out value="${name}" default="Wang"/>${name==null?"Wang":name}
转义输出
<c:out value="<a href='#'>url</a>" escapeXml="true"/><%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>${fn:escapeXml("<a href='#'>url</a>")}
用于把某一对象存储在特定的域范围内,或者设置web域中的Map类型的属性对象或JavaBean类型对象的属性。
| 属性 | 描述 | 是否必要 | 默认值 |
|---|---|---|---|
| value | 要存储的值 | 否 | 主体的内容 |
| target | 要修改的属性所属的对象 | 否 | 无 |
| property | 要修改的属性 | 否 | 无 |
| var | 存储信息的变量 | 否 | 无 |
| scope | var属性的作用域 | 否 | Page |
设置或修改域中的属性
<c:set var="name" value="jay"/>${name}
设置或修改域中的Map值
<%HashMap<String, String> map = new HashMap<>();pageContext.setAttribute("map", map);%><body><c:set property="name"value="jay"target="${map}"/>${map.name}
修改JavaBean属性的值
<%!public static class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}%><%Person user = new Person("Jack", 22);pageContext.setAttribute("user", user);%><body><c:set property="age"value="18"target="${user}"/>${user.age}
用于移除一个变量,可以指定这个变量的作用域,若未指定,则从小作用域开始查找,找到后删除并不再继续查找。可以用来确保JSP完成清理工作。
<c:remove var="name" scope="session"/>
标签主要用来处理产生错误的异常状况,并且将错误信息储存起来。
<c:catch var="e"><%=1 / 0%></c:catch>${e.message}
判断表达式的值,如果表达式的值为 true 则执行其主体内容。注意,没有else标签。
<c:if test="${3>2}">YES</c:if><c:if test="${3<=2}">NO</c:if>
用来实现switch-case功能
<c:choose><c:when test="${a==1}">a==1</c:when><c:when test="${a==2}">a==2</c:when><c:when test="${a==3}">a==3</c:when><c:when test="${a==4}">a==4</c:when><c:otherwise>invalidate value</c:otherwise></c:choose>
用来执行include操作,允许包含绝对路径。
| 属性 | 描述 | 是否必要 | 默认值 |
|---|---|---|---|
| url | 待导入资源的URL,可以是相对路径和绝对路径,并且可以导入其他主机资源 | 是 | 无 |
| context | 当使用相对路径访问外部context资源时,context指定了这个资源的名字。 | 否 | 当前应用程序 |
| charEncoding | 所引入的数据的字符编码集 | 否 | ISO-8859-1 |
| var | 用于存储所引入的文本的变量 | 否 | 无 |
| scope | var属性的作用域 | 否 | page |
| varReader | 可选的用于提供java.io.Reader对象的变量 | 否 | 无 |
<c:import url="/hello"/>
<c:import url="/hello"var="page"scope="session"charEncoding="utf-8"/>
| 属性 | 描述 | 是否必要 | 默认值 |
|---|---|---|---|
| items | 要被循环的信息 | 否 | 无 |
| begin | 开始的元素(0=第一个元素,1=第二个元素) | 否 | 0 |
| end | 最后一个元素(0=第一个元素,1=第二个元素) | 否 | Last element |
| step | 每一次迭代的步长 | 否 | 1 |
| var | 代表当前条目的变量名称 | 否 | 无 |
| varStatus | 代表循环状态的变量名称 | 否 | 无 |
遍历数组/List
<c:forEach items="${arr}" var="i">${i}</c:forEach>
将遍历到的元素暂存在pageContext的域属性i中。
遍历Map集合中的数据
<%HashMap<String,Integer> map = new HashMap<>();map.put("A",1);map.put("B",2);map.put("C",3);pageContext.setAttribute("map", map);%><c:forEach items="${map}" var="entry">${entry.key}:${entry.value}<br></c:forEach>
| 属性 | 描述 | 是否必要 | 默认值 |
|---|---|---|---|
| items | 要被循环的信息 | 否 | 无 |
| begin | 开始的元素(0=第一个元素,1=第二个元素) | 否 | 0 |
| delims | 分隔符 | 是 | 无 |
| end | 最后一个元素(0=第一个元素,1=第二个元素) | 否 | Last element |
| step | 每一次迭代的步长 | 否 | 1 |
| var | 代表当前条目的变量名称 | 否 | 无 |
| varStatus | 代表循环状态的变量名称 | 否 | 无 |
<c:forTokens items="hello1world1a1b1c" delims="1" var="word">${word}</c:forTokens>
标签通过自动重写URL来将浏览器重定向至一个新的URL,它提供内容相关的URL,并且支持c:param标签。
| 属性 | 描述 | 是否必要 | 默认值 |
|---|---|---|---|
| url | 目标URL | 是 | 无 |
| context | 紧接着一个本地网络应用程序的名称 | 否 | 当前应用程序 |
<c:redirect url="/hello"/>
用于在url中使用参数。
<c:redirect url="/hello"><c:param name="page" value="1"/></c:redirect>
| 属性 | 描述 | 是否必要 | 默认值 |
|---|---|---|---|
| value | 基础URL | 是 | 无 |
| context | 本地网络应用程序的名称 | 否 | 当前应用程序 |
| var | 代表URL的变量名 | 否 | Print to page |
| scope | var属性的作用域 | 否 | Page |
<a href="<c:url value="/hello"/>">跳转到首页</a>