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 collection
count number The position of the current round of iteration, starting with 1
first boolean Whether the current round of iteration is the first
last 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";%>定义了一个变量,不可以通过${}来访问,只可以通过<% %>这种形式访问。