JSTL(core)学习与速查

1.<c:forEach>

语法:

a、在Collection中迭代:

       <c:forEach [var=”varName”] items=”collection”  [varStatus=”varStatusName”]

       [begin=”begin”] [end=”end”] [step=”step”]>

       Body 内容

       </c:forEach>

b、迭代固定的次数:

       <c:forEach [var=”varName”] [varStatus=”varStatusName”]

       begin=”begin” end=”end” [step=”step”]>

       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” [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 >子标签

 <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” [escapeXml]=”{true|false}” [default=”defaultValue”]/>

BODY的时候

<c:out value=”value” [escapeXml]=”{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” [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>

6. <c:remove>

它的作用是删除某个变量或者属性。类似于<%session.removeAttribute(“name”)%>

语法:

<c:remove var=”varName” [scope= “{page|request|session|application}”]/ >

7. <c:catch>

它的作用是捕捉由嵌套在它里面的标签所抛出来的异常,类似于<%try{}catch{}%>语法:

<c:catch [var=”varName”]>nested actions</c:catch>

注意:

查看源码得这里的catch捕获的就是Throwable接口,并把这个捕获的异常的对象,存入varName,范围是pageScope

8. <c:import>

导入一个url的资源,相当于jsp 中的<jsp:include page=”path”>标签,同样也可以把参数传递到被导入的页面。

语法:

a、资源的内容使用string对象向外暴露

              <c:import url=”url” [context=”context”]

[var=”varName”] [scope=”{page|request|session|application}”]

[charEncoding=”charEncoding”]>

Optional body content for <c:param> subtags

</c:import>

b、资源的内容使用redirect对象向外暴露

              <c:import url=”url” [context=”context”]

varReader=”varReaderName”

[charEncoding=”charEncoding”]>

Body content where varReader is consumed by another action

</c:import>

9. <c:redirect>

把客户的请求发送到另一个资源,相当于jsp中的<% request.sendRedirect(“other.jsp”)%>或者servlet中的RequestDispatch.forward(“other.jsp”)的功能。

语法:

a、没有body的情况

              <c:redirect url=”value” [context=”context”]/>

b、有body,在body 中查询指定的参数

              <c:redirect url=”value” [context=”context”]>

                     <c:param> subtags

              </c:redirect>

10.<c:url>

用于构造URL,主要的用途是URL的重写。

语法:

a、没有body的情况

              <c:url value=”value” [context=”context”]

[var=”varName”] [scope=”{page|request|session|application}”]/>

b、有body ,并在body 中有重写的参数

              <c:url value=”value” [context=”context”]

[var=”varName”] [scope=”{page|request|session|application}”]>

      <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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值