1:<c:out>标签
<c:out value="${Object }" escapeXml="${boolean }" default="${Object }" /> <c:out value="${Object }" escapeXml="${boolean }"> ${Object} </c:out>
注意:
a:
value的类型为Object,即value可以为Reader对象,使用该标签输出Reader对象时,如果要读取的文件的内容使用了非西欧字符集编码(如UTF-8、GBK等),应使用InputStreamReader类的构造方法指定读取文件内容时所采用的字符集编码(应和要读取的文件内容的字符集编码保持一致)。
Reader r=new InputStreamReader(new FileInputStream(path) , " utf-8 ");
b:
如何将value置为null ?
1:使用JSP表达式 <c:out value="<%=null %>" />
2:使用E L表达式 <c:out value="${null }" />
下面的方法不能见value置为null
<c:out value="null" />
c:
default属性和标签体不能同时指定默认值,否则抛出异常。
2:<c:set>标签
a:“var”版
<c:set var="String" value="${Object }" scope="String" />
<c:set var="String" scope="String">
${Objet}
</ c:set>
属性:
var:待设置的web域中的属性的名字
value:属性的值
scope:待保存或删除的属性所属的web域,可选值为 page、request、session、application
注意:
如果不指定value属性或标签体,该标签将删除scope指定的域中的var指定的属性
b:“target”版
<c:set target="${Object}" property="${String}" value="${Object}" />
<c:set target="${Object}" property="${String}">
${Object}
</c:set>
属性:
target:指定要设置的对象,JavaBean或Map
property:待设置的target对象的属性名称
value:同var版
注意:
1:如果不指定value属性或标签体,该表签将删除target指定的Map对象中的property指定的
key-value对,或将target指定的JavaBean对象的property属性置为null。
2:如果属性值不能转换成property属性指定的对象类型,该标签将抛出异常。
注意:
1:该标签不能同时指定value属性和标签体,否则将抛出异常。
2:如果同时指定var和target,那么var属性的优先级更高。
3:var和target属性必须至少有一个,如果2个属性都没有或2属性都为null,那么标签将抛出JspTagException异常。
3:<c:remove>标签
<c:remove>标签用于删除web域(page、request、session、application)中的属性,不能用来删除JavaBean和Map对象中的属性、键值对。
<c:remove var="String" [scope="String"] />
属性:
var:String 不支持动态属性值 待删除的属性的名称
scope:String 不支持动态属性值 待删除的属性所在的web域
4:<c:catch>标签
该标签用于捕获任何Java代码或标签抛出的异常。
<c:catch [value="varName"]>
</c:catch>
属性:
var:String 不支持动态属性值
表示捕获到的异常对象。
如果指定该属性,该标签会以var属性指定的名称将异常对象保存在page域中。
如果未指定该属性,则该标签只捕获异常,不保存异常。
补充:
通过异常对象输出异常信息的方式:
1:<c:out value="${e.message}"/>
输出举例:Cannot convert xxx of type class java.lang.String to class
java.util.Date
2:<c:out value="${e.stackTrace}"/>
输出举例:[Ljava.lang.StackTraceElement;@157ea4a
3:<c:out value="${e}">
输出举例:java.lang.IllegalArgumentException:Cannot convert xxx of type
class java.lang.String to class java.util.Date
5:<c:if>标签
<c:if test="${boolean}" var="varName" scoope="page"> <c:if test="${boolean}" var="varName" scope="page"> 如果test指定属性的运算结果为真,则执行此处的代码。 </c:if> 注意: 当指定scope属性时,必须指定var,否则该标签将抛出异常。
6:<c:choose> <c:when> <c:otherwise>标签
<c:choose> <c:when test="${boolean}"> 代码 </c:when> <c:when test="${boolean}"> 代码 </c:when> <c:otherwise> 代码 </c:otherwise> <c:choose>
注意:
1:<c:when>和<c:otherwise>标签必须是<c:choose>标签的子标签,不能单独使用。
2:<c:choose>标签中包含一个或多个<c:when>标签,包含0个或1个<c:otherwise>标签。
3:<c:when>标签必须放在<c:otherwise>标签的前面。
4:<c:when>和<c:otherwise>标签中可以包含任意的JSP代码。
5:<c:choose>标签中除了包含<c:when>和<c:otherwise>标签外,还可以包含空格、\r\n、制表符和JSP注释,除此之外不能在<c:choose>标签中(<c:when>和<c:otherwise>标签的外部)
包含其他任何字符,否则<c:choose>标签将抛出异常。
7:<c:forEach>标签
语法1:根据集合对象进行迭代 <c:forEach [var="varName"] items="${collection}" [varStatus="varStatusName"] [begin="${beginNum}"] [end="${endNum}"] [step="${steoNum}"]> 需迭代执行的代码 </c:forEach> 语法2:根据指定的次数进行迭代 <c:forEach [var="varName"] [varStatus="varStatusName"] begin="${beginNum}" end="${endNum}" [step="${stepNum}"]> 需迭代执行的代码 </c:forEach>
属性名 | 是否支持动态属性值 | 属性类型 | 属性描述 |
var | false | String | 将当前迭代元素保存在page域中所用的属性名 |
items | true | (见下面) | 用于迭代的集合对象 |
varStatus | false | String | 将当前迭代元素状态信息对象保存在page域中所用的属性名 |
begin | true | int |
如果指定items属性,就从集合中第begin个元素开始迭代。 如果未指定items属性,那么就从begin指定的数值开始迭代,直到end指定的值。 begin属性的索引值从0开始。 |
end | true | int |
如果指定items属性,则迭代到第end个集合元素为止。 如果未指定items属性,则迭代到end指定的值。 |
step | true | int | 迭代的步长,即每迭代一步的迭代增量。 |
注意:
1:如果指定begin属性,该属性的值必须大于或等于0,否则会抛出java.servlet.jsp.JspTagException异常。
2:如果指定end属性,该属性的值不能小于begin属性的值,否则不会进行迭代操作。
3:如果指定step属性,该属性的值必须大于或等于0,否则会抛出java.servlet.jsp.JspTagException异常。
4:如果items属性的值为null,或items属性指定的集合对象不存在,items属性值将被作为一个空集合对待,不会进行任何迭代操作。
5:如果begin属性值大于或等于集合对象的元素个数,则不会进行迭代操作。
6:如果begin属性值在有效范围内,但end属性值大于或等于集合对象的元素个数,则迭代到集合对象的最后一个元素为止。
7:items属性支持如下的数据类型;
1:任意类型的数组
2:java.util.Collection
3: java.util.Iterator
4: java.util.Enumeration
5: java.util.Map
6: String
如果items属性值是String类型该字符串必须用逗号分隔。<c:forEach>标签会将以逗号分隔的字符串当做String数组来处理(每一个被逗号分隔的子串相当于String数组中的一个元素)