- 浏览: 556962 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (145)
- apache-struts (3)
- apache-shiro (4)
- apache-wicket (1)
- spring (34)
- spring-data-jpa (2)
- spring-mvc (20)
- spring-security (1)
- spring-webflow (1)
- hibernate (2)
- mongodb (1)
- ibatis (5)
- mysql (4)
- 开源组件 (18)
- java (3)
- maven (7)
- jBPM (1)
- EJB (1)
- JMS (2)
- servlet / jsp (9)
- javascript / jquery (10)
- 工作技巧 (12)
- ubuntu (6)
- bootstrap (10)
- javaee (1)
- 他山石 (7)
- jetbrick (1)
最新评论
-
yubao2008:
[size=x-small]为什么我也这样试了, 就是没有生效 ...
javax.servlet.http.HttpServletResponse 得到 status_code -
chenrl:
...
SpringMVC杂记(十五) spring-mvc controller 的切面 -
LONGTENGLONG:
你好,这样配置的,得到的集合为空,是什么原因?
apache-shiro杂记(一) 统计在线用户数目 -
xiafengfeiwu:
[flash=200,200][url]引用[/url][/f ...
apache-shiro 学习笔记 -
3108493554:
你好 ,有些问题想请教下,加下我qq310849354,你这上 ...
SpringMVC杂记(十二) 自定义Interceptor从Active Directory得到域信息
官方参考
特性概览
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
字符表达式:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
布尔和关系表达式:
关系表达式语言中可以使用符号: ==, >=, <=, !, >, <
也可以使用eq, ge, le, not, gt, lt
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
正则表达式:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
类表达式:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
访问properties,arrays,lists,maps:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
方法调用:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
赋值表达式:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
三元表达式:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
使用变量:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
用户自定义函数:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
集合的选择:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
集合的投影:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
内联列表:
特性概览
- 字符表达式
- 布尔和关系操作符
- 正则表达式
- 类表达式
- 访问properties,arrays,lists,maps
- 方法调用
- 赋值
- 调用构造器
- 三元操作符
- 变量
- 用户自定义函数
- 集合投影
- 集合选择
- 内联列表
- 模板表达式
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
字符表达式:
@Test public void test01() { // 字符串表达式 ExpressionParser parser = new SpelExpressionParser(); Expression exp = parser.parseExpression("new String('Hello, World').concat('!')"); System.out.println(exp.getValue()); } @Test public void test02() { // 字符串表达式 ExpressionParser parser = new SpelExpressionParser(); Expression exp = parser.parseExpression("'HelloWorld'.bytes.length"); int length= (Integer) exp.getValue(); System.out.println(length); }
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
布尔和关系表达式:
@Test public void test03() { // 布尔和关系表达式 ExpressionParser parser = new SpelExpressionParser(); EvaluationContext context = new StandardEvaluationContext(new java.util.Date()); Expression exp = parser.parseExpression("#root.year + 1900 eq 2011"); boolean flag = exp.getValue(context, Boolean.class); System.out.println(flag); } @Test public void test04() { // 布尔和关系表达式 ExpressionParser parser = new SpelExpressionParser(); EvaluationContext context = new StandardEvaluationContext(new java.util.Date()); Expression exp = parser.parseExpression("!(#root.year + 1900 == 2011)"); boolean flag = exp.getValue(context, Boolean.class); System.out.println(flag); }
关系表达式语言中可以使用符号: ==, >=, <=, !, >, <
也可以使用eq, ge, le, not, gt, lt
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
正则表达式:
@Test public void test05() { // 正则表达式 ExpressionParser parser = new SpelExpressionParser(); Expression exp = parser.parseExpression("'138-8000-4000' matches '\\d{3}-\\d{4}-\\d{4}'"); boolean flag = exp.getValue(Boolean.class); System.out.println(flag); }
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
类表达式:
@Test public void test06() { // 类表达式 ExpressionParser parser = new SpelExpressionParser(); Expression exp = parser.parseExpression("T(java.util.UUID).randomUUID().toString().toUpperCase()"); String uuid = exp.getValue(String.class); System.out.println(uuid); }
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
访问properties,arrays,lists,maps:
@Test public void test07() { // 访问arrays String[] array = new String[] {"马勒", "格", "彼得"}; StandardEvaluationContext context = new StandardEvaluationContext(); context.setVariable("array", array); ExpressionParser parser = new SpelExpressionParser(); String value = parser.parseExpression("#array[0]").getValue(context, String.class); System.out.println(value); } @Test public void test08() { // 访问list List<String> list = new ArrayList<String>(3); list.add("马勒"); list.add("格"); list.add("彼得"); StandardEvaluationContext context = new StandardEvaluationContext(); context.setVariable("list", list); ExpressionParser parser = new SpelExpressionParser(); String value = parser.parseExpression("#list[1]").getValue(context, String.class); System.out.println(value); } @Test public void test09() { // 访问map Map<String, String> map = new HashMap<String, String>(); map.put("first-name", "马勒"); map.put("middle-name", "格"); map.put("last-name", "彼得"); StandardEvaluationContext context = new StandardEvaluationContext(); context.setVariable("map", map); ExpressionParser parser = new SpelExpressionParser(); Expression exp = parser.parseExpression("#map['last-name']"); String value = exp.getValue(context, String.class); System.out.println(value); } @Test public void test09_2() { // 访问Properties ExpressionParser parser = new SpelExpressionParser(); EvaluationContext context = new StandardEvaluationContext(System.getProperties()); Expression exp = parser.parseExpression("#root['user.dir']"); String userDir = exp.getValue(context, String.class); System.out.println("user dir :" + userDir); }
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
方法调用:
@Test public void test10() { // 方法调用 // 静态方法和非静态方法都可以用 String el = "T(java.util.Calendar).getInstance().getTimeInMillis()"; ExpressionParser parser = new SpelExpressionParser(); Expression exp = parser.parseExpression(el); String str = exp.getValue(String.class); System.out.println(str); }
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
赋值表达式:
@Test public void test11() { // 赋值 List<String> list = new ArrayList<String>(); list.add(""); list.add(""); list.add(""); StandardEvaluationContext context = new StandardEvaluationContext(list); ExpressionParser parser = new SpelExpressionParser(); Expression exp = parser.parseExpression("#root[2] = '123'"); String result = (String)exp.getValue(context); System.out.println(result); System.out.println(list.get(2)); }
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
三元表达式:
@Test public void test14() { // 三元操作符 ExpressionParser parser = new SpelExpressionParser(); String result = parser.parseExpression("true?'love':'hate'").getValue(String.class); System.out.println(result); } @Test public void test15() { // 三元操作符 ExpressionParser parser = new SpelExpressionParser(); String name = parser.parseExpression("null?:'Unknown'").getValue(String.class); System.out.println(name); // 'Unknown' } @Test public void test16() { // 三元操作符 class User { public String name; }; EvaluationContext context = new StandardEvaluationContext(new User()); ExpressionParser parser = new SpelExpressionParser(); Expression exp = parser.parseExpression("#root.name?.length()"); Integer length = exp.getValue(context, Integer.class); System.out.println(length); }
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
使用变量:
@Test public void test17() { // 变量 class User { public String name; }; User u = null; StandardEvaluationContext context = new StandardEvaluationContext(); context.setVariable("user", u = new User()); ExpressionParser parser = new SpelExpressionParser(); Expression exp = parser.parseExpression("#user.name = 'Malege Peter'"); String name = exp.getValue(context, String.class); System.out.println(name); System.out.println(u.name); }
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
用户自定义函数:
@Test public void test18() throws SecurityException, NoSuchMethodException { // 用户自定义函数 class StringUtil { public String reverse(CharSequence s) { StringBuffer buffer = new StringBuffer(s); return buffer.reverse().toString(); } }; StandardEvaluationContext context = new StandardEvaluationContext(new StringUtil()); context.registerFunction("reverse", StringUtil.class.getDeclaredMethod("reverse", new Class<?>[]{CharSequence.class})); ExpressionParser parser = new SpelExpressionParser(); Expression exp = parser.parseExpression("reverse('Hello, World.')"); String str = exp.getValue(context, String.class); System.out.println(str); }
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
集合的选择:
@Test public void test19() { // 集合选择 int[] primes = {1,3,5,7,11,13,17,19,23}; EvaluationContext context = new StandardEvaluationContext(primes); ExpressionParser parser = new SpelExpressionParser(); Expression exp = parser.parseExpression("#root.?[#this le 11]"); List<Integer> list = exp.getValue(context, List.class); System.out.println(list); }
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
集合的投影:
@Test public void test20() { // 集合投影 class User { public String name; public String password; public User(String n, String p) { name = n; password = p; } }; Map<Integer, User> map = new HashMap<Integer, User>(); map.put(1, new User("zhang san", "1234")); map.put(2, new User("li si", "12345")); map.put(3, new User("wang wu", "****")); StandardEvaluationContext context = new StandardEvaluationContext(); context.setVariable("map", map); ExpressionParser parser = new SpelExpressionParser(); Expression exp = parser.parseExpression("#map.![value.name]"); List<String> list = exp.getValue(context, List.class); System.out.println(list); }
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
内联列表:
@Test @Test public void test21() { // 内联列表 ExpressionParser parser = new SpelExpressionParser(); Expression exp = parser.parseExpression("{{1,2,3,4}, {5,6,7,8}}"); List<List<Integer> > list = exp.getValue(List.class); for (List<Integer> is : list) { System.out.println(is); } }
发表评论
-
SpringMVC杂记(十八) ServletRequestAttributes的应用
2014-02-28 12:38 14149看了一下SpringMVC的源代码,原来SpringMVC也提 ... -
SpringWebflow杂记(一) 框架初探,与SpringMVC的集成
2013-10-23 17:18 1679今日研究了一下SpringWebFlow这个项目,作为Spri ... -
SpringMVC杂记(十六) spring-mvc 与 openid4java
2013-10-12 15:25 3827SpringMVC杂记(十六) spring-mvc 与 op ... -
SpringMVC杂记(十五) spring-mvc controller 的切面
2013-08-01 19:42 6074SpringMVC杂记(十五) spring-mvc cont ... -
Spring集成CXF
2013-06-24 15:53 1533Spring集成CXF 零) jar依赖 <dep ... -
SpringMVC杂记(十四) Ajax方式的JSR303认证
2013-06-13 07:29 4490自己定义一个Exception,用来表示数据绑定失败 im ... -
SpringMVC杂记(十三) 使用FreeMarker作为视图层
2013-06-09 11:55 3364实在没什么好说的,直接上配置文件好了 <bean i ... -
SpringMVC杂记(十二) 自定义Interceptor从Active Directory得到域信息
2013-06-04 14:04 3165一)最近项目中要求实现Web应用的SSO(Single Sig ... -
通过spring,javamail,和freemarker集成发送HTML方式的电子邮件
2013-05-30 14:02 4834一) 现在项目中用的javamail和org.springfr ... -
SpringMVC杂记(十一) 使用Excel视图
2013-04-06 16:06 6595SpringMVC杂记(十一) 使用Excel视图 一) 其 ... -
Spring集成junit
2012-12-24 10:43 1465package junit; import org. ... -
SpringMVC杂记(十) 验证码生成
2012-11-06 10:18 2741以前写过一篇关于这个的博客,现在用SpringMVC了,重写一 ... -
SpringMVC杂记(九) 模拟其他类型(非GET,POST)的请求
2012-10-22 10:49 26481) 以前一个小兄弟问我,SpringMVC是否可以使用很多浏 ... -
SpringMVC杂记(八) 使用阿里巴巴的fastjson
2012-07-21 08:27 102401) 国产开源软件要支持的 <dependency& ... -
ActiveMQ学习笔记(二) JMS与Spring
2012-06-24 10:21 7365上文可见,JMS Native API使用起来不是特别方便。好 ... -
我的SpringSecurity实践
2012-04-08 07:49 8924我的SpringSecurity实践 (一) 数据库与实体类 ... -
SpringMVC杂记(七) Jackson与Hibernate LazyLoding无法正常工作解决办法
2012-03-21 13:35 7012SpringMVC杂记(七) Jackson与Hibernat ... -
SpringMVC杂记(六) 下载文件
2012-03-21 09:04 4238SpringMVC杂记(六) 下载文件 1) jar依赖 ... -
SpringMVC杂记(五) JSR303数据验证
2012-03-16 16:30 12388SpringMVC杂记(五) JSR303数据验证 1) 首 ... -
SpringMVC杂记(四) 数据绑定
2012-03-15 13:44 2221SpringMVC杂记(四) 数据绑定 1) 使用java. ...
相关推荐
EPSONRC+7.0 SPEL+语言参考 最近在做一个工业机器人相关的项目,里面涉及到了EPSON的SCARA机器人,网上相关的资料并不多,好不容易找到了这份用户指南,还是挺有用的,上传分享给有需要的人。
SPEL+编程语言参考手册中文版,很好的资源,很细致。
爱普生机器人的语言SPEL+的参考集合, 包含了从安全, 入门, 操作, GUI, SPEL+语言, 构建SPEL+应用, 机器人配置, 输入与输出, 远程控制, RS232C通讯, 实时IO, 视觉指引,模拟器, RC+的API, GUI Builder等等内容....
EPSON RC+ 7.0 (Ver.7.1) SPEL+ 语言参考 Rev.2 命令窗口 可在命令窗口使用。 程序 可在 SPEL+ 程序中作为语句使用。 函数 可作为函数使用 想学的朋友下载吧,自动化机器手。
Spring Expression Language (SpEL)中文文档。基于Spring4.x。
爱普生机器人指令手册
EPSON RC+ 7.0 用户指南Spel,爱普生RC+7.0 中文版,是一个非常好的参考文档
主要介绍了spring表达式语言SpEL用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
主要介绍了Spring实战之SpEl语法,结合实例形式分析了SpEl创建数组、集合及解析变量等相关操作原理与实现技巧,需要的朋友可以参考下
主要介绍了SpringBoot SpEL语法扫盲与查询手册的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
今天小编就为大家分享一篇关于Spring组件开发模式支持SPEL表达式,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
主要介绍了Spring实战之Bean定义中的SpEL表达式语言支持操作,结合实例形式分析了Bean定义中的SpEL表达式语言操作步骤与实现技巧,需要的朋友可以参考下
# opt-log 基于SpringBoot、Spring表达式语言 (SpEL)、annotation的操作日志 ### 简介 * 使用annotation来标注方法,标记操作内容 ...下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
主要介绍了如何使用SpEL表达式实现动态分表查询,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Spring 3.0-API 参考手册 Spring 3.0是Spring框架的一次重大更新,而根据SpringSource副总裁Shaun Connolly的描述,Spring框架是当下最流行的Java开发框架。 全新的Spring 3.0提供了全面的RESTful Web服务支持,...
基于JSON的SpEL表达式查询 11.3.5。类型安全的查询方法 11.3.6。全文搜索查询 11.3.7。预测 11.4。杂 11.4.1。CDI集成 12.反应性MongoDB存储库 12.1。介绍 12.2。活性成分库 12.3。用法 12.4。特征 12.4.1。地理空间...
Spring 3.0中,新的表达式语言名叫Spring Expression Language(SpEL,直译就是Spring表达式语言)。Shaun将其描述为“嵌入在Spring编程模型上的,可以用来在Spring项目之间描述任务以及配置的微型脚本语言。SpEL...
SpEL表达式条件 xvi. 37. WebSockets xvii. 38. 接下来阅读什么 6. V. Spring Boot执行器: Production-ready特性 i. 39. 开启production-ready特性 ii. 40. 端点 i. 40.1. 自定义端点 ii. 40.2. 健康信息 iii. 40.3...