Struts2是一个基于WebWork改进的MVC框架,提供了许多特性如拦截器、类型转换等。本文将深入探讨Struts2的基本概念、环境搭建及高级特性。
Struts2简介
Struts2继承自WebWork 2,具有无侵入式设计,支持多种视图技术(如JSP, Freemarker),并提供强大的拦截器机制用于实现AOP编程。
开发环境配置
首先下载Struts2所需的jar包,并将其添加到项目中。接着编写
struts.xml文件来定义Action和Result映射关系。最后,在
web.xml中配置过滤器以启用Struts2。
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
包(package)管理
在Struts2中,使用包来组织Action。每个包可以有多个Action,并且可以通过namespace属性指定作用域。例如:
<package name="example" namespace="/example" extends="struts-default">
<action name="hello" class="com.example.HelloWorldAction">
<result>/hello.jsp</result>
</action>
</package>
Action配置与默认值
如果未指定
class或
method属性,则默认使用
ActionSupport类及其
execute()方法。若未指定
result的名字,默认为
success。
结果类型
Struts2支持多种结果类型,包括
dispatcher,
redirect, 和
redirectAction。例如,重定向至同一包内的另一个Action:
<result type="redirectAction">anotherAction</result>
属性注入
通过设置getter/setter方法,Struts2能够自动注入请求参数到Action实例中。
常量配置
通过修改
struts.properties文件中的常量,可以定制Struts2的行为,比如设置字符编码或是否开启开发者模式。
处理流程
Struts2的核心控制器是
StrutsPrepareAndExecuteFilter,它负责拦截所有请求,并根据配置转发给相应的Action进行处理。
多配置文件
为了便于管理和维护,可以将
struts.xml拆分成多个文件,并使用
<include>标签引入它们。
动态方法调用
允许通过
actionName!methodName的方式直接调用Action中的特定方法,但需确保
struts.enable.DynamicMethodInvocation设为true。
通配符配置
利用通配符简化Action配置,例如:
<action name="user_*" method="{1}" class="com.example.UserAction">
<result>/user/{1}.jsp</result>
</action>
类型转换器
可以创建自定义类型转换器来处理特殊的数据格式转换任务。
访问Servlet API
可通过
ActionContext或实现相关接口获取HttpServletRequest等对象。
文件上传
只需在Action中添加相应的属性即可轻松实现文件上传功能。
输入校验
Struts2提供了两种方式来进行输入校验:手动编写验证逻辑或使用XML配置文件。
国际化
通过资源文件和
<s:text>标签实现页面内容的本地化。
OGNL表达式
OGNL是一种强大的表达式语言,广泛应用于Struts2中用于数据绑定和逻辑控制。
标签库
Struts2标签库提供了丰富的UI组件,帮助快速构建表单和其他界面元素。