深入详解struts2中的ognl

深入详解struts2中的ognl

ID:21712706

大小:203.00 KB

页数:5页

时间:2018-10-24

深入详解struts2中的ognl_第1页
深入详解struts2中的ognl_第2页
深入详解struts2中的ognl_第3页
深入详解struts2中的ognl_第4页
深入详解struts2中的ognl_第5页
资源描述:

《深入详解struts2中的ognl》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、文章内容来自Java私塾2013-12-27深入详解Struts2中的OGNL7.2 OGNL7.2.1 OGNL概述OGNL是对象图导航语言Object-GraphNavigationLanguage的缩写,它是一种功能强大的表达式语言(ExpressionLanguage,简称为EL),通过它简单一致的表达式语法,可以存取对象的属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。在前面的例子中,登录页面输入框的name用到的名字就是OGNL的表达式,比如:“账号:

2、pe="text"name="account">”,在欢迎页面使用“”。两个"account"表达式都是相同的,但前一个保存对象属性的值,后一个是取得对象属性的值。表达式语言简单、易懂却又功能强大,关于OGNL更多的介绍可以去http://www.ognl.org看看,那里有很详细的文档。7.2.2 OGNL的基本使用1:常量与操作符在OGNL中,可以使用Java的常量操作和数学运算。需要注意的是,String常量可以使用单引号或者双引号括起来,但是单个字符也是使用单引号,所以只

3、有在超过一个字符的时候,使用单引号界定的常量才是String类型的。如果需要只定义一个包含单个字符的String常量,就需要使用转义。      比如:这句话里面的account就是个字符串,因为它是用单引号括起来的。或者这句话,输出就是15,也就是数学运算后的值。2:方法调用OGNL支持方法的调用,这个在后面有演示,比如访问静态方法,比如访问集合对象的方法等,这里就不去赘述了。3:设置数值及表达式列表OGNL让你可以在单条语句

4、中执行逗号分隔的多个表达式,最后一个表达式的返回值作为整条语句的输出。4:使用OGNL访问ValueStack在OGNL中,没有前缀代表了访问当前值栈。      比如前面的示例中,在欢迎页面中使用的“”,这句话中标签的value属性的值就是使用的ognl,它没有任何前缀,就表示直接访问值栈。访问到值栈过后,会按照从栈顶到栈底的顺序,寻找第一个匹配的对象,那就会找到Action中的account属性,然后就取到值了。5:使用OGNL访问ActionCont

5、ext在ognl中,可以通过符号“#”来访问ActionContext中除了值栈之外的各种值,典型如:·#parameters:当前请求中的参数,对应request.getParameter(name)·#request:请求作用域中的属性,对应request.getAttribute(name)·#session:会话作用域中的属性,对应session.getAttribute(name)·#application:应用程序作用域的属性·#attr:按照页面page、请求request、会话session和应用application

6、的顺序,返回第一个符合条件的属性。在引用的时候,需要加上前缀“#”,并指定范围,然后写出要引用哪个属性,形如:“#paramters.account”。更多内容在‘java私塾官网’文章内容来自Java私塾2013-12-27在上一节的示例上稍加修改,来试验一下这些知识。(1)修改action,去掉PreResultListener的注册,然后设置Session和Application的属性值,示例如下: java代码:查看复制到剪贴板打印1.public class HelloWorldAction extends ActionSu

7、pport {  2.    private String account;  3.    private String password;  4.    private String submitFlag;  5.    public String execute() throws Exception {  6.        this.businessExecute();  7.        ActionContext c = ActionContext.getContext();  8.        c.getSession

8、().put("account", "session中的account");  9.        c.getApplication().put("account", "application中的account");  

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。