Struts2注解配置与使用详解

5星 · 超过95%的资源 需积分: 3 2 下载量 2 浏览量 更新于2024-09-16 收藏 13KB DOCX 举报
"本文将详细介绍如何在Struts2框架中使用注解进行配置,包括web.xml的设置、注解的添加、验证注解的应用以及与Result配置相关的注解使用。" Struts2注解允许开发者在不编写XML配置文件的情况下,通过在Java类和方法上添加注解来实现Action、Interceptor、Result等的配置,极大地简化了开发流程。 一、配置web.xml 在Struts2中,虽然可以使用注解减少XML配置,但基础的过滤器配置仍然需要在web.xml中设置。如以下代码所示,我们需要定义一个名为`struts2`的filter,指定其class为`org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter`。在这里,我们还可以通过`init-param`参数指定Action的包名,例如`com.test.action`,这有助于Struts2自动发现并处理注解的Action。 ```xml <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> <init-param> <param-name>actionPackages</param-name> <param-value>com.test.action</param-value> </init-param> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` 二、加入注解 1. Action注解:使用`@Action`注解可以定义Action的行为。例如: ```java @Namespace(value="/test") @Action(value="file-manager", interceptorRefs={ @InterceptorRef(value="fileUpload", params={"maximumSize","1024000","allowedTypes","image/pjpeg"}), @InterceptorRef(value="basicStack")}, results={@Result(name=ActionSupport.SUCCESS,location="/view/file-manager-sucess.jsp"), @Result(name=ActionSupport.ERROR,location="/view/file-manager-error.jsp")}, exceptionMappings={@ExceptionMapping(exception="java.lang.Exception", result=ActionSupport.ERROR)}) public class FileManagerAction extends ActionSupport { // ... } ``` 在这个例子中,`@Action`指定了Action的名称、拦截器引用以及结果映射。`@InterceptorRef`用于添加拦截器,`@Result`用于定义不同的结果页面。`exceptionMappings`则用于指定异常映射,当出现指定异常时,转向对应的错误页面。 2. 验证注解:Struts2提供了验证注解,例如`@Validations`,用于字段的验证。如下: ```java public class UserAction extends ActionSupport { @Validations( requiredStrings={ @RequiredStringValidator(fieldName="username", message="用户名不能为空!"), @RequiredStringValidator(fieldNam="password", message="密码不能为空!") } ) private String username; private String password; // getters and setters } ``` 这里的`@Validations`包含了两个`@RequiredStringValidator`,分别对用户名和密码字段进行非空验证,如果验证失败,会返回相应的错误消息。 三、Convention的Annotation Struts2 Convention插件进一步简化了注解的使用,它能够自动根据类名、方法名等推断Action的名称、结果页面等。例如,如果你有一个类名为`EditUserAction`,那么Conventions会假设这是一个编辑用户的Action,而不需要显式地添加`@Action`注解。 四、与Result配置相关的Annotation `@Result`注解用于定义Action执行后的结果页面。如上文所示,你可以直接在`@Action`注解内部定义多个结果,例如: ```java @Result(name=ActionSupport.SUCCESS, location="/success.html") @Result(name=ActionSupport.ERROR, location="/error.html") ``` 这样,Action执行成功时会跳转到`/success.html`,出错则跳转到`/error.html`。 总结,Struts2注解使得开发者能够更快速地开发Web应用,减少了XML配置的工作量,提高了开发效率。通过熟练掌握这些注解,可以更好地利用Struts2框架的优势,创建出更加灵活和可维护的项目。