[关闭]
@cxm-2016 2016-12-27T17:06:27.000000Z 字数 3556 阅读 2024

Java Web (七)——JSTL

Web

版本:1
作者:陈小默
声明:禁止商业,禁止转载


JSTL标签

JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。
JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。

根据JSTL标签所提供的功能,可以将其分为5个类别。

核心标签库

导入核心标签库:

  1. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

out标签

<c:out>标签用来显示一个表达式的结果,与<%= %>作用相似,它们的区别就是标签可以直接通过"."操作符来访问属性。

属性 描述 是否必要 默认值
value 要输出的内容
default 输出的默认值 主体中的内容
escapeXml 是否忽略XML特殊字符 true

输出常量

  1. <c:out value="hello jstl"/>
  2. ${"hello jstl"}

输出变量

  1. <c:out value="${name}" default="Wang"/>
  2. ${name==null?"Wang":name}

转义输出

  1. <c:out value="<a href='#'>url</a>" escapeXml="true"/>
  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
  3. ${fn:escapeXml("<a href='#'>url</a>")}

set标签

用于把某一对象存储在特定的域范围内,或者设置web域中的Map类型的属性对象或JavaBean类型对象的属性。

属性 描述 是否必要 默认值
value 要存储的值 主体的内容
target 要修改的属性所属的对象
property 要修改的属性
var 存储信息的变量
scope var属性的作用域 Page

设置或修改域中的属性

  1. <c:set var="name" value="jay"/>
  2. ${name}

设置或修改域中的Map值

  1. <%
  2. HashMap<String, String> map = new HashMap<>();
  3. pageContext.setAttribute("map", map);
  4. %>
  5. <body>
  6. <c:set property="name"
  7. value="jay"
  8. target="${map}"/>
  9. ${map.name}

修改JavaBean属性的值

  1. <%!
  2. public static class Person {
  3. private String name;
  4. private int age;
  5. public Person() {
  6. }
  7. public Person(String name, int age) {
  8. this.name = name;
  9. this.age = age;
  10. }
  11. public String getName() {
  12. return name;
  13. }
  14. public void setName(String name) {
  15. this.name = name;
  16. }
  17. public int getAge() {
  18. return age;
  19. }
  20. public void setAge(int age) {
  21. this.age = age;
  22. }
  23. }
  24. %>
  25. <%
  26. Person user = new Person("Jack", 22);
  27. pageContext.setAttribute("user", user);
  28. %>
  29. <body>
  30. <c:set property="age"
  31. value="18"
  32. target="${user}"/>
  33. ${user.age}

remove标签

用于移除一个变量,可以指定这个变量的作用域,若未指定,则从小作用域开始查找,找到后删除并不再继续查找。可以用来确保JSP完成清理工作。

  1. <c:remove var="name" scope="session"/>

catch标签

标签主要用来处理产生错误的异常状况,并且将错误信息储存起来。

  1. <c:catch var="e">
  2. <%=1 / 0%>
  3. </c:catch>
  4. ${e.message}

if标签

判断表达式的值,如果表达式的值为 true 则执行其主体内容。注意,没有else标签。

  1. <c:if test="${3>2}">
  2. YES
  3. </c:if>
  4. <c:if test="${3<=2}">
  5. NO
  6. </c:if>

choose-when-otherwise标签

用来实现switch-case功能

  1. <c:choose>
  2. <c:when test="${a==1}">a==1</c:when>
  3. <c:when test="${a==2}">a==2</c:when>
  4. <c:when test="${a==3}">a==3</c:when>
  5. <c:when test="${a==4}">a==4</c:when>
  6. <c:otherwise>invalidate value</c:otherwise>
  7. </c:choose>

import标签

用来执行include操作,允许包含绝对路径。

属性 描述 是否必要 默认值
url 待导入资源的URL,可以是相对路径和绝对路径,并且可以导入其他主机资源
context 当使用相对路径访问外部context资源时,context指定了这个资源的名字。 当前应用程序
charEncoding 所引入的数据的字符编码集 ISO-8859-1
var 用于存储所引入的文本的变量
scope var属性的作用域 page
varReader 可选的用于提供java.io.Reader对象的变量
  1. <c:import url="/hello"/>
  1. <c:import url="/hello"
  2. var="page"
  3. scope="session"
  4. charEncoding="utf-8"/>

forEach标签

属性 描述 是否必要 默认值
items 要被循环的信息
begin 开始的元素(0=第一个元素,1=第二个元素) 0
end 最后一个元素(0=第一个元素,1=第二个元素) Last element
step 每一次迭代的步长 1
var 代表当前条目的变量名称
varStatus 代表循环状态的变量名称

遍历数组/List

  1. <c:forEach items="${arr}" var="i">
  2. ${i}
  3. </c:forEach>

将遍历到的元素暂存在pageContext的域属性i中。

遍历Map集合中的数据

  1. <%
  2. HashMap<String,Integer> map = new HashMap<>();
  3. map.put("A",1);
  4. map.put("B",2);
  5. map.put("C",3);
  6. pageContext.setAttribute("map", map);
  7. %>
  8. <c:forEach items="${map}" var="entry">
  9. ${entry.key}:${entry.value}
  10. <br>
  11. </c:forEach>

forTokens标签

属性 描述 是否必要 默认值
items 要被循环的信息
begin 开始的元素(0=第一个元素,1=第二个元素) 0
delims 分隔符
end 最后一个元素(0=第一个元素,1=第二个元素) Last element
step 每一次迭代的步长 1
var 代表当前条目的变量名称
varStatus 代表循环状态的变量名称
  1. <c:forTokens items="hello1world1a1b1c" delims="1" var="word">
  2. ${word}
  3. </c:forTokens>

redirect标签

标签通过自动重写URL来将浏览器重定向至一个新的URL,它提供内容相关的URL,并且支持c:param标签。

属性 描述 是否必要 默认值
url 目标URL
context 紧接着一个本地网络应用程序的名称 当前应用程序
  1. <c:redirect url="/hello"/>

param标签

用于在url中使用参数。

  1. <c:redirect url="/hello">
  2. <c:param name="page" value="1"/>
  3. </c:redirect>

url标签

属性 描述 是否必要 默认值
value 基础URL
context 本地网络应用程序的名称 当前应用程序
var 代表URL的变量名 Print to page
scope var属性的作用域 Page
  1. <a href="<c:url value="/hello"/>">
  2. 跳转到首页
  3. </a>
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注