JSTL,是英文java standar tag library(java标准标签库),因此,这个库是得到java ee规范支持的,不需要额外地引入其他框架。这个库主要包含了四个部分:核心库、函数库、操作数据库的库、国际化支持的库,这里讲得仅仅是核心库。JSTL的核心库中,提供了通用标签,条件标签,迭代标签和url标签,在这里,也不对核心库中所有的标签进行讲解,只讲解最常用到的几个标签。
通用标签
属性 | 类型 | 描述 |
value | Object,默认是字符串,如果是变量,需要显示使用EL ${变量} | 将变量输出到JSP页面上 |
Default | Object,默认是字符串 | 如果访问不到value里面的值,那么将输出默认值 |
escapeXml | Boolean | 默认为true,会对<、>、&这些html特殊字符进行编码 |
使用案例,假设用户登录成功,那么用户跳转到欢迎页面Welcome.jsp,这个页面上输出文本:欢迎回来,xxx。首先,用户登录成功后,将User类的变量user设置到session中去。在欢迎页面 使用<c:out value=”${sessionScope.user.username}”/>就可以输出登录成功的用户的用户名。
<c:set>
该标签是用来往内置对象page,equest,session,application中设置变量或者Java Bean中设置属性的。它的主要属性如下:
属性 | 类型 | 描述 |
Value | Object | 变量值 |
Var | String | 对应的名称 |
scope | String | 设置的范围,可以是page、request、session、application |
target | String | 支持往JavaBean或者Map中设置属性 |
Property | Object | Java Bean中的属性 |
<c:remove>
这个标签支持我们设置内置对象和Java Bean、Map的属性,很强大。移除内置对象page、request、session、application的属性变量,相当于page/request/session/application.setAttribute(“name”, null)。主要的属性如下:
属性 | 类型 | 描述 |
Var | String | 内置对象的变量名称 |
Scope | String | 指定内置对象,可以是page、request、session、application |
<c:catch>
在通常的java代码中,我们可以使用try…catch来进行异常捕捉,那么在JSP页面上,使用<c:catch>可以对一段脚本进行异常捕捉。它的主要属性如下:
属性 | 类型 | 描述 |
Var | String | 将捕捉到的异常信息放入变量中 |
<c:catch var=”exception”>
<%
String str_num = request.getParameter(“num”);
Int num = Integer.parseInt(str_num);
%>
</catch>
这样即使程序在上段代码中抛出异常了,也能正常运行,而不是出现500错误,此外,通过判断exception中的值是否为空或者null就可以知道到底有没有抛出异常
<if test=”${pageScope.exception==null or pageScope.exception.equals(“”)”>
你输入的参数非法
</if>
迭代标签
属性 | 类型 | 描述 |
Var | String | 迭代的变量名称 |
Items | Object | 需要迭代的集合或者书籍 |
VarStatus | String | 迭代时代表迭代状态的变量 |
Begin | int | 集合开始的下标 |
End | Int | 集合结束的下标 |
Step | int | 迭代时候的步进量,默认为1 |
<c: iterator items=”${request.records}” var=”user” varstatus=”stat”>
序号<c:out value=”${stat.index + 1}” />
用户名称<c:out value=”${user.username}” />
</c:iterator>
条件标签
最常用到的控制标签就是条件判断了,在JSTL核心库中,主要属性就只有一个,那就是test="表达式"。
<c:if test="expression">body</c:if>和 |
<c:choose> <c:when test="expression1"> body1 </c:w]hen> <c:when test="expression 2"> body2 </c:when> <c:otherwise> body3 </c:otherwise> </c:choose> |
url标签
<c:url>
用来生成一个url,它的使用如下:
<c:url value="url地址" var="varName" [context="context"] [scope="page|request|session|application"]/>
如果需要带参数,就带上body:
<c:url value="url地址" var="varName" [context="context"] [scope="page|request|session|application"]>
<c:param name="paramName" value="paramValue"/>
</c:url>
<c:redirect>
用于客户端重定向,支持带参数的重定向:
<c:redirect url="yourUrl" [context="context"]>
<c:param name="paramName" value="paramValue"/>
</c:redirect>