@cxm-2016
2016-12-27T17:06:27.000000Z
字数 3556
阅读 2024
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>