- 浏览: 563644 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (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 14227看了一下SpringMVC的源代码,原来SpringMVC也提 ... -
SpringWebflow杂记(一) 框架初探,与SpringMVC的集成
2013-10-23 17:18 1718今日研究了一下SpringWebFlow这个项目,作为Spri ... -
SpringMVC杂记(十六) spring-mvc 与 openid4java
2013-10-12 15:25 3879SpringMVC杂记(十六) spring-mvc 与 op ... -
SpringMVC杂记(十五) spring-mvc controller 的切面
2013-08-01 19:42 6148SpringMVC杂记(十五) spring-mvc cont ... -
Spring集成CXF
2013-06-24 15:53 1577Spring集成CXF 零) jar依赖 <dep ... -
SpringMVC杂记(十四) Ajax方式的JSR303认证
2013-06-13 07:29 4527自己定义一个Exception,用来表示数据绑定失败 im ... -
SpringMVC杂记(十三) 使用FreeMarker作为视图层
2013-06-09 11:55 3407实在没什么好说的,直接上配置文件好了 <bean i ... -
SpringMVC杂记(十二) 自定义Interceptor从Active Directory得到域信息
2013-06-04 14:04 3209一)最近项目中要求实现Web应用的SSO(Single Sig ... -
通过spring,javamail,和freemarker集成发送HTML方式的电子邮件
2013-05-30 14:02 4877一) 现在项目中用的javamail和org.springfr ... -
SpringMVC杂记(十一) 使用Excel视图
2013-04-06 16:06 6634SpringMVC杂记(十一) 使用Excel视图 一) 其 ... -
Spring集成junit
2012-12-24 10:43 1510package junit; import org. ... -
SpringMVC杂记(十) 验证码生成
2012-11-06 10:18 2789以前写过一篇关于这个的博客,现在用SpringMVC了,重写一 ... -
SpringMVC杂记(九) 模拟其他类型(非GET,POST)的请求
2012-10-22 10:49 26991) 以前一个小兄弟问我,SpringMVC是否可以使用很多浏 ... -
SpringMVC杂记(八) 使用阿里巴巴的fastjson
2012-07-21 08:27 102781) 国产开源软件要支持的 <dependency& ... -
ActiveMQ学习笔记(二) JMS与Spring
2012-06-24 10:21 7438上文可见,JMS Native API使用起来不是特别方便。好 ... -
我的SpringSecurity实践
2012-04-08 07:49 8989我的SpringSecurity实践 (一) 数据库与实体类 ... -
SpringMVC杂记(七) Jackson与Hibernate LazyLoding无法正常工作解决办法
2012-03-21 13:35 7064SpringMVC杂记(七) Jackson与Hibernat ... -
SpringMVC杂记(六) 下载文件
2012-03-21 09:04 4287SpringMVC杂记(六) 下载文件 1) jar依赖 ... -
SpringMVC杂记(五) JSR303数据验证
2012-03-16 16:30 12441SpringMVC杂记(五) JSR303数据验证 1) 首 ... -
SpringMVC杂记(四) 数据绑定
2012-03-15 13:44 2263SpringMVC杂记(四) 数据绑定 1) 使用java. ...
相关推荐
EPSONRC+7.0 SPEL+语言参考 最近在做一个工业机器人相关的项目,里面涉及到了EPSON的SCARA机器人,网上相关的资料并不多,好不容易找到了这份用户指南,还是挺有用的,上传分享给有需要的人。
这份**SPEL+编程语言参考手册**详细介绍了如何使用SPEL+来编写高效的程序,以充分发挥EPSON RC+系列机器人的潜力。 ### SPEL+编程语言特点 1. **易于学习和使用:**SPEL+的设计理念是让用户能够快速上手并高效地...
爱普生机器人的语言SPEL+的参考集合, 包含了从安全, 入门, 操作, GUI, SPEL+语言, 构建SPEL+应用, 机器人配置, 输入与输出, 远程控制, RS232C通讯, 实时IO, 视觉指引,模拟器, RC+的API, GUI Builder等等内容....
《爱普生RC+ 7.0 SPEL+语言参考指令》是爱普生公司为用户提供的一款编程手册,专门针对其旗下的机器人系统。SPEL+(Sequential Program Execution Language Plus)是一种高级编程语言,用于控制爱普生机器人进行精确...
### EPSON SPEL+ Lite 语言参考指南 #### 前言 爱普生机器人编程语言(SPEL+)是专为爱普生机器人设计的一种高级编程语言,旨在简化机器人的控制与操作流程。本篇文章将从文档的标题、描述、标签以及部分内容出发...
### Spring 表达式语言 (SpEL) 中文参考手册概览 #### 一、Spring SpEL 概念与用途 Spring SpEL(Spring Expression Language)是一种强大的表达式语言,用于处理运行时查询和操作对象图。SpEL 的设计目标是提供一...
EPSON RC+ 7.0 (Ver.7.1) SPEL+ 语言参考 Rev.2 命令窗口 可在命令窗口使用。 程序 可在 SPEL+ 程序中作为语句使用。 函数 可作为函数使用 想学的朋友下载吧,自动化机器手。
# opt-log 基于SpringBoot、Spring表达式语言 (SpEL)、annotation的操作日志 ### 简介 * 使用annotation来标注方法,标记操作内容 ...下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
SpringBoot SpEL语法扫盲与查询手册的实现 SpringBoot SpEL语法扫盲与查询手册的实现是...SpEL语法扫盲与查询手册的实现对大家的学习或者工作具有一定的参考学习价值,需要的朋友们可以通过示例代码来学习和实践。
《Spring 2.0中文开发参考手册》是针对Spring框架2.0版本的一份详尽指南,旨在帮助开发者深入理解并充分利用Spring 2.0的新特性与改进。Spring框架是Java开发中的一个核心组件,尤其在企业级应用中广泛使用,它通过...
爱普生RC+ 7.0用户指南是爱普生公司为其机器人系统用户准备的官方文档,涵盖了机器人的...这份文档是用户在使用爱普生机器人系统时不可或缺的参考资料,能够帮助用户安全有效地完成机器人系统的安装、操作与维护工作。
Spring 3.0-API 参考手册 Spring 3.0是Spring框架的一次重大更新,而根据SpringSource副总裁Shaun Connolly的描述,Spring框架是当下最流行的Java开发框架。 全新的Spring 3.0提供了全面的RESTful Web服务支持,...
3. **Spring Expression Language (SpEL)**:2.5版引入了SpEL,这是一个强大的表达式语言,用于在运行时查询和操作对象图。它可以用于配置文件中的属性绑定,以及在AOP切面中进行动态决策。 4. **XML配置的简化**:...
《Spring 2.0 中文开发参考手册》是针对Java开发者的重要参考资料,它全面地介绍了Spring框架2.0版本的核心特性和使用方法。Spring作为一款轻量级的Java企业级应用框架,以其强大的依赖注入(Dependency Injection,...
Spring Framework是Java领域中一个非常重要的开源框架,自2003年问世以来,一直是Java开发者使用最为广泛的...通过阅读Spring Framework的参考文档,开发者可以了解到框架的最新动态,为开发工作提供坚实的技术支持。
9. **Spring表达式语言(Spring Expression Language, SpEL)**:SpEL是一种强大的表达式语言,用于在运行时查询和操作对象图。 10. **JSR-330注解支持**:Spring 2.0引入了对JSR-330标准注解的支持,如`@Inject`和...
7. **Spring表达式语言(Spring Expression Language, SpEL)**:SpEL是Spring提供的强大表达式语言,用于在运行时查询和操作对象图。它在处理Bean属性、方法调用、条件判断等方面非常有用。 8. **国际化(I18N)支持**...
它可能会重点介绍新特性,如XML配置的简化(如@Annotations)、Bean定义的增强(如Prototype scope和Lazy initialization)、表达式语言(Spring Expression Language, SpEL)以及对JSR-303 Bean Validation的支持。...