Java for Web学习笔记(二一):EL(1)什么是EL
来源:互联网 发布:如何才能避免淘宝同款 编辑:程序博客网 时间:2024/05/16 17:48
使用jsp,它的能力太大需要注意安全,同时对于UI编程人员也过于复杂,可以使用EL(Expression Language)解决这些问题。最初作为JSTL的一部分,后来分离出来作为JSP的一部分,作为Java Unified Expression Language(JUEL)提供给JSP和JSF(Java Server Faces)。在Java EE 7时移到自己的JSR(JSR 341)(JSR是Java Specification Requests的缩写,意思是Java 规范提案。From :百度百科JSR)。
EL是什么
EL解析器需要知道在JSP中EL的开始和结束,有两种基本的EL语法:immediate evaluation(即时求值)和deferred evaluation(延后求值)。
Immediate Evaluation
顾名思义,JSP引擎在页面渲染是满足对其进行解释和求值,由于是从上到下顺序解析,解析到时,就要获值。
${expr},其中expr 是EL表达式。
这是EL的基本语法,如果我们需要在JSP中需要有类似的页面显示,又不误认为是EL,写成:\${not an EL expression}或者${not an EL expression}。
如果在JSP中,例如在HTML中要在EL前面有个\,那么可以:\${EL expression to evaluate}
Deferred Evaluation
Defferred Evalution是Unified Expression Language,主要用在JSF,很少用在JSP,虽然语法是有效的。
#{expr}
在JSF中,defferred evaluation是在页面渲染或/和在postback(回传)时获值,但在JSP中由于没有JSF的生命周期,方式是不一样的。在JSP中#{}只在JSP tag的属性中有效,延后获值至对tag的渲染,也就是tag的属性一开始并不确值,而是后面唤起方法来获值,最晚也需在tag内完成。这在JSP中很少使用。
同样,为了避免歧义,如果不是EL表达式,应该使用:
\#{not an EL expression}或者#{also not an EL expression}
然而,对于#{}仍可能有不识别的情况,我们可以在web.xml的<jsp-config>中的<jsp-property-group>中定义:
<deferred-syntax-allowed-as-literal>true</deferred-syntax-allowed-as-literal>
如果不进行全局定义,可以在jsp文件中在page属性里加上:
deferredSyntaxAllowedAsLiteral="true"
Deffered Evaluation将不在本章中涉及,实际上也很少使用。
位置
EL可以在jsp文件的任何位置,除了JSP的declarations、directives、scriptlets、expressions。
例如在HTML文本和HTML的tag属性中:
The user will see ${expr} text and will know that${expr} is good.
<input type="text" name="something" value="${expr}" />
例如在JSP的tag属性中:
<c:url value="/something/${expr}/${expr}" />
<c:redirect url="${expr}" />
例如在JavaScript或CSS(Cascading Style Sheets)中:
<script type="text/javascript" lang="javascript">
var employeeName = '${expr}';
var booleanValue = ${expr};
var numericValue = ${expr};
</script>
<style type="text/css">
span.error {
color:${expr};
background-image: url('/some/place/${expr}.png');
}
</style>
相关链接: 我的Professional Java for Web Applications相关文章
- Java for Web学习笔记(二一):EL(1)什么是EL
- Java for Web学习笔记(二二):EL(2)EL语法
- Java for Web学习笔记(二三):EL(3)EL的视图
- Java for Web学习笔记(二四):EL(4)流(Stream)
- EL学习过程(二)
- EL学习日记(一)
- EL学习过程(一)
- Java学习笔记:EL表达式
- EL表达式(二)
- EL表达式(一)
- Java for Web学习笔记(二):Web Containers
- 学习笔记_java web—EL表达式
- java web学习总结29:EL表达式
- java web学习总结30:EL函数库
- java web中的EL
- Java web----EL函数库
- java-web EL表达式
- Java学习笔记之JavaWeb-EL表达式
- 蛇形矩阵与DFS定向搜索相结合
- 乐学成语(2)
- Cannot connect to the Docker daemon. Is the docker daemon running on this host?
- 栈的顺序存储java写法
- centos7的vsftpd的安装和配置
- Java for Web学习笔记(二一):EL(1)什么是EL
- ASP.NET 搭建贴吧机器人(零)
- 中介者模式
- 栈的链接存储java写法
- Android-数据存储2(SQLite)及Android底层框架简介
- Ubuntu下apt-get安装Java,Tomcat
- Andorid View工作机制(3)—measure过程 下
- 【Get深一度】SCI及JCR——杂志某一年影响因子(IF)及引用频次(CI)计算的方法
- Android 新闻App的开发思路