菜鸟2号 发表于 2013-2-6 09:29:21

JSTL(core)学习与速查

1.<c:forEach>
语法:
a、在Collection中迭代:
       <c:forEach items=”collection”  
       >
       Body 内容
       </c:forEach>
b、迭代固定的次数:
       <c:forEach
       begin=”begin”end=”end” >
       Body 内容
       </c:forEach>
 
下表是items支持的Collection对象类型
items 的值
所产生的 item 值
java.util.Collection
调用 iterator() 所获得的元素
java.util.Map
java.util.Map.Entry 的实例
java.util.Iterator
迭代器元素
java.util.Enumeration
枚举元素
Object 实例数组
数组元素
基本类型值数组
经过包装的数组元素
用逗号定界的 String
子字符串
javax.servlet.jsp.jstl.sql.Result
SQL 查询所获得的行
 
下表是varStatus的属性
特性
Getter
描述
current
getCurrent()
当前这次迭代的(集合中的)项
index
getIndex()
当前这次迭代从 0 开始的迭代索引
count
getCount()
当前这次迭代从 1 开始的迭代计数
first
isFirst()
用来表明当前这轮迭代是否为第一次迭代的标志
last
isLast()
用来表明当前这轮迭代是否为最后一次迭代的标志
begin
getBegin()
begin 属性值
end
getEnd()
end 属性值
step
getStep()
step 属性值
 
说明:
a.在标签中,遍历打印元素一般有两种写法
<c:forEach var= “tuser”, items = “list”>
       ${tuser.name}  //直接用EL表达式即可
       <c:out value = “${tuser.name}”>  //使用<c:out>标签打印
</c:forEach>
这两种方法在原理上是一样的。
b.关于var的疑问
我们知道EL表达式只能取jsp 4个隐藏对象的值,那么如何去这里的”tuser”呢。查看JSTL1.2源码得到var 是把这个变量定义在pageScope中,并且作用域为在<c:forEach>标签中。
2.<c:if>
语法:
1、无body的情况
       <c:if test=”testCondition”var=”varName” />
2、有body的情况
       <c:iftest=”testCondition” var=”varName”>
             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 >子标签
 <c:when> 它是<c:choose>的一个分支
语法:
       <c:when test=”testCondition”>
             Body内容
</c:when>
注意:它有两个限制:
(1) 必须以<c:choose>作为它的父标签
(2) 必须在<c:otherwise>标签之前出现
       <c:otherwise>他代表了<c:choose>的最后选择相当于jsp的<%switch(i){case 0: … case 1:… default :}%> 中的default语句。
语法:
       <c:otherwise>
             Conditional block
</c:otherwise>
它的使用有两个限制:
(1) 必须以<c:choose>作为它的父标签;
(2)  必须以<c:choose>的最后分支方式出现;
4.<c:out>
语法:
没有BODY的时候
<c:out value=”value” =”{true|false}” />
有BODY的时候
<c:out value=”value” =”{true|false}”>
       这里是BODY,可以是任何合法的jsp或者是html代码。
</c:out>
注意:escapeXml的作用是是否将代码交给xml解析器解释,true为交给xml解析器解释,false为交给浏览器解释。
5.<c:set>
这个标签用于在某个范围(page,request,session,application)里面设置特定的值(默认为page),或者设置某个已经存在的javabean的属性。类似于<%request.setAttribute(“name”,value)%>
语法:
(1)使用value属性设置一个特定范围里面的属性:
<c:set value=”value” var=”varName” / >
(2)使用value属性设置一个特定范围里面的属性,带有BODY:
<c:set value=”value” var=”varName” >
       Body content
</c:set>
(3)设置某个特定对象的一个属性:
<c:setvalue=”value” target=”target” property=”propertyName”/ >
(4)设置某个特定对象的一个属性, 带有BODY:
<c:set value=”value” target=”target” property=”propertyName”>
       Body content
</c:set>
6. <c:remove>
它的作用是删除某个变量或者属性。类似于<%session.removeAttribute(“name”)%>
语法:
<c:removevar=”varName” / >
7. <c:catch>
它的作用是捕捉由嵌套在它里面的标签所抛出来的异常,类似于<%try{}catch{}%>语法:
<c:catch>nested actions</c:catch>
注意:
查看源码得这里的catch捕获的就是Throwable接口,并把这个捕获的异常的对象,存入varName,范围是pageScope。
8. <c:import>
导入一个url的资源,相当于jsp 中的<jsp:include page=”path”>标签,同样也可以把参数传递到被导入的页面。
语法:
a、资源的内容使用string对象向外暴露
             <c:import url=”url”

>
Optional body content for <c:param>subtags
</c:import>
b、资源的内容使用redirect对象向外暴露
             <c:import url=”url”
varReader=”varReaderName”
>
Body content where varReader is consumedby another action
</c:import>
9. <c:redirect>
把客户的请求发送到另一个资源,相当于jsp中的<% request.sendRedirect(“other.jsp”)%>或者servlet中的RequestDispatch.forward(“other.jsp”)的功能。
语法:
a、没有body的情况
             <c:redirect url=”value” />
b、有body,在body 中查询指定的参数
             <c:redirect url=”value” >
                    <c:param> subtags
             </c:redirect>
10.<c:url>
用于构造URL,主要的用途是URL的重写。
语法:
a、没有body的情况
             <c:url value=”value”
/>
b、有body ,并在body 中有重写的参数
             <c:url value=”value”
>
      <c:param />
</c:url>
11. <c:param>
它是在<c:import>,<c:redirectt>,<c:url>中添加请求的参数。和一般的参数没什么区别。
语法:
a、参数的值使用value属性指定
             <c:param name=”name” value=”value”/>
b、参数的值在body 中指定
             <c:param name=”name”>
                     参数值
             </c:param>
 
页: [1]
查看完整版本: JSTL(core)学习与速查