"本文主要总结了Struts2框架中的核心概念,包括OGNL、值栈、如何将数据放入值栈并在JSP中获取、拦截器以及表单校验器的使用,以及国际化资源的处理。"
在Struts2框架中,OGNL (Object-Graph Navigation Language) 是一种强大的表达式语言,类似于EL表达式,用于访问和操作对象图。它允许开发者在Action对象和视图之间方便地传递数据。值栈是Struts2的一个关键特性,它是一个存储数据的容器,类似于域对象,但主要应用于Action层。值栈在每个Action对象内部都有一个实例,由于Action每次请求都会创建新的实例,因此值栈也是多实例的。
值栈的存储位置是在每个Action对象内部,不同于Servlet的单例模式,Action的多实例特性确保了数据的安全性。值栈的使用范围局限于Action,它包含两个主要部分:root(一个List集合)和context(一个Map集合)。root用于存储实际的数据,而context存储的是对request、session、application、parameters和attr等对象的引用。
将数据放入值栈主要有三种方式:通过set方法、push方法或直接在Action的成员变量中定义并生成get方法。在JSP中获取值栈中的数据同样有多种途径,包括直接访问、使用OGNL表达式或者通过Action的getter方法。
对于对象的存储,首先需要在Action中声明对象变量并生成getter方法,然后在具体方法中为对象属性赋值。在JSP中,可以通过OGNL或者getter方法来访问这些对象。
对于集合(如List)的操作,也需要在Action中声明List类型的变量并生成getter方法,然后在方法中向List中添加元素。在JSP页面上,可以使用迭代器、EL表达式或者OGNL来遍历并显示集合内容。
拦截器是Struts2中用于增强Action功能的组件,它们可以实现日志记录、权限检查、性能监控等功能。通过自定义拦截器,开发者可以灵活地控制请求处理流程。
表单校验器则用于验证用户提交的数据,确保其符合业务规则。Struts2提供了内置的校验框架,允许开发者通过注解或XML配置文件定义验证规则,以实现数据的有效性检查。
至于国际化资源的使用,Struts2允许开发者创建资源文件,根据用户的语言环境动态加载相应的文本,实现应用的多语言支持。
Struts2通过OGNL和值栈提供了高效的数据管理,拦截器增强了Action的功能,表单校验器确保了数据质量,而国际化资源支持使得应用更具包容性。这些核心概念构成了Struts2强大且灵活的MVC架构。