USING JSP TAG LIBRARIES
JSP STANDARD TAG LIBARARY(JSTL)
1.<c:forEach>标签的语法定义如下所示。
<c:forEach var="name" items="expression" varStatus="name"
begin="expression" end="expression" step="expression">
body content
</c:forEach>
<c:forEach>标签具有以下一些属性:
l var:迭代参数的名称。在迭代体中可以使用的变量的名称,用来表示每一个迭代变量。类型为String。
l items:要进行迭代的集合,包括JAVA所有集合类型,迭代器,枚举器和基本数组。
l varStatus:迭代变量的名称,用来表示迭代的状态,可以访问到迭代自身的信息。
l begin:如果指定了items,那么迭代就从items[begin]开始进行迭代;如果没有指定items,那么就从begin开始迭代。它的类型为整数。
l end:如果指定了items,那么就在items[end]结束迭代;如果没有指定items,那么就在end结束迭代。它的类型也为整数。
l step:迭代的步长。
2. <c:if>; 它用来做条件判断,功能类似jsp中的<%if(boolean){}%>
语法:
1、无body的情况
<c:if test=”testCondition” var=”varName” [scope=“{page|request|session|application}”]/>
2、有body的情况
<c:if test=”testCondition” var=”varName” [scope=“{page|request|session|application}”]>
Body内容
</c:if>
3.<c:choose>; 它是用于条件选择,和<c:when>,<c:otherwise>一起使用,它的条件选择是排斥性的,相当于jsp中的<%switch(i){case 0: … case 1:… default :}%>,也可以完成<%if{}…else if{}….else if{} else{} %>的功能
语法:<c:choose>
Body内容(<c:when>,<c:otherwise>)
</c:choose>
注意:它的body内容只能是由以下的元素组成:
1. 空格;
2. 0个或多个<c:when>子标签,<c:when>必须在<c:otherwise>子标签之前出现;
3. 0个或多个<c: otherwise >子标签
4.<c:set>将某个变量存入page , request , session , application范围的对象,或是设定JavaBean,Map的属性,和值
1、使用value属性设置一个特定范围里面的属性:
<c:set value=”value” var=”varName” [scope= “{page|request|session|application}”]/ >
2、使用value属性设置一个特定范围里面的属性,带有BODY:
<c:set value=”value” var=”varName” [scope= “{page|request|session|application}”] >
Body content
</c:set>
3、设置某个特定对象的一个属性:
<c:set value=”value” target=”target” property=”propertyName”/ >
4、设置某个特定对象的一个属性, 带有BODY:
<c:set value=”value” target=”target” property=”propertyName” >
Body content
</c:set>
var 要设置的变量名
value 设置的值
target 要设置的JavaBean名称,或Map名称
property JavaBean的属性或Map的key
scope 变量所在的范围
5.<c:remove>从page , request , session , application范围的对象内移除某个变量或属性
语法:<c:remove var=”要移除的变量或属性名称”
scope=”page | request | session | application” />
注意:如未指定scope属性,则会同时从page , request , session , application范围的对象内移除指定
的变量或属性。
6.<c:out>将执行结果由JspWriter对象输出
语法:<c:out value=”执行表达式的结果”
escapeXml=”设定是否转换XML的特殊字符true | false”
default=”如果value结果为null或空字符串,则输出default的值” />
7.<c:forTokens>针对某个字符串,由指定的字符为标志,依次取每个子串。
语法:<c:forTokens var=”存入当前的对象”
items=”被处理的字符串”
delims=”分隔子串的字符”>
标签主体
</c:forTokens>
8.<c:url>指定或改写某个URL
语法:<c:url vaule=”执行的URL”
context=”相同container的其它context”
var=”存入被引入的URL内容”
scope=”范围”
标签主体,可以加入<c:param>标签来指定参数
</c:url>
9.<c:import>导入其它网页的内容,相当于<jsp:include>标准动作(于执行时期包含进来)
语法:<c:import url=”被包含进来的网址或文件”
context=”相同container的其它context”
var=”url包含的内容”
scope=”范围”
charEncoding=”被包含网站或文件的字符编码”>
标签主体,可以加入<c:param>标签来指定参数
</c:import>
10.<c:redirect> 调用HttpServletResponse的sendRedirect()方法,来重定向请求
语法:<c:import url=”重定向到的目标URI”
标签主体,可以加入<c:param>标签来指定参数
</c:redirect>
11.<c:param>传入某个参数
语法:<c:param name=”属性名称” value=”属性值” />
12.<c:catch>
它的作用是捕捉由嵌套在它里面的标签所抛出来的异常。类似于<%try{}catch{}%>,它的语法是:<c:catch [var=”varName”]>nested actions</c:catch>
举例:c_catch.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<html>
<head>
<title>JSTL:catch的使用</title>
</head>
<body bgcolor="#FFFFFF">
<c:catch var="error">
<%
Integer.parseInt("sdkfj");
%>
</c:catch>
<hr>异常:
<c:out value="${error}"/>
<hr>异常 exception.getMessage=
<c:out value="${error.message}"/>
<hr> 异常exception.getCause=
<c:out value="${error.cause}"/>
</body>