JavaWeb体系结构的理解-.EL与JSTL
通过EL(Expresssion Language表达式语言JSP2.0引入的新特性)可以简化JSP开发中对对象的而引用,从而规范化页面代码。通过JSTL(Java Server Pages Standard Tag LibraryJSP标准标签库)可以取代JSP中嵌入的Java代码。这两个技术都是方便开发人员高效开发的。
EL的语法、运算符与隐含对象
EL一般结合JSTL一起使用,可以访问JavaBean的属性、JSP的作用域、获得PageContext对象。EL的语法是以${开头,以}结尾。他有访问数据运算符、算术运算符、逻辑运算符、条件运算符、empty运算符等。
运算符
功能
例子
结果
备注
+-*/%
算术运算
${17%5}
2
== != eq ne lt gt le ge
关系运算符
${7<6}${7 lt 6}
False
&& || ! and or not
逻辑
${!true}
False
为了访问Web程序中的数据,EL提供了11个隐含对象。这些对象类似JSP的内置对象,除了PageContext对应于JavaBean外,其它都是Java.util.Map类型。获取方法为去掉get,首字母小写。
对象
获取方法
功能
备注
页面上下文对象
Request,Response, Out,session,exception,page
servletContext
${pageContext.request}
获取相应信息
访问作用域范围的隐含对象
pageScope,requestScope,
sessionScope,applicationScope
返回作用范围内的属性值集合Map
访问环境信息的隐含对象
Param,paramvalues,header,
headeValues,ininParam,cookie
JSTL标签库
JSTL包括5个标签库:核心c <c:forEach>、格式fmt <fmt:parseDate>、SQL sql<sql:query>、XML xml<xml:forEach>、函数fn<fn:split>。
内容
功能
例子
备注
JSTL核心标签库
表达式标签<c:out><c:set>
<c:remove><c:catch>
输出、设置、删除、异常捕获
<c:out value=”name”>
相当于JSP语法的<%=name%>或者EL表达式的${name}
流程控制标签<c:if><c:choose>
<c:when><c:otherwise>
条件判断、条件选择、条件测试、其他条件
注意没有else标签。When和otherwise只用在choose标签里
循环标签<c:forEach><c:forTokens>
<c:forEach $item=”${reqeusetScope.list}” var=”key” varStatus=”id” begin=”1”}${id.index}</c:forEach>
格式标签库
<fmt:parseDate>
<fmt:formatDate>
格式化日期
下面以星期条件问候和遍历数组为例说明JSTL和EL的结合使用方法:
根据今天是星期几,来决定显示在页面上不同的问候语句。
<c:set var="week">
<%=new java.util.Date().getDay()%>
</c:set>
<c:choose>
<c:when test="${week==0}">7</c:when>
<c:otherwise><c:out value="${week}"/></c:otherwise>
</c:choose>
<c:when test="${week==0||week==6}">sleep</c:when>
<c:when test="${week==1}">working</c:when>
<c:otherwise>Work hard!</c:otherwise>
</c:choose>
遍历数组
[java]
<%
String []arr = {"football","basketball"};
request.setAttribute("arr",arr);
%>
<c:forEach items="${requestScope.arr}" var="ball" varStatus="id">
${id.index}${ball}
</c:forEach>
补充:Web开发 , 其他 ,