-
在 JSP 中使用 EL 表达式可以方便的引用 JavaBean 及其属性,但有不能遍历集合等限制。配合 JSTL 使用,基本可以实现所有的功能。
-
JSTL 全称为 JSP Standard Tag Library,即 JSP 标准标签库。JSP 标签是可重复利用的类库,使用简单,专门用于显示数据。JSP 会将标签解释为相应的 HTML 代码。JSP 中推荐使用 JSP 标签,不推荐使用 Scriptlet(即使用
<%...%>
等镶嵌 Java 代码)。 -
除 JSTL 标准标签库外,还有其他的标签库,如 Spring 标签库等,也可以根据需求实现自己的标签库。
-
使用 JSTL 前需使用 taglib 行导入 JSTL 库,如
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
。prefix 属性可以随意指定。(以下将默认 preifx="c") -
out 标签用来输出数据,如
<c:out value="${ param.xxx}"></c:out>
,out 标签还有另外两个属性,default 和 escapeXml。value 属性不存在时会输出 default 属性的值,excapeXml 为 true 时会对内容进行 XML 编码。 -
if 标签用来进行条件判断,如
<c:if test="${ param.action == 'add'}">
,并使用</c:if>
作为结束标签。test 属性为 boolean 类型的 true,或者字符串类型的 true(大小写不敏感)时,会输出标签内的内容。 -
<c:choose />
、<c:when />
、<:otherwise />
标签相当于 Java 中的if...else
,when 标签有 test 属性,同 if 标签。 -
<c:forEach />
标签相当于 Java 中的 while、for循环。<c:forEach var="num" begin="2" end="100" step="2"></c:forEach>
相当于 Java 代码的for(int num = 2; num <= 100; num = num + 2)
。 -
forEach 标签不仅可以用作循环,还可以遍历集合类型的对象,如 List、Set、String[]、Enumeration 等。用法如
<c:forEach items="${attrList}" var="attrItemClassObject">
。 -
使用 forEach 标签中的 varStatus 属性,可以获取当前 item 的一些信息,如 index、count(已经遍历了多少个对象,从1开始)、first(是否为第一个对象)、last、current(返回当前对象)、begin(返回 forEach 的 begin 属性)、end、step。使用前需要在 forEach 标签中指定 varStatus 属性的值,即可在后面通过 varStatus 的值获取当前项的信息。
-
forToken 标签与 forEach 类型,不同的是 forToken 用来遍历字符串。如
<c:forToken items="xxx,xxx,xxx" delims="," var="item" varStatus="status" begin="1" end="3" step="2">
表示将 items 属性的值通过 delims 属性的值分割为字符串数组。 -
set 标签用来实现"写"的功能需要对象有相应的 setter 方法。set 标签有5个属性,var、value、scope、target、property。var 表示对象名,scope 声明对象范围,取值有 Session、request、page、application。var 只能设置基本类型的数据,不能操作 JavaBean。target 只能用来操作 JavaBean,与 property 一起使用。target 只能修改已经存在的 JavaBean 的属性或 Map 内容,否则会抛出异常。
-
remove 标签用来删除数据,有 var 和 scope 两个属性。
-
catch 标签用于捕获异常,只有 var 一个属性,用来存储抛出的异常。
-
import 标签类似于 JSP 的
<% file include %>
与<jsp:include />
,功能更加强大,甚至可以直接把 Internet 上的网页包含进来。如<c:import url="http://www.ulyssesss.com" charEncoding="utf-8">
。 -
import 标签还有 var、varReader、context、scope 四个属性。如果声明了 var 属性,目标网页不会直接显示,而是以 String 类型存储以在 var 属性的值 为变量名的变量中,scope 属性指定了变量的范围。如果声明了 varReader 属性,会将目标网页以 java.io.Reader 类型存储到 varReader 指定的变量中,供其他 JSTL 标签使用,与 var 不能同时存在。context 属性用于指定 contextPath,声明后 url 和 context 必须以"/"开头,只能加载本服务器内的网页。
-
url 标签用于使不支持 Cookie 的浏览器获取使用 Session 的功能,即 URL 重写,有 value、context、var、scope四个属性,属性的用法与 import 标签类似。
-
redirect 标签用于实现重定向功能,有 url、context 两个属性。如果指定了 context,则 context 和 url 必须以"/"开头,且 url 为 context 的相对路径。
-
param 标签用于指定参数,通常与 redirect 标签或 import 标签一同使用。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于