1.引入依赖的jar包:struts2-convention-plugin.jar
2.在application.xml中加上配置,使得struts与spring的annotation互通
application.xml如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <import resource="classpath*:/platform.xml" /> <import resource="sodn-server.xml" /> <context:component-scan base package="xxx.web.action"/> <tx:annotation-driven /> </beans>
3.我创建的一个package 继承struts-default,自定义了用户登陆拦截器,和两个全局result。struts.xml如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="default" extends="struts-default"> <!-- 定义一个拦截器 拦截用户必须先登录--> <interceptors> <interceptor name="authority" class="xxx.filter.LoginInterceptor" /> <!-- 拦截器栈 --> <interceptor-stack name="mydefault"> <interceptor-ref name="defaultStack" /> <interceptor-ref name="authority" /> </interceptor-stack> </interceptors> <!-- 定义全局Result --> <global-results> <!-- 当返回login视图名时,转入/login.jsp页面 --> <!--<result name="login" >user/login.action</result> --> <result name="login" >/jsp/login.jsp</result> <result name="input" >/jsp/login.jsp</result> </global-results> </package> <constant name="struts.i18n.encoding" value="UTF-8" /> </struts>
4.常用的struts2 annotation
//声明父包 @ParentPackage("default") //声明拦截器,多个之间用,隔开 @InterceptorRefs({ @InterceptorRef("mydefault") }) //声明命名空间,默认为/ @Namespace(value="/business") //声明结果集的路径 @ResultPath("/jsp") //一个方法对应多个action(一般用于页面跳转) @Actions({ @Action(value = "goToOrder", results = { @Result(name = "success", location = "/jsp/business/order.jsp") }) , @Action(value = "goToOptical", results={ @Result(name = "success", location = "/jsp/business/optical.jsp") }), @Action(value = "goToInspect", results={ @Result(name = "success", location = "/jsp/business/inspect.jsp") }) }) //单个方法的action,没有返回值 @Action(value = "saveOrder")