Struts2 OGNL表达式详解:#号的用法与Struts1对比

需积分: 3 7 下载量 5 浏览量 更新于2024-08-17 收藏 924KB PPT 举报
"本文主要介绍了OGNL表达式语言在Struts2框架中的应用,特别是#号的用法,以及Struts2框架的核心概念、优点和与Struts1的区别。" Struts2是一个流行的MVC(Model-View-Controller)框架,自2005年起,它为开发Web应用程序提供了许多解决方案,包括页面导航、输入验证、统一布局、国际化、Ajax支持等。与它的前身Struts1相比,Struts2具有显著的优势。 首先,Struts2采用无侵入式设计,其应用程序不依赖ServletAPI和StrutsAPI,降低了框架与应用之间的耦合度。例如,在Struts1中,Action类需要继承自`Action`,并实现`execute`方法,而在Struts2中,开发者可以创建任意类作为Action,只需通过注解或配置文件关联到框架。 其次,Struts2引入了拦截器(Interceptor)机制,这是基于AOP(面向切面编程)的一种实现。拦截器允许开发者在特定的执行阶段插入代码,例如实现登录检查、性能监控等功能,极大地增强了灵活性和可扩展性。 再者,Struts2内置了类型转换器(Type Converter),使得从HTTP请求参数到业务对象的自动转换更为便捷。与Struts1相比,开发者不再需要手动注册类型转换器。 此外,Struts2支持多种视图技术,包括JSP、FreeMarker、Velocity等,这为开发者提供了更多选择,可以根据项目需求灵活选择合适的模板引擎。对于输入验证,Struts2允许在特定的方法级别进行,提高了验证的精确性和效率。 国际化和本地化方面,Struts2提供了全局、包和Action范围内的资源文件管理,使得应用更容易适应多语言环境。而在Struts1中,这些资源通常是全局的,管理起来相对复杂。 从Struts1升级到Struts2,最明显的改变是控制器的实现。Struts1依赖ActionServlet,而Struts2则使用Filter作为控制器,这使得Struts2更符合现代Web应用的开发模式,并且能够更好地与其他过滤器链集成。 关于OGNL表达式语言,其#号的用法在Struts2中至关重要。OGNL(Object-Graph Navigation Language)用于在值栈(Value Stack)中查找和操作对象及其属性。值栈是一个对象列表,栈顶对象是默认访问的对象。当在OGNL表达式中直接引用属性时,框架会从栈顶对象开始向下查找该属性,直至找到为止,这简化了对象属性的访问过程。 OGNL的#号用于标记栈顶对象,使得在Struts2中处理请求和显示数据变得更加直观和便捷。通过深入理解OGNL和Struts2的这些核心特性,开发者可以更高效地构建和维护Web应用程序。