"这篇文档介绍了OGNL(Object-Graph Navigation Language)表达式语言在Struts 2框架中的应用,特别是 `$` 符号的用法。OGNL是Struts 2中用于数据绑定和表达式求值的重要工具,主要用于在国际化资源文件和配置文件中引用表达式。文档通过一个具体的例子展示了如何在Action中设置属性,然后在Struts配置文件中引用这些属性,并在JSP页面中展示结果。此外,文档还提到了Struts2框架的特点、优点以及与Struts1的区别,强调了Struts2的无侵入式设计、拦截器、类型转换器、多视图支持和输入验证等特性。对于从Struts1迁移到Struts2的开发者,文档也给出了相关的升级建议。"
在Struts2中,OGNL表达式语言扮演着核心角色,它允许开发者以简洁的语法访问和操作对象图。`$` 符号是OGNL中的关键部分,其主要用途包括:
1. 在国际化资源文件中,`$` 用于引用OGNL表达式,这使得开发者可以在不同语言环境中动态地插入和解析变量。
2. 在Struts 2的配置文件中,`$` 用于引用请求、session、application等作用域中的值。例如,在`struts.xml`配置文件中,`<result>`标签内的`${#request.msgxx}`就是通过`$`引用了request作用域中的`msgxx`属性。
在给出的示例中,Action类设置了`msgxx`属性,并在`struts.xml`配置文件中,将这个属性值传递给JSP页面。JSP页面通过Struts2标签库中的`<s:property>`标签访问并显示了`msgxx`的值。
Struts2作为一款流行的MVC框架,其优势在于:
1. **无侵入式设计**:与Struts1相比,Struts2的应用并不直接依赖ServletAPI和StrutsAPI,降低了框架对应用代码的影响。
2. **拦截器机制**:Struts2引入了拦截器,允许开发者实现面向切面编程(AOP),如权限控制、日志记录等功能。
3. **类型转换器**:Struts2提供了内置的类型转换器,简化了将请求参数转换为预期类型的处理。
4. **多视图支持**:支持JSP、FreeMarker、Velocity等多种视图技术,增强了灵活性。
5. **输入验证**:Struts2的验证机制可以针对特定方法进行,提高了验证的针对性和效率。
6. **国际化和本地化**:提供了全局、包级和Action级别的国际化资源文件管理。
从Struts1迁移到Struts2时,开发者需要注意Struts2并非Struts1的简单升级,而是基于WebWork发展起来的全新框架。迁移过程中,需要考虑现有代码的适应性和重构工作,充分利用Struts2的新特性和优势,以提高应用的性能和可维护性。