Spring與Struts的集成

Spring 框架與 Struts 框架集成有三個方案
  1.使用spring的ActionSupport類集成Struts
     採用這種方式須要修改Struts中的action,使struts的action繼承Spring的ActionSupport,這樣action中定義的業務邏輯對象可經過getBean()方法從Spring的應用上下文WebApplicationContext中得到,從而達到集成的效果。不過缺點就是使struts的Action和Spring緊密的耦合在一塊兒。
    下面介紹此方案集成的步驟
    (1).加載applicationContext.xml 有兩種方法
       1、經過struts-config.xml文件來加載
      <plug-in className="org.springframework.web.struts.ContextLoaderPlugin">
          <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml">
          </set-property>
      </plug-in>
      2、經過web.xml中配置
      <context-param>          <param-name>contextConfigLocation</param-name>          <param-value>/WEB-INF/applicationContext.xml</param-value>      </context-param>      <servlet>      <servlet-name>context</servlet-name>         <servlet-class>          org.springframework.web.context.ContextLoaderServlet         </servlet-class>         <load-on-startup>1</load-on-startup>      </servlet>
    (2).修改Action  以前繼承的父類是Action,須要改爲Spring的ActionSupport類,這樣就能使用上下文對象獲取applicationContext.xml配置文件裏的getBean()方法
      ApplicationContext context = this.getWebApplicationContext();
      業務邏輯對象 = context.getBean("idName");
      這樣就不須要new來建立對象,把建立的細節很好的封裝起來,徹底由spring容器plicationContext.xml
      來注入管理
  2.使用spring的Action代理集成Struts
    採用此方法須要創建一個Spring的Action代理,代理Struts的Action,當Struts執行Action時執行這個代理。代理會在Spring應用上下文找到真正的StrutsAction,而後就交給這個Action處理,下面看看步驟
    (1).加載applicationContext.xml 有兩種方法
       1、經過struts-config.xml文件來加載
      <plug-in className="org.springframework.web.struts.ContextLoaderPlugin">
          <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml">
          </set-property>
      </plug-in>
      2、經過web.xml中配置
      <context-param>          <param-name>contextConfigLocation</param-name>          <param-value>/WEB-INF/applicationContext.xml</param-value>      </context-param>      <servlet>      <servlet-name>context</servlet-name>         <servlet-class>          org.springframework.web.context.ContextLoaderServlet         </servlet-class>         <load-on-startup>1</load-on-startup>      </servlet>
    (2)修改Action 爲所須要的業務邏輯對象定義屬性並增長setXXX()方法,這樣作目的是爲了使用spring的依賴注入。
    (3)修改struts-config.xml文件  修改的內容是<action>元素的type屬性值。修改內容爲
      type="org.springframework.web.struts.DelegatingActionProxy"
    (4).配置applicationContext.xml
  3.最後一種有點鬱悶,目前還不理解,等學成歸來在寫進去吧!!!
   (*^__^*) 嘻嘻……學成歸來了
   修改Struts控制器來繼承struts
      爲了更直觀的在Struts配置文件中顯示出Action對應的處理類,能夠將Struts配置文件中<action>元素的type屬性直接顯示爲Struts的Action類,執行的時候還會到Spring的上下文中去查找對應的StrutsAction類。
    完成這樣的過程須要修改controller,將struts-config.xml中的controller改爲org.springframework.web.struts.DelegatingTilesRequestProcessor若是Struts中使用了Tiles組件,則可使用org.springframework.web.struts.DelegatingTilesRequestProcessor來做爲controller。若是Struts沒有使用Tiles組件,則可使用org.springframework.web.struts.DelegatingRequestProcessor來做爲controller。
    下面說說步驟:
    (1).加載WebApplicationContext.上下文同以上方法的第一步驟。
    (2).新建一個類 EncodingProcessor 並繼承DelegatingRequestProcessor 實現 process()方法同時爲了解決亂碼問題必須在process()方法上添加兩行代碼:
     request.setCharacterEncoding(UTF-8);
     response.setContentType("text/html;charset=UTF-8");
    (3).修改struts-config.xml文件,即修改Struts的RequestProcessor控制器
      使用自定義的控制器controller須要在Struts-config.xml文件中對<controller>元素進行配置,代碼以下
  <controller processorClass="EncodingProcessor的類路勁"/>
 
 
總結:從這3中方法能夠說是逐步優化,使得Struts和Spring集成變得耦合度愈來愈低,並且愈來愈直觀;
相關文章
相關標籤/搜索