1、导入jar包。
除了导入spring 、struts以及 commons外,还需要导入struts-spring-plugin.jar,如果想用struts注解的话,还需要导入struts-convention-plugin.jar,如果想运用AOP的话,需要导入aspectjrt.jar、aspecttools.jar、aopalliance.jar、aspectjweaver.jar。
2、配置web.xml文件。
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 配置spring -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
3、配置struts.xml文件。
如果使用struts注解的话需要添加下面信息。
<!-- struts注解需要定义一下三个 -->
<!-- 定义action的位置 进行扫描的根包,该包会被扫描成action -->
<constant name="struts.convention.action.packages" value="action" />
<!-- 把以Controller结尾的类当成Action处理 -->
<constant name="struts.convention.action.suffix" value="Controller" />
<!-- spring+struts是要写上,工厂选用spring -->
<constant name="struts.objectFactory" value="spring" />
4、配置applicationContext.xml文件。
如果不使用注解的话,需要配置bean和class关联。如果使用注解的话,需要配置扫面包,自动检测该包下的java类,并把添加注解的类当成bean处理。
<!-- 扫面该包以及子包,把添加注解的java类当成bean -->
<context:component-scan base-package="action,dao,service,bean">
</context:component-scan>
5、Action类。
由spring创建,默认通过byName方式进行自动装配。在struts配置action配置方式不变,但内部却已经采用注入。Action类需要对页面传值属性配置setter和getter方法。
6、Action注解。
struts必要的注解,@Namespace("/")在类名上,@Action(value="action名字",results={@Result(name="input\success或者其他",location="/WEB-INF/content/目标页面"),@Result…})。@Action可以添加在类名上,也可以添加在方法上。根据truts配置的包自动扫描。如果不想写@Action也可以,只要开启动态方法调用即可。
7、Spring注解。
@Scope(“”)配置作用域,默认是单例,与配置方式一致。@Controller标注控制器,@Component标注普通类,@Service标注业务逻辑,@Repository标注Dao,@Resource配置依赖(可以配置在set方法上,或变量上,配置在变量上就可以不用写setter方法了)