JSP2.0中的表达式语言(EL表达式)

转载自   JSP2.0中的表达式语言(EL表达式) 

EL语法

 EL的语法很简单,他最大的特点就是使用上很方便
 例:
 ${sessionScope.user.sex}
 所有EL都是以${ 为起始、以} 为结尾的。
 上述EL范例的意思是:从Session取得用户的性别。如果使用之前JSP代码的写法如下:
 <%
   User user = (User)session.getAttribute("user");
   String sex = user.getSex( );
  %>
 两者相比较之下,可以发现EL的语法比传统JSP代码更为方便、简洁。
 EL提供. 和[ ] 两种运算符来存取数据,[ ]可以访问集合或者是数组的元素、Bean的属性。下列两者所代表的意思是一样的,但是需要保证要取得对象的那个的属性有相应的setXxx()和getXxx()方法才行。
 例:
 ${sessionScope.user.sex}
 等于
 ${sessionScope.user["sex"]}
 . 和[ ] 也可以同时混合使用,如下:
 ${sessionScope.shoppingCart[0].price}
 返回结果为shoppingCart中第一项物品的价格。
 在EL中,字符串既可以使用"abc",可以使用'abc'。

 

EL运算符

 EL的算术运算符和Java中的运算符的大致相同,优先级也相同。
 注意:'+' 运算符不会连接字符串了,他只用于加法运算。
 EL关系运算符有以下六个运算符
 关系运算符      说 明                范 例             结果
 = = 或eq   |    等于   |${ 5 = = 5 } 或${ 5 eq 5 } | true
 != 或ne    |   不等于  |${ 5 != 5 } 或${ 5 ne 5 }  | false
 < 或lt     |   小于    |${ 3 < 5 }或${ 3 lt 5 }    | true
 > 或gt     |   大于    |${ 3 > 5 }或${ 3 gt 5 }    | false
 <= 或le    |  小于等于|${ 3 <= 5 }或${ 3 le 5 }   | true
 >= 或ge    |  大于等于|${ 3 >= 5 }或${ 3 ge 5 }   | false


 empty运算符

 Empty运算符主要用来判断值是否为null或空的,例如:
 ${ empty param.name }
 接下来说明Empty运算符的规则:
 {empty} A
    如果A为null时,返回true
    如果A不存在时,返回true
    如果A为空字符串时,返回true
    如果A为空数组时,返回true
    如果A为空的Map时,返回true
    如果A为空的Collection时,返回true
    否则,返回false
 注意:
 在使用EL关系运算符时,不能够写成:
 ${param.password1} = = ${param.password2}
 或者
 ${ ${param.password1 } = = ${ param.password2 } }
 而应写成
 ${ param.password1 = = param.password2 }
 使用EL从表单中取得数据
 与输入有关的隐含对象有两个:param和paramValues,它们是EL中比较特别的隐含对象。一般而言,我们在取得用户的请求参数时,可以利用下列方法:
 request.getParameter(String name)
 request.getParameterValues(String name)
 在EL中则可以使用param和paramValues两者来取得数据。
 ${param.name}
 ${paramValues.name}可以取得所有同名参数的值
 ${paramValues.hobbies[0]}可以通过指定下标来访问特定的参数的值
 这里param的功能和request.getParameter(String name)相同,而paramValues和request.getParameterValues(String name)相同。如果用户填了一个form,form名称有为username的文本框,则我们就可以使用${param.username}来取得用户填入文本框的值。

 

EL函数

 EL中使用函数要写一个要使用到方法的类,然后在配置xxx.tld文件,然后在JSP中使用时和JSP的自定义标签相似。
 xxx.tld中的配置
 <function>
   <name>reverse</name><!--函数名-->
   <function-class>jsp2.examples.el.Functions</function-class><!--函数所在的类-->
   <function-signature>java.lang.String reverse( java.lang.String )</function-signature>
   <!--函数原型,也就是函数的返回值类型,函数名,参数表,注意一定要写类型的全名-->
 </function>
 使用EL函数的写法
 ${sn:upper('abc')}
 注意:在定义EL函数时,都必须为公开静态(public static)


EL的隐含对象

 EL也可以使用内置对象中设置的属性,需要使用特定的EL内置对象
 属性范围     |    在EL中的对象
 Page         |     pageScope
 Request      |     requestScope
 Session      |     sessionScope
 Application  |     applicationScope
 EL中使用内置对象的属性
 ${requestScope.user}
 等价于
 <%request.getAttribute("user")%>
 如果不写出特定的范围 ,那就会在不同的范围间进行搜索了
 例:{user}(user是在request范围request.setAttribute("user",user))
 也就等于
 ${requestScope.user}
 <%request.getAttribute("user")%>
 EL的隐含对象
    对象                        类 型                  说 明
 PageContext      |  javax.servlet.ServletContext |表示此JSP的PageContext
 -----------------------------------------------------------------------------------
 PageScope        |         java.util.Map         |取得Page范围的属性名称所对应的值
 -------------------------------------------------------------------------------------
 RequestScope     |         java.util.Map         |取得Request范围的属性名称所对应的值
 -------------------------------------------------------------------------------------
 sessionScope     |         java.util.Map         |取得Session范围的属性名称所对应的值
 -------------------------------------------------------------------------------------
 applicationScope |         java.util.Map         |取得Application范围的属称所对应的值
 -------------------------------------------------------------------------------------
 param            |         java.util.Map         |如同ServletRequest.getParameter(String name)返回String类型的值
 ----------------------------------------------------------------------------------------
 paramValues      |         java.util.Map         |如同ServletRequest.getParameterValues(String name)。返回String []类型的值
 -----------------------------------------------------------------------------------------
 header     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

免费下载百度 豆丁 丁香 等平台文档

免费下载百度 豆丁 丁香 等平台文档 2019年01月15日 17:59:04 松门一枝花 阅读数&#xff1a;347 版权声明&#xff1a;有问题咨询请发邮件zengmiaogen126.com。CSDN的留言和私信不好使。 https://blog.csdn.net/zengmingen/article/details/86496344 免费下载百度文档 免费…

java填充线缺口,在geom_freqpoly线下填充区域的最简单方法是什么?

x轴是时间间隔的时间 . 数据框中有一个间隔列&#xff0c;用于指定每行的时间 . 该列是一个因子&#xff0c;其中每个区间是不同的因子级别 .使用geom_histogram和geom_freqpoly绘制直方图或直线效果很好&#xff0c;但是我希望有一条线&#xff0c;就像geom_freqpoly提供的那样…

《Unity 3D脚本编程:使用C#语言开发跨平台游戏》序言

本文是7月受陈嘉栋的委托为他的新书《Unity 3D脚本编程:使用C#语言开发跨平台游戏》所写的序言&#xff0c;借助序言告诉大家.NET平台有着一个广阔的使用场景。 序言 Unity3D 是由两个具有巨大吸引力而极其令人愉悦的领域混合而成&#xff1a;C#语言和游戏开发。Unity团队设计U…

CDN如何实现,关键技术是什么?

转载自 CDN如何实现&#xff0c;关键技术是什么&#xff1f; CDN原理 CDN网络是在用户和服务器之间增加Cache层&#xff0c;如何将用户的请求引导到Cache上获得源服务器的数据&#xff0c;主要是通过接管DNS实现&#xff0c;这就是CDN的最基本的原理。如下图&…

35 岁程序员的独家面试经历

35 岁程序员的独家面试经历 2015年12月15日 17:34:33 松门一枝花 阅读数&#xff1a;524 创业失败后&#xff0c;在找工作。选择了三家&#xff08;两家上市公司&#xff0c;一家将上市&#xff09;&#xff0c;都走到了关键的节点。我记录了面试过程中被问到的一些问题&…

国庆假期请假公告

公众号运营从开始到今天&#xff0c;运营了接近2年时间&#xff0c;每天更新成了一个必备功课&#xff0c;有时候很辛苦&#xff0c;有时候也是很累&#xff0c;但想到公众号里有很多的朋友的期待&#xff0c;就会一次次的拿起电脑开始码字。 公众号不谈国事&#xff0c;不论风…

php中对象的遍历输出,PHP中的对象遍历技巧

PHP中的对象遍历对象的遍历,主要是指遍历对象中的&#xff0c;对外部可见属性。实际上就是用访问限制符public声明的属性&#xff0c;这点大家肯定很熟悉了。并且,在php中&#xff0c;遍历对象居然与遍历数组一样&#xff0c;都可以用使用foreach语句。好&#xff0c;下面用实例…

数据库连接池的选择及其开发配置

转载自 数据库连接池的选择及其开发配置 一、数据库连接池概述 数据库连接的建立是一种耗时、性能低、代价高的操作&#xff0c;频繁的数据库连接的建立和关闭极大的影响了系统的性能。数据库连接池是系统初始化过程中创建一定数量的数据库连接放于连接池中&#xff0c;当程序…

C#在Linux+Mono环境中使用微信支付证书

最近特殊的需求&#xff0c;要把微信平台一个功能页面部署到Linux&#xff08;CentOS6.5&#xff09;下&#xff0c;其中涉及到微信支付退款。 鉴于之前实践过monojexusasp.net mvc的部署&#xff0c;于是问题重点在于解决对商户证书的调用问题。 查看微信支付官方文档关于证书…

mysql切换用户sql语句,MySQL用户管理及SQL语句详解

[(none)]>select user,host frommysql.user; #查询用户和主机--------------------------| user | host |--------------------------| root | 10.0.0.% || mysql.session | localhost || mysql.sys | localhost || root | localhost |--------------------------4 rows in …

其他

关于程序员的文章 2014年05月01日 16:58:25 a8511119 阅读数&#xff1a;300 中国有很多小朋友&#xff0c;他们18,9岁或21,2岁&#xff0c;通过自学也写了不少代码&#xff0c;他们有的代码写的很漂亮&#xff0c;一些技术细节相当出众&#xff0c;也很有钻研精神&#xff0…

Java经典面试题一

转载自 Java经典面试题一 题目一 面向对象的特征有哪些方面&#xff1f; 答&#xff1a;面向对象的特征主要有以下几个方面&#xff1a; 1.抽象&#xff1a; 抽象是将一类对象的共同特征总结出来构造类的过程&#xff0c;包括数据抽象和行为抽象两方面。抽象只关注对象有哪些…

微信小程序这么火,到底会对C#开发者带来怎样的改变

在9月22日凌晨&#xff0c;微信公众平台开始陆续对外发出小程序的内测邀请&#xff0c;小程序也立即成为被外界广为关注的微信“应用号"&#xff0c;9月23日的福州 2016腾讯全球合作伙伴大会上&#xff0c;腾讯COO、游戏和无线业务的掌舵人、腾讯首席运营官任宇任宇昕提到…

php js 验证码,js实现验证码的方法

验证码的生命周期在web应用中&#xff0c;验证码常用于登录注册。验证码本质就是一张图片。我们来看一下验证码的生命周期&#xff1a;客户端请求验证码服务端渲染验证码&#xff1a;渲染一张包含随机字符串的图片随机字符串写入session读取图片并返回响应客户端提交&#xff1…

区间数多属性决策matlab,区间数多属性决策的改进理想解法

Interval Multiple Attribute Decision Making Based on the Improved Technique for Order Preference by Similarity to Ideal Solution1、School of Economics and Management, Southwest Jiaotong University2、Deaprtment of Mathematics, North Sichuan Medical CollegeA…

.NET 标准介绍

本文介绍如何使用 .NET 标准&#xff0c;更容易地实现向 .NET Core 迁移。文中会讨论计划包含的 APIs&#xff0c;跨构架兼容性如何工作以及这对 .NET Core 意味着什么。 如果你对细节感兴趣&#xff0c;这篇文章正是为你准备的&#xff1b;如果你没有那么多时间或者对细节并不…

HTTP 返回码详解

转载自 HTTP 返回码详解200 服务器成功返回网页 404 请求的网页不存在 503 服务不可用1xx&#xff08;临时响应&#xff09; 表示临时响应并需要请求者继续执行操作的状态代码。 100&#xff08;继续&#xff09;请求者应当继续提出请求。 服务器返回此代码表示已收到请求…

银行营业网点管理系统——entity类(Branches)

package BranchesMgr.entity; /*** * author Administrator*网点信息表*/ public class Branches {private int id;private String name;private int cityAreatyid;private String cityName;public String getCityName() {return cityName;}public void setCityName(String cit…

自己的php工具,用PHP自己编写的站长工具箱

前沿&#xff1a; 看到站长之家的站长工具很强大&#xff0c;所以也想自己试着实现一些其中的功能&#xff0c;由于本人只具有初阶的php技术&#xff0c;所以便用php一些函数实现了部分功能。主要功能包括&#xff1a;正则表达式测试工具&#xff0c;MD5和SHA1加密工具&#xf…