Spring管理Strust的Action

    Spring和Strust整合時,通常狀況下,Action都是由struts2-spring-plugin-2.3.16.3.jar這個插件生成管理的,也就是Strust生成的。此時的配置以下:spring

    Action類:jsp

public class LoginAction  extends ActionSupport {
	 private UserService service;

     public void setService(UserService service){
         this.service = service;
     }
    /*省略了一些內容*/

	@Override
	public String execute() throws Exception {
		/*省略了一些內容*/		
	}

}

    Strust.xml:ide

    注意:下面配置中的class是全限定名this

<package name="from" namespace="/from" extends="struts-default">

        <action name="loginaction" class="com.cn.shop.action.LoginAction">
            <result>
              	/login.jsp
            </result>
         
        </action>
</package>

    根據上面的配置,Action將由Strust生成,而且Strust會根據Action的成員變量,在Spring容器中找是否有相應的成員變量實例,若是有則會自動注入,如:UserService。若是Spring中沒有,則須要手動賦值。spa

    然而在有些時候咱們須要使用Spring來生成管理Action,此時配置以下:prototype

    Action類:插件

    注意:此時的service要加上註解,讓Spring注入code

@Component("loginAction")
//須要時就加上多例的註解
@Scope("prototype")//多例            每一個請求都new 一個新的實例。。若是不一樣的請求使用同一個實例則容易相互影響
public class LoginAction  extends ActionSupport {
	 private UserService service;

     @Resource(name="service")
     public void setService(UserService service){
         this.service = service;
     }
    /*省略了一些內容*/

	@Override
	public String execute() throws Exception {
		/*省略了一些內容*/		
	}

}

    strust.xml:
     注意:此處的class是上面Action在Spring容器中的名字,而不是全限定名。說明這裏使用的是Spring生成的Actionxml

<package name="from" namespace="/from" extends="struts-default">

        <action name="loginaction" class="loginAction">
            <result>
              	/login.jsp
            </result>
         
        </action>
</package>
相關文章
相關標籤/搜索