`

EL參考

    博客分类:
  • JSP
 
阅读更多
1. EL: Expression Language
JSP 2.0 以後,EL已經正式納入成為標準規範之一。
只要支持Servlet 2.4/JSP2.0 的Container,
就可以在JSP網頁中直接使用EL了。

2. EL 語法
EL:
${sessionScope.user.sex}
JSP Scriptlet:
User user = (User)session.getAttribute("user");
String sex = user.getSex();
兩者比較,EL的語法比傳統JSP Script更方片,簡潔。

2.1 .與[]
${sessionScope.user.sex}
等於
${sessionScope.user["sex"]}
1.
當屬性名稱包含一些特殊字符,如 . 或 - 等非字母或數字的符號,就一定要使用[]
${user["My-Name"]}
2.
${sessionScope.user[data]}
data 是一個變數,假如data 的值為"sex"時-> ${sessionScope.user.sex}
假如data 的值為"name"時-> ${sessionScope.user.name}

2.2 EL變量
EL存取變量數據的方法很簡單,例如:${username}。
它的意思是取出來某一個範圍中名稱為username的變量。
默認會先從PageP範圍找,如果找不到,
再依序到Request,Session,Application範圍。
如果全部範圍都找不到時,就回傳null。
${pageScope.username}        -> 取出page範圍的username變量
${requestScope.username}     -> 取出request範圍的username變量
${sessionScope.username}     -> 取出session範圍的username變量
${applicationScope.username} -> 取出application範圍的username變量
==>
String username = (String)session.getAttribute("username");

2.3 自動轉換類型
${param.count + 20}
==>
String str_count = request.getParameter("count");
int count = Integer.parseInt(str_count);
count = count + 20;

注意:param.count 的值是 null 或 "" 的結果

2.4 EL保留字
and eq gt true
or ne le false
no lt ge null
instanceof empty div mod
避免上述的名字,以免程式編譯時發生錯誤。

3. EL Implicit Object(EL 隱含物件)
- 與範圍有關的隱含物件
applicationScope -> 從服務器一開始執行服務,到服務器關閉為止
sessionScope -> 用戶持續在服務器連接的時間。
requestScope -> 從一個JSP網頁請求到另一個JSP網頁請求之間,隨後此屬性就失效了。
pageScope -> 單單一頁JSP Page的範圍(Scope)。
- 與輸入有關的隱含物件
param
paramValues
- 其他隱含物件
cookie
header
headerValues
initParam
pageContext

3.2 與輸入有關的隱含物件
${param.name}
${paramValues.name}
==>
request.getParameter(String name)
request.getParameterValues(String name)
例:Param.html 傳信息到Param.jsp

3.3 其他隱含物件
- cookie
${cookie.userCountry}
- header 和 headerValues
${header["User-Agent"]} ,不能寫成${header.User-Agent}
- initParam
如果要取WEB站台的環境參數時,可以使initParam隱含物件
當web.xml裡
  <context-param>
  <param-name>userid</param-name>
  <param-value>mike</param-value>
  </context-param>
取值:
${initParam.userid}
==>
String userid = (String)application.getInitParameter("userid"); 
- pageContext
${pageContext.request.queryString}取得請求的參數字符串
${pageContext.request.requestURL}取得請求的URL,但不包含請求之參數字符串
${pageContext.request.contextPath}服務的web application的名稱
${pageContext.request.method}取得HTTP的方法(GET,POST)
${pageContext.request.protocol}取得使用協議(HTTP/1.1,HTTP/1.0)
${pageContext.request.remoteUser}取得用戶名稱
${pageContext.request.remoteAddr}取得用戶的IP地址
${pageContext.session.new}判斷session是否為新的,所謂新的session,表示剛由server產生而client尚未使用
${pageContext.session.id}取得session的ID
${pageContext.servletContext.serverInfo} 取得主機端的服務信息

備註:
${}前有 \ 的話,JSP 就不當成EL來執行

4. EL算術運算符
+ 加,例:${17+5} -> 22
- 減,例:${17-5} -> 12
* 乘,例:${17*5} -> 85
/ 或 div 除,例:${17/5} -> 3
% 或 mod 餘數,例:${17%5} -> 2

5. EL關係運算符
== 或 eq 等於 例:${5 == 5} -> true
!= 或 ne 不等於 例:${5 != 5} -> false
< 或 lt 小於 例:${3 < 5} -> true
> 或 gt 大於 例:${3 gt 5} -> false
<= 或 le 小於等於 例:${3 <= 5} -> true
>= 或 ge 大於等於 例:${3 >= 5} -> false

6. EL邏輯運算符
&& 或 and 等於 例:${A && B} -> true/false
|| 或 or 不等於 例:${A || B} -> true/false
! 或 not 小於 例:${!A} -> true/false

7. EL其他運算符
7.1 empty 運算符:用來判斷值是否為null或空
例:${empty param.name}
7.2 條件運算符
例:${A ? B : C}
7.3 掛號運算符
例:${A*(B*C)}

運算符優先權
[],.
()
-(負),not,!,empty
*,/,div,%,mod
+,-(減)
<,>,<=,>=,lt,gt,le,ge
==,!=,eq,ne
&&,and
||,or
$(A ? B : C )


8.EL functions
再介紹自定義EL的函數(function)>
EL functions 的語法如下:
ns:function(arg1,arg2)
其中ns為前置名稱(prefix),它必須和taglib指令的前置名稱一樣。
<% @ taglib prefix="my"
uri="http://jakarta.apache.org/tomcat/jsp2-example-taglib" %>
...
${my:function(param.name)}

分享到:
评论

相关推荐

    JSTL1.1及EL表达式中文参考手册

    **JSTL1.1及EL表达式**是Java服务器页面(JSP)开发中的重要组件,它们极大地提升了JSP的可读性和可维护性。本文将深入探讨这两个概念及其在实际开发中的应用。 **JSTL(JavaServer Pages Standard Tag Library)**...

    EL手册 EL手册 EL手册

    总的来说,《EL手册》是Java EE开发者不可或缺的参考资料,无论你是初学者还是有经验的开发者,都能从中受益匪浅,深入理解并掌握EL的精髓,提高开发效率和代码质量。这份PDF文档将提供详尽的解释、实例和最佳实践,...

    EL9800应用程序指南

    根据提供的文档信息,我们可以归纳出一系列与EL9800应用程序相关的知识点,这些知识点主要围绕着EL9800的应用程序指南、安装设置以及...对于想要深入了解EL9800设备及其应用的用户来说,这份文档具有极高的参考价值。

    EL表达式语言 仅作为字典参考用

    ### EL表达式语言详解 #### 一、引言 EL表达式语言,即Expression Language,是一种简化了在JSP页面中获取对象属性的过程的语言。它主要用于处理数据模型,并且能够直接从模型中读取属性值,无需编写额外的Java...

    蜜蜂EL编辑器V3.6

    7. **教程与文档**:配套提供详尽的使用教程和API文档,帮助初学者快速上手,同时也为有经验的开发者提供参考。 8. **社区与支持**:活跃的用户社区和官方技术支持,解答用户在使用过程中遇到的问题,推动软件的...

    domino xapgesg开发 Execute Script

    **JavaScript 和 EL 参考** 要深入了解如何编写 JavaScript 和 EL 表达式,可以参考以下资源: - **Introduction to the JavaScript and XPages reference**:官方文档提供关于 JavaScript 在 XPages 中的用法,...

    EL表达式全解语法中文技术文档

    **EL表达式全解语法中文技术文档** **一、EL表达式基础** ...这份文档详尽地涵盖了EL的全部语法,无论是基础概念还是高级特性的应用,都进行了深入浅出的阐述,对于初学者和经验丰富的开发者来说都是极好的参考资料。

    EL817C(SOP4封装)(东芝光耦)

    5. **东芝光耦.txt** 文件可能包含了关于东芝公司EL817C光耦合器的详细技术规格、应用指南或使用注意事项,供工程师参考。 总结,EL817C(SOP4封装)是一款高性能、高速度的光耦合器,广泛应用于需要电气隔离的各类...

    KUKA机器人配置倍福EL6752 DeviceNet模块.pdf

    本文档提供了KUKA机器人配置倍福EL6752 DeviceNet模块的详细指导,涵盖了设备说明文件的导入、EL6752模块的添加、DeviceNet主从站地址和波特率的配置等内容,为机器人应用和维护提供了有价值的参考。

    el31xxen.pdf

    综上所述,《EL31xxen.pdf》提供了全面而详细的EL31xx系列模拟输入端子的技术信息,不仅涵盖了各型号的技术参数和功能特性,还深入探讨了安装接线、通信协议等方面的知识,对于理解和使用这些模块具有重要的参考价值...

    EL语言规范

    以上内容涵盖了EL语言规范的核心知识点,但要完全掌握EL,还需要通过实际开发经验来加深理解,并参考具体的EL规范文档,如`expression_language-2_2-mrel-spec.pdf`。这份文档会详细解释EL的所有特性和用法,是学习...

    倍福PLC程序修改EL6751波特率.docx

    在Beckhoff Information System中,有关于EL6752(DeviceNet)波特率修改的详细说明,可以作为EL6751波特率调整的参考。 **2. EL6751波特率修改流程** 以下是通过ADS命令修改EL6751波特率的步骤: 2.1 **设置ADS...

    蜜蜂El编辑器v4.3.9.rar

    6. **注释与文档**:根据子文件名,4.3.8版本附带了里斯的分享和注释,这可能意味着4.3.9版本也保留了这一特点,为用户提供了解决问题和学习的参考。 在实际使用过程中,用户可以通过这款编辑器来调整游戏内的对话...

    PLANNAR EL640.480AM(EL显示屏)技术手册(英文).rar

    《PLANNAR EL640.480AM(EL显示屏)技术手册》是一份详细的英文参考资料,专门针对PLANNAR公司的EL640.480AM显示器进行阐述。这份手册涵盖了该显示器的各项关键技术和操作指南,对于理解、安装、配置以及维护此款...

    第三部分:EL5600-04P&08P命令行参考手册.rar

    本文档为新格林耐特OLT的详细配置手册,可作为ONU运维工程师、产品开发工程师、测试工程师学习参考手册。

    PLANNAR EL320.256FD6(EL显示屏)技术手册(英文).rar

    总的来说,《PLANNAR EL320.256FD6(EL显示屏)技术手册》是专业人士进行产品设计、安装、维护和故障排查的重要参考工具,其内容丰富、专业,对于理解和应用EL显示屏技术至关重要。尽管以英文呈现,但通过翻译和深入...

    JSTL和EL帮助文档

    **JSTL(JavaServer Pages Standard Tag Library)与EL(Expression Language)是Java...对于初学者来说,这两份文档是掌握JSTL和EL基础知识的重要参考资料,通过深入阅读和实践,可以快速提升在Java Web开发中的能力。

    倍福EL1502 计数器模式的设置.rar

    **倍福EL1502计数器模块详解与设置** 倍福(Beckhoff)是一家专注于自动化技术的公司,其产品广泛应用于工业自动化领域。EL1502是倍福推出的一款高精度数字输入模块,特别适用于计数应用。这款模块支持多种计数模式...

    el-api.jar和el-ri.jar

    例如,Tomcat、Jetty等轻量级服务器通常会使用这个RI(参考实现)来处理JSP页面中的EL表达式。 这两个JAR文件的关系可以类比于Java的API和实现,如`java.sql`接口和JDBC驱动实现。`el-api.jar` 类似于接口,定义了...

    倍福EL2521带科尔摩根伺服电机调试.docx

    * 硬件接线主要参考科尔摩根提供的产品说明书 二、通过Workbench控制伺服电机: * 连接驱动器的X11口和主机的网口 * 设置驱动器的IP地址为192.168.0.2 * 修改主机IP,使其与驱动器IP处于同一网段 * 打开Workbench...

Global site tag (gtag.js) - Google Analytics