el最常用的几种使用场景:

  • 从配置文件中读取属性
  • 缺失值情况下,配置默认值
  • el内部字符串使用String的方法
  • 三目运算符
  • 正则表达式
  • 注入系统属性(system properties)
  • 调用系统原有函数
  • 直接注入文件进行操作
  • 读取另一个bean的函数的返回值

1、从配置文件中读取属性

application.properties

name=\u8D75\u8BA1\u521A
     @Value("${name}")//这里必须使用$,使用#是不行的
private String name;
@RequestMapping(value = "/name", method = RequestMethod.GET)
public String getName() {
return name;
}

注意:记住下边三句话

  • ${}不支持表达式(三目表达式不算表达式);#{}支持
  • ${}读取属性文件的值
  • ${}读取最后一个满足条件的值;#{}读取所有满足条件的值

2、缺失值情况下,配置默认值

     @Value("${name2:'刚子'}")//这里必须使用$,使用#是不行的
private String name2;
@RequestMapping(value = "/name2", method = RequestMethod.GET)
public String getName2() {
return name2;
}

3、el内部字符串使用String的方法

 name.list=\u8D75\u8BA1\u521A,\u738B\u5A1C
     @Value("#{'${name.list}'.split(',')}")
private List<String> nameList;
@RequestMapping(value = "/nameList", method = RequestMethod.GET)
public List<String> getNameList() {
return nameList;
}

4、三目运算符

 name.three=\u6768\u8FC7
     @RequestMapping(value = "/nameThree", method = RequestMethod.GET)
public String getNameThree(@Value("${name.three!='杨过'?'黄蓉':'小龙女'}") String nameThree) {
return nameThree;
}

注意:@value可以直接作为入参

5、正则表达式

     @Value("#{'100' matches '\\d+'}")//这里必须使用#,使用$是不行的
private boolean isDigital;
@RequestMapping(value = "/nameRegEx", method = RequestMethod.GET)
public boolean getNameRegEx() {
return isDigital;
}

6、注入系统属性

     @Value("#{systemProperties['os.name']}")//这里必须使用#,使用$是不行的
private String osName;
@RequestMapping(value = "/osName", method = RequestMethod.GET)
public String getOsName() {
return osName;
}

7、调用系统原有函数

     @Value("#{T(java.lang.Math).random() * 10}")//注意:这里只生成一次,之后你无论调用多少次getRandomValue(),都返回同一个值
private String randomValue;
@RequestMapping(value = "/randomValue", method = RequestMethod.GET)
public String getRandomValue() {
return randomValue;
}

8、直接注入文件进行操作

testfile/testEl.txt

 乔峰--降龙十八掌
杨过--黯然销魂掌
     @Value("classpath:testfile/testEl.txt")
private Resource txtResource;
@RequestMapping(value = "/resource", method = RequestMethod.GET)
public String getResource() {
try {
return IOUtils.toString(txtResource.getInputStream(), "UTF-8");
} catch (IOException e) {
ExceptionUtils.getStackTrace(e);
}
return StringUtils.EMPTY;
}

注意:这个很重要,操作文件使用Apache.commons.io.IOUtils来操作。

9、读取另一个bean的函数的返回值

 @Component("eLComponent")
public class ELComponent {
public String getNameBean(){
return "乔峰";
}
}
     @Value("#{eLComponent.getNameBean()}")//这里必须使用#,使用$是不行的
private String nameBean;
@RequestMapping(value = "/nameBean", method = RequestMethod.GET)
public String getNameBean() {
return nameBean;
}

注意:被调用bean最好指定一下beanName。

第一章 EL表达式常见用法的更多相关文章

  1. Upgrading to Java 8——第一章 Lambda表达式

    第一章 Lambda表达式 Lamada 表达式是Java SE 8中最重要的新特性,长期以来被认为是在Java中缺失的特性,它的出现使整个java 语言变得完整.至少到目前,在这节中你将学习到什么是 ...

  2. jstl与el结合常见用法

    JSTL Functions标签库 在JSP文件中使用Functions标签库,要先通过taglib指令引入该标签库: <%@taglib uri=”http://java.sun.com/js ...

  3. Java Web程序设计笔记 • 【第9章 EL表达式】

    全部章节   >>>> 本章目录 9.1 EL 表达式基础 9.1.1 EL 表达式简介 9.1.2 EL 表达式的定义 9.1.3 使用 EL 访问变量 9.1.4 使用 E ...

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

    概念 EL表达式:EL 全名为Expression Language,就是为了替代<%= %>脚本表达式. 作用 获取数据: EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的 ...

  5. EL表达式经典用法

    1.EL表达式获取list集合length长度: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix=&quo ...

  6. El表达式的用法个人总结

    EL表达式的好处: 通过EL可以简化在JSP开发中对对象的引用,从而规范页面代码,增加程序的可读性及可维护性. EL表达式的几个特点:  1:可以与jsp标签库结合使用,也可以与javascript语 ...

  7. 几个常用EL表达式的用法

    转载至  http://yqsshr.blog.51cto.com/469059/131824 1,用来获取表单数据  param 和 paramValues 1.jsp 的有如下表单 <for ...

  8. 第一章 Lambda表达式

    1.1 Why Lambdas? 当你操作多线程的时候,你会像下面这样将要处理的代码放到run()函数中: class Worker implements Runnable { public void ...

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

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

随机推荐

  1. PHP学习日记 Windows配置PHP+Nginx+自动化脚本

    Windows配置PHP+Nginx+自动化脚本 安装与配置 PHP 下载PHP:传送门 选择合适的版本下载 尽量选Thread Safe 配置PHP: 解压后在文件夹中找到php.ini-devel ...

  2. [CodeForces]CodeForces 13D 几何 思维

    大致题意: 给出N个红点和M个蓝点,问可以有多少个红点构成的三角形,其内部不含有蓝点 假设我们现在枚举了一条线段(p[i],p[j]),我们可以记录线段下方满足(min(p[i].x,p[j].x)& ...

  3. 【运维实战】一次linux日志分割之路——将日志按照每小时进行分割,并按照“日期-小时”格式保存

    是这样的,现在需要对nginx的access.log进行按照每小时进行分割,并且最好还要能够以 “日期+时间”的形式,命名保存. 两点,一个是按照每小时进行分割,一个是将日志以“日期+时间”的形式进行 ...

  4. Android四大组件-服务

    Android服务 android 的服务有点类似windows的服务,没有界面,在后台长时间运行,如果我们这种需求的话我们就可以使用服务来实现. 服务的典型应用场景: 播放音乐,下载等,如果要在一个 ...

  5. Python与Django的时区问题

    在编码中牵扯到时间问题的时候,总是容易被时区问题搞混,一直以来,都是反复试验应付过去,今天终于搞清楚了个中缘由,一个心结也得以化解. Python 的时区问题 datetime.today() / d ...

  6. 微信小游戏 lodash 问题

    在微信小游戏里引入  lodash 会报错 window._ = require("./js/thirdParty/lodash.js"); 所以得把lodash.js 里面的源码 ...

  7. MySQL数据库sql语句

    零.用户管理: 1.新建用户: >CREATE USER name IDENTIFIED BY 'ssapdrow'; 2.更改密码: >SET PASSWORD FOR name=PAS ...

  8. 【ZOJ】3740:Water Level【DP】

    Water Level Time Limit: 2 Seconds      Memory Limit: 65536 KB Hangzhou is a beautiful city, especial ...

  9. 【51nod-1239&1244】欧拉函数之和&莫比乌斯函数之和 杜教筛

    题目链接: 1239:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1239 1244:http://www.51nod. ...

  10. UVALive 5971

    Problem J Permutation Counting Dexter considers a permutation of first N natural numbers good if it ...