概念

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表达式获取数据

  1. 使用EL表达式获取数据语法:“${标识符}”

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

    (注意,不是null,而是空字符串)

    示例:${user}

    <%=((HttpServletRequest)pageContext.getRequest()).getContextPath() %> 在获取后对象后要加括号才能继续调用对象身上的方法

    ${pageContext.request.contextPath} 这个还是需要记忆下有用

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

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

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

EL表达式执行运算[重点中的重点]

  1. (1) 算数运算:所有参与元算的元素都会被转成数字,如果不能转就报错,空元素参与运算当作没参与。
  2. (2) 关系运算:必须记忆下来
  3.    == ---> eq 例如:${5==5}或${5 eq 5}
  4. != ---> ne
  5. < ---> lt
  6. > ---> gt
  7. <= ---> le
  8. >= ---> ge
  9. (3) **逻辑运算:**
  10. && ---> and 例如:${A&&B}或${A and B}
  11. || ---> or
  12. ! ---> not
  13. (4) empty/not empty 判断一个对象或集合或数组是否为null或长度为0
  14. (5) 条件表达式 ${user!= null ? user.name : "";//三元运算符
  15. (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应用的初始化参数

示例测试代码:

  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
  2. <html>
  3. <head></head>
  4. <body>
  5. <%--
  6. ${pageContext }
  7. ${pageScope }
  8. ${requestScope }
  9. ${sessionScope }
  10. ${applicationScope }
  11. --%>
  12. 获取请求参数
  13. ${param.name } <hr>
  14. 获取请求头
  15. <%=
  16. request.getHeader("Host")
  17. %>
  18. ${header.Host }
  19. ${header["Accept-Language"] }<hr>
  20. el表达式获取cookie信息<br>
  21. <%
  22. Cookie cookie = new Cookie("host","localhost");
  23. response.addCookie(cookie);
  24. %>
  25. <%
  26. Cookie [] cs = request.getCookies();
  27. if(cs!=null){
  28. for(Cookie c : cs){
  29. if("host".equals(c.getName())){
  30. out.write(c.getValue());
  31. }
  32. }
  33. }
  34. %> <br>
  35. cookie.host.value: ${cookie.host.value}<hr>
  36. 整个web应用的初始化参数<br>
  37. <%=
  38. application.getInitParameter("data1")
  39. %><br>
  40. initParam: ${initParam.data1 }<hr>
  41. pageContext.request:${pageContext.request }<br>
  42. pageScope.request:${pageScope.request }
  43. </body>
  44. </html>

[应用篇]第一篇 EL表达式入门的更多相关文章

  1. JVM学习篇-第一篇

    JVM学习篇-第一篇 JDK( Java Development Kit): ​ Java程序设计语言.Java虚拟机.Java类库三部分统称为JDK,JDK是用于支持Java程序开发的最小环境** ...

  2. EL表达式 入门

    为了使JSP写起来更加简单. 表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法. JSP EL语言定义 E L(Expression L ...

  3. python 基础篇第一篇

    本节内容 1.python介绍 2.发展史 3.python2和python3 4.安装 5.简单程序,hello world程序 6.变量 7.用户输入 8.模块初识 9..pyc是什么? 10.数 ...

  4. 第一章 EL表达式常见用法

    el最常用的几种使用场景: 从配置文件中读取属性 缺失值情况下,配置默认值 el内部字符串使用String的方法 三目运算符 正则表达式 注入系统属性(system properties) 调用系统原 ...

  5. Sharepoint 2013 安装部署系列篇 第一篇 -- 系统集群安装

    这部分讲述怎样配置两台服务器作为sql集群. 准备 *你需要两个网卡在每台服务器上,一个是共有,另一个是私有的(heartbreak通信)*共享存储如SAN存储需要至少如下配置,并且需要连接到每台节点 ...

  6. java多线程基础篇第一篇

    1.在开始多线程之前,我们先来聊聊计算机的缓存 计算机处理一个程序需要cpu处理器与存储设备的交互.但是在计算机发展的过程中,cpu处理器的处理速度不断提高,而存储设备的读写速度却没有得到与cpu同样 ...

  7. 个人整理的jsp、EL表达式、JSTL标签库的笔记,少概念多实用,需要的留下邮箱,会第一时间分享原稿PDF给大家!

    jsp 第一章 jsp介绍及对比servlet 作用: 动态网页技术,动态的从数据库获取数据 jsp和servlet的优缺点: jsp优点:页面表现方便,利于写html代码 jsp缺点:业务逻辑处理麻 ...

  8. EL表达式(3)

    本篇讲解使用EL表达式来调用Java方法(自定义EL函数)和Sun公司开发的EL函数库. 简单来说,我们在一个类中的某个方法,可以使用EL进行调用,这个能被EL表达式调用的方法称之为EL函数,但是这种 ...

  9. 【JavaWeb】EL表达式&过滤器&监听器

    EL表达式和JSTL EL表达式 EL表达式概述 基本概念 EL表达式,全称是Expression Language.意为表达式语言.它是Servlet规范中的一部分,是JSP2.0规范加入的内容.其 ...

随机推荐

  1. 第二阶段Sprint冲刺会议9

    进展:查看有关“共享平台”的资料,看如何实现上传下载功能,并尝试编码,没有成功.

  2. StringBuffer 与 StringBuilder类的使用

    /*如果需要频繁修改字符串 的内容,建议使用字符串缓冲 类(StringBuffer). StringBuffer 其实就是一个存储字符 的容器. 笔试题目:使用Stringbuffer无 参的构造函 ...

  3. 剑指offer:矩形覆盖

    题目描述: 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 解题思路: 和跳台阶那道题差不多.分别以矩形的两条边长做拓 ...

  4. ACM的fflush(stdin)的问题

    在最近的刷题过程中,因为用到了很多字符串的操作,有时需要多次清空缓冲区,所以用了fflush(stdin);的语句,确实很好用,但是发现在OJ上提交后会出现runtime error的问题.当时并没有 ...

  5. 深入理解Java类加载器(3)

    5.2 网络类加载器 下面将通过一个网络类加载器来说明如何通过类加载器来实现组件的动态更新.即基本的场景是:Java 字节代码(.class)文件存放在服务器上,客户端通过网络的方式获取字节代码并执行 ...

  6. Enterprise Library 5.0 参考源码索引

    http://www.projky.com/entlib/5.0/Microsoft/Practices/EnterpriseLibrary/Caching/BackgroundScheduler.c ...

  7. Sprint1回顾

    Sprint目标 此产品为适用于小学生使用的四则运算训练软件.关于第一期Sprint冲刺的目标,我们打算实现产品的以下几点的功能: •1.初始界面设计 •2.四则基本运算算法 •3.能产生随机式子 • ...

  8. HDU 2134 Cuts the cake

    http://acm.hdu.edu.cn/showproblem.php?pid=2134 Problem Description Ice cream took a bronze medal in ...

  9. [转帖]技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解

    技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解    http://www.52im.net/thread-1309-1-1.html   本文来自腾讯资深研发工程师罗成的技术分享, ...

  10. poj 3254(状态压缩DP)

    poj  3254(状态压缩DP) 题意:一个矩阵里有很多格子,每个格子有两种状态,可以放牧和不可以放牧,可以放牧用1表示,否则用0表示,在这块牧场放牛,要求两个相邻的方格不能同时放牛,即牛与牛不能相 ...