v JSTL
库 URI 前缀
Core http://java.sun.com/jstl/core c
XML processing http://java.sun.com/jstl/xml x
I18N formation http://java.sun.com/jstl/fmt fmt
Database access http://java.sun.com/jstl/sql sql
Ø JSTL定义了简单的表达式语言(EL),用于将行为属性设为在运行时计算出来的动态值。
EL表达式以“${”符开始,以”}”符结尾
Ø 表达式语言操作符:
操作符 执行的操作
. 访问bean的属性或Map条目
[] 访问数组或List元素
() 将子表达式分组以改变操作优先级
+-*/ 数学运算
Empty 对空的变量值(null)或空的String、数组、map、list进行测试
EL语言的empty操作符避免了被迫出来null值和空字符串(“”)之间的差异。Empty
还可以为空的数组、java.urit.List或java.util.Map求值,也就是说它可以用来测试多数常见类型的空的集合。
Ø 隐含的EL变量
变量名 描述
pageScope 所有页面作用域变量的集合(java.util.Map)
requestScope 所有请求作用域变量的集合(java.util.Map)
SessionScope 所有会话作用域变量的集合(java.util.Map)
applicationScope 所有应用程序作用域变量的集合(java.util.Map)
param 所有请求参数的集合,每个参数是单个的String(java.util.Map)
paramvalues
header
headerValues
cookie
initParam 所有应用程序初始化请求参数的集合,每个参数是单个的String
(java.util.Map)
pageContext javax.servlet.jsp.PageContext类的一个实例,提供了对各种请求数据的访
问。
例:<c:out value=”${param.userName}”/>
Ø<c:out>: 把指定为value属性的表达式的结果添加到应答中。
Ø JSTL表达式语言(EL)也支持对bean属性的访问。
<jsp:useBean id=”cartoon”
Class=”com.ora.jsp.CartoonBean”/>
<img src=”images/<c:out value=${cartoon.fileName}>”>
Ø <c:out>
属性名:escapeXml 如果URL编码则true,如果不URL编码则false,默认为true,(可选)
Default:可选,如果值属性为空时使用(可选)
<c:out>在输出时会自动地作URL编码转换
Ø <c:forEach>
属性名: itmes:反复迭代的集合,如果为Null,则不会执行迭代,如果没有指定,则必须指
定开始和结束属性。,(可选)
Var: 迭代时当前元素值,(可选)
varStatus:保存LoopTagStatus对象变量(可选)
begin:第一个索引,该索引从0开始(可选)
end: 最后一个索引,该索引从0开始(可选)
step:每次迭代的索引增量(可选)
例:
<c:forEach var="i" begin="1" end="10" step="2" varStatus="status"> <c:out value="${i}"/> status.index= <c:out value="${status.index}"/> status.count=<c:out value="${status.count}"/> <br/></c:forEach>
结果:
1 status.index= 1 status.count=1
3 status.index= 3 status.count=2 5 status.index= 5 status.count=3 7 status.index= 7 status.count=4 9 status.index= 9 status.count=5
status的变量有:
index number The index of the current item in the underlying collectioncount number The position of the current round of iteration, starting with 1first boolean Whether the current round of iteration is the firstlast boolean Whether the current round of iteration is the last
Ø <c:if>
属性名 描述
Test 判断表达式(必须)
Var 保存boolean结果的变量名称(可选)
Scope 变量作用域,默认为page作用域(可选)
Ø <c:when>
属性名 描述
Test 判断表达式(必须)
<c:choose>会从一组相关的互斥选项中选择一个
例:
<c:choose>
<c:when test=”${param.gender == ‘f’}”>
… …
</c:wher>
<c:otherwise>
… …
</c:otherwise>
</c:choose>
Ø <c:set>
属性名 描述
Value 要设置的值,(必须)
Var 保存值的变量的名称(可选),如果没有指定,就必须使用target和property属性。
Scope var指定的变量的作用域,默认为page作用域
Target 带有property指定的属性的Map或JavaBeans对象(可选)
Property 设置target指定的对象的属性名(可选)
注意事项:
<c:set var="four" value="xxxxx"/><%=pageContext.getAttribute("four")%>
从上面我们可以看到:
pageScope,requestScope,sessionScope,applicationScope全部是通过getAttribute,setAttribute来访问<c:set/>设置的变量。也就是说c:set这种标签时将变量放置在以上page,request,session,application的attribute中。
如果<% java.lang.String name="hello";%>定义了一个变量,不可以通过${}来访问,只可以通过<% %>这种形式访问。