OGNL表达式在Struts2中的应用与$符号详解

需积分: 0 1 下载量 129 浏览量 更新于2024-08-17 收藏 1.73MB PPT 举报
OGNL表达式语言在Struts 2应用中的广泛使用 在Struts 2框架中,OGNL(Object-Graph Navigation Language)表达式语言是一种强大的工具,它允许在配置文件和动态网页中进行灵活的数据访问和操作。OGNL的主要用途有两个方面: 1. 国际化和本地化:在国际化资源文件中,"$"符号被用于引用OGNL表达式,这使得开发者能够根据用户选择的语言环境动态地加载和替换字符串资源。例如,在struts.xml文件中,`<result name="ognl">/ognl/ongl.jsp?msg=${#request.msgxx}</result>`这一行,`msg`就是通过OGNL表达式从`HttpServletRequest`的`getAttribute`方法获取的`msgxx`属性值。 2. 动态配置和数据绑定:在Struts 2的action配置中,OGNL表达式用于引用请求作用域中的变量。当我们在`ognlAction_`命名空间下的action方法中设置`msgxx`属性后,`<s:property value="#parameters.msg[0]"/>`这段JSP代码则展示了如何在页面上显示该值。这里,`#parameters`代表HTTP请求参数,`msg`是通过OGNL动态计算的,从而实现了数据的动态绑定。 Struts 2作为一个MVC(Model-View-Controller)框架,相比Struts 1有显著的优势,包括: - **解耦设计**:Struts 2不再像Struts 1那样紧密依赖Servlet API和Struts API,这使得应用更加灵活且易于维护,避免了侵入式设计带来的限制。 - **拦截器机制**:Struts 2引入了拦截器,使得面向切面编程(AOP)成为可能,有助于实现诸如权限控制这样的业务逻辑。 - **类型转换器**:Struts 2内置了类型转换功能,无需像Struts 1那样自定义转换器,简化了数据处理过程。 - **多表现层支持**:Struts 2支持多种视图技术,如JSP、FreeMarker、Velocity等,提高了开发者的灵活性。 - **输入验证改进**:Struts 2的输入验证更为精细,可以针对特定方法进行校验,解决了Struts 1中全局验证的局限性。 尽管Struts 2在名称上与Struts 1相似,但实际上它是基于WebWork进行重构的,更像是WebWork的现代化版本。从Struts 1升级到Struts 2时,开发者需要注意调整原有的代码结构,理解新的配置方式,并利用OGNL表达式的优势来提升应用的灵活性和性能。