资讯专栏INFORMATION COLUMN

[应用篇]第一篇 EL表达式入门

李文鹏 / 3473人阅读

摘要:概念表达式全名为,就是为了替代脚本表达式。作用获取数据表达式主要用于替换页面中的脚本表达式,以从各种类型的域中检索对象获取数据。调用方法表达式允许用户开发自定义函数,以在页面中通过表达式调用类的方法。

概念

EL表达式:EL 全名为Expression Language,就是为了替代<%= %>脚本表达式。

作用

获取数据
EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域中检索java对象、获取数据。(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)

执行运算
利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。${user==null}

获取web开发常用对象
EL 表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。

调用Java方法
EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。

其实感觉这个地方是应该会很好玩的!例如自定标签和自定义函数!

使用EL表达式获取数据

使用EL表达式获取数据语法:“${标识符}”
EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回””

(注意,不是null,而是空字符串)
示例:${user}
<%=((HttpServletRequest)pageContext.getRequest()).getContextPath() %> 在获取后对象后要加括号才能继续调用对象身上的方法
${pageContext.request.contextPath} 这个还是需要记忆下有用

EL表达式也可以很轻松获取JavaBean的属性或获取数组、Collection、Map类型集合的数据,例如:

${strs[1]} //获取数组中的元素
${user.address.city}//链式操作获取值
${user.list[0]}:访问有序集合某个位置的元素
${map.key}  : 获得map集合中指定key的值

通过JSTL标签中的C标签的foreach进行迭代,这个我们已经做过了!

EL表达式执行运算[重点中的重点]
(1) 算数运算:所有参与元算的元素都会被转成数字,如果不能转就报错,空元素参与运算当作没参与。
(2) 关系运算:必须记忆下来
     == --->    eq    例如:${5==5}或${5 eq 5}
      != --->    ne 
      <  --->    lt  
      >  --->    gt 
      <= --->    le
      >= --->    ge
      
(3) **逻辑运算:**
&&  --->   and   例如:${A&&B}或${A and B}
||  --->   or  
!   --->   not
(4) empty/not empty 判断一个对象或集合或数组是否为null或长度为0
(5) 条件表达式 ${user!= null ? user.name : "";//三元运算符
(6) []和.号运算符
使用EL表达式获得Web开发常用对象

EL表达式语言中定义了 11个隐含对象 ,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据。
语法:${隐式对象名称} :获得对象的引用

隐藏对象 描述
pageContext 代表pageContext对象,注意和pageScope进行区分
pageScope 代表page域,可以用来获取page域中的属性
reqeustScope 代表reqeust域,可以用来获取reqeust域中的属性
sessionScope 代表session域,可以用来获取session域中的属性
applicationScope 代表application域,可以用来获取application域中的属性
param 代表请求参数组成的map集合${param.userName} 相当于 request.getParameter("userName")
paramValues 代表请求参宿组成的map集合,但是此集合的value是String[],用来获取一名多值的param 相当于 request.getParameterValues("userName")
cookie 获取cookie组成的map对象,此map的值是一个cookie对象${cookie.cookieName.cookieValue}
header 获取所有HTTP请求字段的map对象
headerValues 同上,获取请求头组成的map,但是value是一个String[]
initParam 以map封装的web.xml中配置的整个web应用的初始化参数

示例测试代码:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

  
  
  <%--
      ${pageContext }
      ${pageScope }
      ${requestScope }
      ${sessionScope }
      ${applicationScope }
   --%>    
   获取请求参数
      ${param.name }    
获取请求头 <%= request.getHeader("Host") %> ${header.Host } ${header["Accept-Language"] }
el表达式获取cookie信息
<% Cookie cookie = new Cookie("host","localhost"); response.addCookie(cookie); %> <% Cookie [] cs = request.getCookies(); if(cs!=null){ for(Cookie c : cs){ if("host".equals(c.getName())){ out.write(c.getValue()); } } } %>
cookie.host.value: ${cookie.host.value}
整个web应用的初始化参数
<%= application.getInitParameter("data1") %>
initParam: ${initParam.data1 }
pageContext.request:${pageContext.request }
pageScope.request:${pageScope.request }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/65047.html

相关文章

  • Java3y文章目录导航

    摘要:前言由于写的文章已经是有点多了,为了自己和大家的检索方便,于是我就做了这么一个博客导航。 前言 由于写的文章已经是有点多了,为了自己和大家的检索方便,于是我就做了这么一个博客导航。 由于更新比较频繁,因此隔一段时间才会更新目录导航哦~想要获取最新原创的技术文章欢迎关注我的公众号:Java3y Java3y文章目录导航 Java基础 泛型就这么简单 注解就这么简单 Druid数据库连接池...

    KevinYan 评论0 收藏0
  • 个人分享--web前端学习资源分享

    摘要:前言月份开始出没社区,现在差不多月了,按照工作的说法,就是差不多过了三个月的试用期,准备转正了一般来说,差不多到了转正的时候,会进行总结或者分享会议那么今天我就把看过的一些学习资源主要是博客,博文推荐分享给大家。 1.前言 6月份开始出没社区,现在差不多9月了,按照工作的说法,就是差不多过了三个月的试用期,准备转正了!一般来说,差不多到了转正的时候,会进行总结或者分享会议!那么今天我就...

    sherlock221 评论0 收藏0
  • chrome扩展开发之旅 第一

    摘要:扩展及应用介绍与区别介绍支持开发者为其编写各种各样的扩展与应用来扩充其功能。用处安装扩展之后,就会读取扩展中的文件。结语以上就是第一章的总结,接下来的笔记,敬请期待原书项目代码下载扩展及其应用开发 读书笔记介绍 寒假想自己做一个chrome扩展,便从图书馆借了这本书。同时,为了培养自己的好习惯,做沉淀,便读一章写一篇总结,全书总共10章,将会分为10篇博文。欢迎大家多多指正,也希望大家...

    lei___ 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<