当前位置 : 首页> 交流分享 > 什么是el表达式 浅析EL表达式的使用方法

什么是el表达式 浅析EL表达式的使用方法

时间:2018-09-13 15:36:38   已访问:536次
热门专业

el表达式是什么?EL表达式的使用你又掌握多少?学java开发,el知识点是要明确的一个点,今天IT培训网小编就el表达式相关问题分析如下,助大家求学路上无阻,马到成功。

什么是EL表达式

EL是Expression Language的缩写,它是jsp内置的表达式语言,从jsp2.0开始,就不让再使用java脚本,而是使用el表达式或动态标签来代替java脚本。EL表达式的格式如下:

${表达式}

EL表达式代替的是java脚本中的<%= …%>,也就是说EL表达式也是向浏览器端输出数据。例如${1+2}会向浏览器端输出3。

EL表达式的使用

EL表达式之全域查找

通过对EL表达式的初步了解,下面我们通过练习来掌握EL表达式的使用,点击此处 下载案例源代码,如下所示:

(1)创建一个web应用,Example6,对该应用的index.jsp页面进行编辑,如例1-1所示:

什么是el表达式 浅析EL表达式的使用方法_www.cnitedu.cn

例1-1 index.jsp

例1-1中,首先向request域中存放名字为“request_attribute“的域属性,值为”request_haha“,然后使用EL表达式将request_attribute从request域中取出,输出在浏览器端。

(2)将Example6发布到服务器端,然后启动服务器,在浏览器端访问index.jsp页面,浏览器显示结果如图1-1所示:

什么是el表达式 浅析EL表达式的使用方法_www.cnitedu.cn

图1-1 浏览器显示结果

由图1-1可知,使用EL表达式成功的从request域中取出了数据。

(3)再次修改index.jsp页面,如例1-2所示:

什么是el表达式 浅析EL表达式的使用方法_www.cnitedu.cn

例1-2 index.jsp

例1-2中,在jsp的四大域中都存放了名字为“attribute“的与属性,但值各不相同。现在使用EL表达式向浏览器端输出attribute的值,那么浏览器端会输出哪个域的属性值?

(4)再次在浏览器端访问index.jsp页面,浏览器显示结果如图1-2所示:

什么是el表达式 浅析EL表达式的使用方法_www.cnitedu.cn

图1-2 浏览器显示结果

由图1-2可知,${attribute}表达式是从pageContext域中取数据。

(5)将index.jsp页面中的向pageContext域中存放数据的代码注释掉,然后再在浏览器端访问index.jsp,浏览器显示结果如图1-3所示:

什么是el表达式 浅析EL表达式的使用方法_www.cnitedu.cn

图1-3 浏览器显示结果

由图1-3可知,el表达式是从request域中取出的数据。现在再将向request域中存放数据的代码注释掉,再次在浏览器端访问index.jsp页面,浏览器显示结果如图1-4所示:

什么是el表达式 浅析EL表达式的使用方法_www.cnitedu.cn

图1-4 浏览器显示结果

图1-4中,el表达式取出的是session域中的属性值,如果再将向session域存放数据的代码注释掉,再次访问index.jsp页面,浏览器端输出的仍然是“session_haha“,这是因为session对象还存在,那么它当中的域属性自然也就存在,将浏览器关闭,再打开然后再访问index.jsp,浏览器端的输出结果如图1-5所示:

什么是el表达式 浅析EL表达式的使用方法_www.cnitedu.cn

图1-5 浏览器显示结果

通过以上对jsp四大域的操作,可以发现使用EL表达式获取数据是依次从jsp的四大域中获取,即全域查找,次序是page域,request域,session域最后是application域,如果page域中存在,就返回并结束查找,如果没有,就去request域中查找,找到就返回并结束查找,如果request域中也没有,那么就继续去session域中查找,以此类推,最后查找到application域。如果这四个域中都没有,那么EL表达式就返回一个空字符串,即在页面上什么也不显示,如图1-6所示:

什么是el表达式 浅析EL表达式的使用方法_www.cnitedu.cn

图1-6 浏览器显示结果

EL表达式之获取指定域中的数据

在2.1小节中,我们学习了使用EL表达式进行全域查找,但是进行全域查找必然会影响效率,因此现在我们来学习使用EL表达式从指定域中获取数据,具体如下:

(1)再次对index.jsp页面进行修改,如例1-3所示:

什么是el表达式 浅析EL表达式的使用方法_www.cnitedu.cn

例1-3中,如果要指定从哪个域中获取数据,一定要在指定的域名称后面加上“Scope“,否则不能从指定的域中获取数据。

(2)在浏览器端访问index.jsp,浏览器显示结果如图1-7所示:

什么是el表达式 浅析EL表达式的使用方法_www.cnitedu.cn

图1-7 浏览器显示结果

其实,使用EL表达式获取jsp四个域中的数据:

pageScope:${pageScope.name}等同与pageContext.getAttribute(“name”);

requestScope:${requestScope.name}等同与request.getAttribute(“name”);

sessionScoep: ${sessionScope.name}等同与session.getAttribute(“name”);

applicationScope:${applicationScope.name}等同与application.getAttribute(“name”);

EL表达式之javaBean导航

如果在域中保存的是javaBean对象,那么也可以使用EL表达式来访问javaBean的属性,因为EL表达式只做读操作,所以javaBean一定要为属性提供get方法,而对set方法没有要求。使用EL表达式获取javaBean属性就是javaBean导航。

下面通过一个案例来了解EL表达式是如何进行JavaBean导航的,如下所示:

(1)在Example6应用中,新建一个javaBean类,Address,主要代码如例1-4所示:

什么是el表达式 浅析EL表达式的使用方法_www.cnitedu.cn

例1-4 Address.java

(2)在Example6应用中,再次新建一个javaBean类,Employee,主要代码如例1-5所示:

什么是el表达式 浅析EL表达式的使用方法_www.cnitedu.cn

例1-5 Employee.java

(3)在Example6下的WebRoot目录下新建一个目录el,然后在该目录下新建一个el.jsp文件,主要代码如例1-6所示:

什么是el表达式 浅析EL表达式的使用方法_www.cnitedu.cn

例1-6 el.jsp

例1-6中,创建了Address和Employee的对象,并将属性赋值,其中address对象是emp对象的一个属性,然后将emp对象保存在request域中,再使用el表达式获取emp对象。

(4)重新启动服务器,在浏览器端访问el.jsp页面,浏览器显示结果如图1-8所示:

什么是el表达式 浅析EL表达式的使用方法_www.cnitedu.cn

图1-8 浏览器显示结果

现在想获取该emp对象的address属性的street属性,el表达式该如何写?

(5)对el.jsp页面稍作修改,如例1-7所示:

什么是el表达式 浅析EL表达式的使用方法_www.cnitedu.cn

(6)再次访问el.jsp页面,浏览器显示结果如图1-9所示:

什么是el表达式 浅析EL表达式的使用方法_www.cnitedu.cn

图1-9 浏览器显示结果

由图1-9可知,使用例1-7所示的el表达式成功的获取到street属性的值,例1-7中的el表达式就是javaBean导航,其底层代码如下:

Employee _emp=(Employee)request.getAttribute("emp");

String street=_emp.getAddress().getStreet();

因此我们在前面特意强调,如果域中存放的是javaBean对象,javaBean一定要为每个属性提供get方法,因为在使用el表达式获取javaBen属性时,底层就是调用属性的get方法。

(7)在Employee类中添加一个get方法,如例1-8所示:

什么是el表达式 浅析EL表达式的使用方法_www.cnitedu.cn

例1-8 getHehe()方法

(8)在el.jsp页面中使用el表达式输出该方法的返回值,如例1-9所示:

此处省略例1-6中的代码
${emp.hehe }

(9)重新启动服务器,访问index.jsp页面,浏览器显示结果如图1-10所示:

什么是el表达式 浅析EL表达式的使用方法_www.cnitedu.cn

图1-10 浏览器显示结果

由图1-10可知,Employee类中虽然没有名称为”hehe”的成员变量,但是提供了get方法,因此hehe就是Employee的属性,那么在jsp页面中就能通过el表达式${emp.hehe}输出该方法的返回值,进一步说明该el表达式底层就是调用javaBean的get方法。

EL表达式运算符

EL是表达式语言,它可以进行一些运算,可使用的运算符如表1-1所示:

表1-1 EL表达式运算符

什么是el表达式 浅析EL表达式的使用方法_www.cnitedu.cn


推荐内容