揭秘EL表达式语言的基础总结(3)_JSP教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:揭秘JAVA面试问题宝典
大家找工作就要面试,有面试就有对付面试的办法。以下一些题目来自我朋友痛苦的面试经历,他给我总结了一下,我拿来和大家分享!提这些问题的公司包括IBM,E*Trade,Siebel,Motorola,SUN,以及其它大小公司。 面试是没什么道理可讲的,它的题目有的不合情理、脱


补充: 
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %> 

FOREACH: 

<c:forEach items="${messages}" 
var="item" 
begin="0" 
end="9" 
step="1" 
varStatus="var"> 
…… 
</c:forEach> 

OUT: 

<c:out value="${logininfo.username}"/> 
c:out>将value 中的内容输出到当前位置,这里也就是把logininfo 对象的 
username属性值输出到页面当前位置。 
${……}是JSP2.0 中的Expression Language(EL)的语法。它定义了一个表达式, 
其中的表达式可以是一个常量(如上),也可以是一个具体的表达语句(如forEach循环体中 
的情况)。典型案例如下: 
Ø ${logininfo.username} 
这表明引用logininfo 对象的username 属性。我们可以通过“.”操作符引 
用对象的属性,也可以用“[]”引用对象属性,如${logininfo[username]} 
与${logininfo.username}达到了同样的效果。 
“[]”引用方式的意义在于,如果属性名中出现了特殊字符,如“.”或者“-”, 
此时就必须使用“[]”获取属性值以避免语法上的冲突(系统开发时应尽量避免 
这一现象的出现)。 
与之等同的JSP Script大致如下: 
LoginInfo logininfo = 
(LoginInfo)session.getAttribute(“logininfo”); 
String username = logininfo.getUsername(); 
可以看到,EL大大节省了编码量。 
这里引出的另外一个问题就是,EL 将从哪里找到logininfo 对象,对于 
${logininfo.username}这样的表达式而言,首先会从当前页面中寻找之前是 
否定义了变量logininfo,如果没有找到则依次到Request、Session、 
Application 范围内寻找,直到找到为止。如果直到最后依然没有找到匹配的 
变量,则返回null. 
如果我们需要指定变量的寻找范围,可以在EL表达式中指定搜寻范围: 
${pageScope.logininfo.username} 
${requestScope.logininfo.username} 
${sessionScope.logininfo.username} 
${applicationScope.logininfo.username} 
在Spring 中,所有逻辑处理单元返回的结果数据,都将作为Attribute 被放 
置到HttpServletRequest 对象中返回(具体实现可参见Spring 源码中 
org.springframework.web.servlet.view.InternalResourceView. 
exposeModelAsRequestAttributes方法的实现代码),也就是说Spring 
MVC 中,结果数据对象默认都是requestScope。因此,在Spring MVC 中, 
以下寻址方法应慎用: 
${sessionScope.logininfo.username} 
${applicationScope.logininfo.username} 
Ø ${1+2} 
结果为表达式计算结果,即整数值3。 
Ø ${i>1} 
如果变量值i>1的话,将返回bool类型true。与上例比较,可以发现EL会自 
动根据表达式计算结果返回不同的数据类型。 
表达式的写法与java代码中的表达式编写方式大致相同。 

IF / CHOOSE: 

<c:if test="${var.index % 2 == 0}"> 

</c:if> 
判定条件一般为一个EL表达式。 
<c:if>并没有提供else子句,使用的时候可能有些不便,此时我们可以通过<c:choose> 
tag来达到类似的目的: 
<c:choose> 
<c:when test="${var.index % 2 == 0}"> 

</c:when> 
<c:otherwise> 

</c:otherwise> 
</c:choose> 
类似Java 中的switch 语句,<c:choose>提供了复杂判定条件下的简化处理手法。其 
中<c:when>子句类似case子句,可以出现多次。上面的代码,在奇数行时输出“*”号, 
而偶数行时输出“!”。 
----------------------------------------- 
再补充:  
         1     EL表达式用${}表示,可用在所有的HTML和JSP标签中 作用是代替JSP页面中复杂的JAVA代码.  
         2    EL表达式可操作常量 变量 和隐式对象. 最常用的 隐式对象有${param}和${paramValues}. ${param}表示返回请求参数中单个字符串的值. ${paramValues}表示返回请求参数的一组值.pageScope表示页面范围的变量.requestScope表示请求对象的变 量.sessionScope表示会话范围内的变量.applicationScope表示应用范围的变量.  
         3    <%@   page isELIgnored="true"%> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言.  
         4    EL语言可显示 逻辑表达式如${true and false}结果是false     关系表达式如${5>6} 结果是false      算术表达式如 ${5+5} 结果是10  
         5    EL中的变量搜索范围是:page request session application    点运算符(.)和"[ ]"都是表示获取变量的值.区别是[ ]可以显示非词类的变量 

分享:揭秘几个提升JSP应用程序效率的小方法
本文介绍了几个调整JSP和servlet的一些非常实用的方法,它可使你的servlet和JSP页面响应更快,扩展性更强。而且在用户数增加的情况下,系统负载会呈现出平滑上长的趋势。我将通过一些实际例子和配置方法使得你的应用程序的性能有出人意料的提升。其中,某些

共3页上一页123下一页
来源:模板无忧//所属分类:JSP教程/更新时间:2010-02-06
相关JSP教程