一、配置web.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>
二、加入注解
@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)}
)
验证注解:
@Validations(
requiredStrings={
@RequiredStringValidator(fieldName="username",message="用户名不能为空!"),
@RequiredStringValidator(fieldName="telNum",message="电话号码不能为空!")
},
regexFields={@RegexFieldValidator(fieldName="telNum",expression="^(//+86|0|1)//d{10,11}$",
message="电话号码格式不正确!")}
)
跳过验证注解:
@SkipValidation
三、Convention的Annotation
1)与Action相关的两个Annotation是@Action 和@Actions
2)@Action中可指定一个value属性。类似于指定<action name=””/>属性值
3)@Action中还可以指定一个params属性,该属性是一个字符串数组,用于该Acion指定的参数名和参数值。params属性应遵守如下格式:{“name1”,”value1”,”name2”,”value2”}
4)@Actions 也用于修饰Action类里的方法,用于将该方法映射到多个URL.@Actions用于组织多个@Action.因此它可将一个方法映射成多个逻辑Action。
四、与Result配置相关的Annotation
1)@ResultPath @Result 和Results
2)@Results用于组织多个@Result因此它只需指定一个value属性值,该value属性值为多个@Result
3)@Result相当于struts.xml文件中的<result/>元素。使用@Result必须指定一个name属性,相当于<result name=””/>另外,它还有几个可选的属性。
☆ type 相当于<result type=””/>指定返回视图资源的类型
☆ location 相当于<result>…..</result>中间部分,用于指定实际视图位置
☆ params:该属性相当于<result/>元素里多个<param../>子元素的作用,用于为该Result指定参数值。该属性应满足{“name1”,”value1”,”name2”,”value2”}格式
4)@Result有以下两种用法
1.Action级的Result映射:以@Actions组合多个@Action后修饰的Action类。这种Result映射对该Action里的所有方法都有效。
2.方法级Result映射:将多个@Result组成数组后作为@Action的results属性值。这种Result映射仅对被修饰的方法有效。
5)@ResultPath则用于修饰包和Action类,用于改变被修饰Action所对应的物理视图资源的根路径。举例说:默认情况下,Convention都会到WEB-INF/content路径下找物理视图资源,一旦我们使用@ResultPath("/view")修饰该Action,系统将回到view目录下寻找物理视图资源。
五、与包和命名空间相关的Annotation:
@Namespace:修饰Action类或其所在的包。该Annotation中指定一个value属性值,用于指定被修饰的Action所在的命名空间
@Namespaces:修饰Action类或其所在的包,用于组合多个@Namespace
@ParentPackage: 用于指定被修饰的Action所在包的父包。
六、与异常处理相关的Annotation
@ExceptionMappings 用于组织多个@ExceptionMapping,因此它只需指定一个value属性值,该value属性值为多个@ExceptionMapping。
@ExceptionMapping 用于定义异常类和物理视图之间的对应关系,也相当于struts.xml文件里<exception-mapping../>元素的作用 使用时,必须注意以下两个属性:
exception: 用于指定异常类
result:用于指定逻辑视图
@ExceptionMpping有如下两种用法
Action级的异常定义:以@ExceptionMappings组合多个@ExceptionMapping后修饰的Action类。这种异常定义对Action中的所有方法有效
方法级的异常定义:将多个@ExceptionMapping组成数组后作为@Action的exceptionMappings属性值,这种异常定义仅对被修饰的方法有效。
七、与拦截器配置相关的Annotation
与拦截器配置的Annotation有@InterceptorRef、@InterceptorRefs和@DefaultInterceptorRef
@InterceptorRefs用于组织多个@InterceptorRef,因此它只需要指定一个value属性值,该value属性值为多个@InterceptorRef
@InterceptorRef用于为指定Action引用lanjieq或者是拦截器栈。也就相当于strut.xml中位于<action../>元素内部的<interceptor-ref../>子元素的作用。使用@InterceptorRefAnnotation时,必须制定一个value属性,用于指定所引用的拦截器或拦截器栈的名字。相当于<interceptor-ref../>子元素里name属性的作用。
八、查看struts2配置
为了看到struts2应用里的Action等各种资源的影射情况,struts2提供了Config Browser插件。
使用方法:将struts2-config-browser-plugin-2.1.6.jar文件复制到struts2应用的WEB-INF/lib目录中。
打开首页地址:http://localhost:8080/应用名字/config-browser/actionNames.action 这里可以看到Config Browser插件的首页。
struts2注解实例:
使用注解完成一个Action的流程必须要如下的7个jar包
1.commons-fileupload-1.2.1.jar
2.commons-io-1.3.2.jar
3.freemarker-2.3.15.jar
4.ognl-2.7.3.jar
5.struts2-convention-plugin-2.1.8.1.jar
6.struts2-core-2.1.8.1.jar
7.xwork-core-2.1.6.jar
如下用户登录的Action通过注解的方式验证通过:
[java] view plaincopy
01.package com.huawei.action;
02.import org.apache.struts2.convention.annotation.Action;
03.import org.apache.struts2.convention.annotation.ExceptionMapping;
04.import org.apache.struts2.convention.annotation.ExceptionMappings;
05.import org.apache.struts2.convention.annotation.Namespace;
06.import org.apache.struts2.convention.annotation.ParentPackage;
07.import org.apache.struts2.convention.annotation.Result;
08.import org.apache.struts2.convention.annotation.Results;
09.import com.opensymphony.xwork2.ActionSupport;
10./**
11. * @name
12. * @date 2011-3-24
13. * @action LoginAction.java
14. * @time 下午11:23:58
15. * @package_name com.huaweiaction
16. * @project_name steutsAction
17. */
18./*
19. * 这个小Demo的主要作用就是温故一下Struts2 Action的注解
20. * 一般在一个项目实施开发中是不会配置struts.xml进行Action的转发或重定向的,其都是通过注解的方式来配置Action的
21. */
22.///////////使用注解来配置Action///////////////////////////
23.
24. @ParentPackage("struts-default")
25. // 父包
26. @Namespace("")
27. @Results( {
28. @Result(name = com.opensymphony.xwork2.Action.SUCCESS, location = "/msg.jsp"),
29. @Result(name = com.opensymphony.xwork2.Action.ERROR, location = "/erlogin.jsp") })
30.
31. // @ExceptionMappings 一级声明异常的数组
32. // @ExceptionMapping 映射一个声明异常
33. @ExceptionMappings( {
34. @ExceptionMapping(exception = "java.lange.RuntimeException", result = "error") })
35. public class LoginAction extends ActionSupport {
36. private static final long serialVersionUID = -2554018432709689579L;
37. private String loginname;
38. private String pwd;
39.
40. // @Action(value="login") 指定某个请求处理方法的请求URL。注意,它不能添加在Action类上,要添加到方法上。
41. @Action(value = "loginName")
42. public String login() throws Exception {
43. if ("HEFE".equalsIgnoreCase(loginname.trim())&&"123".equalsIgnoreCase(pwd.trim())) {
44. return SUCCESS;
45. }
46. else {
47. System.out.println("===========");
48. return ERROR;
49. }
50. }
51.
52. @Action(value = "add", results = { @Result(name = "success", location = "/index.jsp") })
53. public String add() throws Exception {
54. return SUCCESS;
55. }
56.
57. public String getLoginname() {
58. return loginname;
59. }
60.
61. public void setLoginname(String loginname) {
62. this.loginname = loginname;
63. }
64.
65. public String getPwd() {
66. return pwd;
67. }
68.
69. public void setPwd(String pwd) {
70. this.pwd = pwd;
71. }
72.
73. }
分享到:
相关推荐
标题提到的"Struts2注解开发jar"主要指的是`struts2-convention-plugin`,这是一个Struts2的插件,它的主要作用是支持基于约定优于配置(Convention over Configuration)的开发模式。描述中提到的`struts2-...
Struts2注解登录是Java Web开发中一种简化配置的方式,它允许开发者在代码中直接定义控制器、动作和结果页面的映射,从而避免了传统方式下需要在`struts.xml`配置文件中的繁琐设置。这种做法提高了代码的可读性和可...
本教程将通过一个"Struts2注解Demo"来深入探讨Struts2中的注解用法,帮助开发者更高效地配置和管理Action类。 首先,Struts2的注解允许我们避免传统的XML配置,从而实现更加简洁、直观的编程方式。在`Struts2Demo`...
<constant name="struts.objectFactory" value="struts注解工厂类全限定名,比如:org.apache.struts2.spring.StrutsSpringObjectFactory" /> <package name="default" extends="struts-default"> ...
该例子为struts2注解与拦截器demo,利用myEclipse8.5开发,导入刚才后,自动加载所需struts2的jar包,可以直接运行,是初学struts2注解、拦截器很好的例子,保证10分钟学会2种技术,愿意分享给大家。
### Struts2 注解详解 #### 一、Struts2 Convention 插件介绍与使用 在 Struts2 框架的发展过程中,随着版本的更新和技术的演进,其配置方式也发生了变化。从 Struts2.1 版本开始,官方不再推荐使用 Codebehind ...
### Struts2注解详细说明 #### 一、概述 Struts2框架是Apache软件基金会下的一个开源项目,它提供了一种构建企业级Java Web应用的解决方案。自Struts2.1版本开始,引入了一个重要的插件——Convention Plugin,该...
"struts2注解必须包"指的是Struts2提供的一系列注解,它们对于简化Struts2应用的配置和增强其功能至关重要。 标题中的"struts2-convention-plugin-2.1.8.1.jar"是Struts2的约定插件(Convention Plugin)的一个特定...
在这个小实例中,我们将深入探讨如何利用Struts2的注解来构建一个简洁而高效的Web应用。 首先,让我们了解什么是注解。在Java中,注解是一种元数据,它提供了一种安全的方法来向编译器、JVM或框架提供信息。Struts2...
"Struts2 注解配置 Action 及拦截器几种不同方式写法对应的路径指向" Struts2 注解配置 Action 及拦截器是 Struts2 框架中的核心组件之一,负责处理用户请求并返回响应结果。下面,我们将通过详细的解释和示例代码...
### Struts2注解配置全面解析 #### 一、引言 随着Struts2框架的不断更新和发展,很多开发者在尝试使用注解方式进行配置时往往会遇到不少难题。尤其是在使用Struts2.1及以上版本时,由于大部分教程和资料仍然基于...
下面我们将深入探讨Struts2的关键概念、注释以及使用方法。 **1. Struts2架构** Struts2的核心是Action类,它是处理用户请求的入口点。每个Action对应一个业务逻辑,当用户发起请求时,Struts2会根据配置文件(如...
Struts2 和 Spring 的整合是企业级 Java Web 开发中常见的技术栈,通过注解配置可以使项目更加简洁、易于维护。Struts2 提供了一种使用注解替代 XML 配置的方式,使得开发者无需编写繁琐的 struts.xml 文件,即可...
Struts2注解配置教程是指导开发者如何使用Java注解替代传统的XML配置来配置Struts2框架的一个教程系列。本文档主要涵盖了Struts2中注解配置的一些基本知识点以及如何通过注解实现零配置。 ### 注解配置之前 在介绍...
Struts2注解配置是Java Web开发中一种高效、简洁的框架配置方式,它允许开发者在类或方法级别上直接定义Action、结果类型、参数映射等信息,从而避免了传统XML配置文件的繁琐。本资料集合了关于Struts2注解配置的...
### Struts2注解使用详解 #### 一、引言 在Java Web开发领域,Struts2框架以其灵活的架构和强大的功能深受开发者喜爱。传统上,Struts2的配置依赖于XML文件,如`struts.xml`,这在大型项目中可能会导致配置文件...
在IT领域,特别是Java开发框架中,Spring和Struts2都是极为重要的技术栈,它们各自通过注解(Annotation)机制提供了强大的功能扩展性和代码简洁性。以下是对Spring和Struts2注解的深入解析和使用指南。 ### Spring...
Struts2注解是Struts2框架中的一种简化配置的方式,允许开发者在代码中直接进行配置,无需在XML文件中进行繁琐的设置。这提高了开发效率,并使得代码更具有可读性。 一、配置web.xml 在Struts2中,web.xml是部署...
Struts2注释是Struts2框架中一种重要的元数据表达方式,它允许开发者在Java代码中直接标注信息,以简化配置文件的管理和提高开发效率。Struts2框架支持两种主要的配置方式:XML配置和注解(Annotation)配置。 XML...