您的位置:首页 > 编程语言 > Java开发

Spring整合Struts策略----ActionSupport

2008-10-19 19:57 211 查看
 Spring提供与Struts的无缝整合。Spring与Struts的整合大体上可分为以下两种策略: 0|D!:GLY<l  
1. 让Spring Ioc容器管理Struts的Action,Struts采用ContextLoaderPlugin创建Spring的ApplicationContext实例。 G<S^h  
2. 采用Spring的ActionSupport类的子类。 :r@|^+hyn  
现把第二种总结如下: )Tz/.i@$  
    采用Spring的ActionSupport类的子类,该支持类具有getWebApplicationContext()方法,该方法可以访问Spring的ApplicationContext。 HzI +  
    Spring扩展Struts的标准Action类,Spring的Action在Struts的Action后加上Support,Spring的Action提供了如下4种: W%x9erm&  
      Spring的ActionSupport类及其子类        Struts的Action类及其子类 / qw,P$  
1.      ActionSupport                                      Action(基本的Action,每次只能完成一个Action功能) n=q em]HS  
2.      DispatchActionSupport                      DispatchAction(能同时完成多个Action功能的Action) ]~B**f 2V  
3.      LookupDispatchActionSupport            LookupDispatchAction(DispatchAction的子类,根据按钮的key,控制转发给action的方法) |5 ALJ6/  
4.      MappingDispatchActionSupport          MappingDispatchAction(DispatchAction的子类,一个action可映射出多个Action地址) b, xP{5z  
MJo*`7fPI  
    这四种Spring扩展的Action类,与struts的Action是一一对应的,只是多了一个方法getWebApplicationContext(),该方法用于获取一个spring容器。 ki Q!Z_  
5YP,FYQ+  
如下例子所示: aW&pM:2  
y`%3ji%#P  
//新的业务控制器,继承spring的ActionSupport 2=To_>U<  
public class LoginAction extends ActionSupport <`CpO<&U[  
{ 0$h(MNDG^  
    //必须重写该核心方法,该方法ActionForm将表单的请求参数封装成值对象 ~m!zP98bD  
    public ActionForward execute(ActionMapping mapping, Tr:O{@qZ  
        ActionForm form, J8E"KtdPF  
        javax.servlet.http.HttpServletRequest request, D9,|Yp~'  
        javax.servlet.http.HttpServletResponse response) N?*6mP PXM  
        throws Exception D}!rnaR  
    { m/8b'nGO6  
        //form由ActionServlet转发请求时创建,包装了所有的请求参数 pg.{MD%9  
                                UserForm userForm = (UserForm)form; *^t3;  
                              //分别获取user和pass参数 dB]b)/%  
        String user = userForm.getUser(); @ [ss[  
        String pass = userForm.getPass(); `)z N(FLD  
                                //获取ApplicationContext 实例 :-{7]ze  
        ApplicationContext ac = getWebApplicationContext(); EjVwR#  
                                //获取业务逻辑组件us 4/k33d5n6  
        UserService us = (UserService)ac.getBean("userService"); #04gD  
        //调用us的userValidate方法验证用户名和密码,如果通过,则返回success |c^h!  
                                if (us.userValidate(user, pass)) 5_Lz" m$}c  
        { a99j57?  
            return mapping.findForward("success"); ;#'w-*CJ  
        } DZ}ovM!Wf  
                                //否则返回failure ,2@/M}$b/  
        return mapping.findForward("failure"); 4+PW Avr  
    } ($u!}E; Y  
} #>[_, M)"  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息