这两天学SSH整合,看了一些教程,发觉langsin的tie和mldn的李兴华老师讲的不太一样,在将struts整合到spring时,struts中配置控制器后,小弟此时有两个疑问:
第一,需要把<action 的type属性去掉吗。
第二,需要在web.xml中增加如下代码吗?<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/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>只因小弟初学JAVA,问题可能比较粗浅,还望各位多多指教~其实在夏昕老师的OpenDoc中发现可以用spring提供的代理类整合SS,代理类很好理解小弟也测试成功。。不过使用控制器该怎么配呢,小弟还没测试成功啊。。

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【micro_sun】截止到2008-07-17 23:13:00的历史汇总数据(不包括此帖):
    发帖的总数量:1                        发帖的总分数:2                        每贴平均分数:2                        
    回帖的总数量:2                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:1                        结贴的总分数:2                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    敬礼!
      

  2.   

    1、有两种整合方式,其中一种type可以去掉
    2、对
      

  3.   

    struts-config.xml中需要type="org.springframework.web.struts.DelegatingActionProxy",spring配置文件applicationContext.xml
     <bean name="/action" class="com...YourAction">
        <property name="service" ref="YourService" />
     </bean>
      

  4.   

    关键是我看到的两个教程不太一样,第一,langsin的视频去掉了那个type属性,而mldn的视频没有去掉;第二,mldn在web.xml中加了如上代码,而langsin没有
      

  5.   

    1.如果你在spring中管理了action
    也就是在applicationContext.xml定义了<bean name="action的名字" ...
    就可以把struts-config.xml中的type去掉
    2.把applicationContext.xml放到默认路径下就可以把一下去掉
    <param-name>contextConfigLocation </param-name> 
    <param-value> 
    /WEB-INF/classes/applicationContext.xml 
    </param-value> 
    </context-param>
      

  6.   

    如果你在spring中管理了action ,那么
    struts-config.xml中的type属性的值是:
    org.springframework.web.struts.DelegatingActionProxy同时还要保证spring配置文件applicationContext.xml 文件中
    bean标签的name属性的值必须与struts-config.xml中的path属性的值相等
    绝大多数web应用中都会在web应用启动的时候实例化ApplicationContext,
    在web.xml必须增加你上面所提到的代码,才可以实现自动初始化。你也可以不必在web.xml文件中配置上面的代码,不过你得在你的
    程序中手动的实例化ApplicationContext
      

  7.   

    这位已经把你的第一个问题回答的不错了.这种方式,目前为止是解耦最好的方式了,不用更改ACTION原代码.第二个问题,是可以不写!按上面这位写STRUTS和spring的配置文件,然后再在struts配置文件里加入以下代码!
    <!-- 将控制交给spring -->
    <controller
    processorClass="org.springframework.web.struts.DelegatingRequestProcessor">
    </controller>
    <message-resources parameter="com.hys.struts.ApplicationResources" />
        <!-- 将spring配置文件插入到stuts里 -->
        <plug-in
    className="org.springframework.web.struts.ContextLoaderPlugIn">
    <set-property property="contextConfigLocation"
    value="/WEB-INF/classes/applicationContext.xml" />
    </plug-in>
      

  8.   


    赞同六楼说的方式,我也喜欢applicationContext.xml里面配置bean name这样struts就不需要配置type了,我中觉得type这个属性从意义上感觉很别扭。没有bean name直观。
      

  9.   


    你说的这个是使用spring的代理类实现ssh整合,这个我知道也测试成功,不过好像也不必在web.xml中加那些代码 也不必手动实例化applicationcontext。
      

  10.   

        <!-- 将spring配置文件插入到stuts里 --> 
        <plug-in 
    className="org.springframework.web.struts.ContextLoaderPlugIn"> 
    <set-property property="contextConfigLocation" 
    value="/WEB-INF/classes/applicationContext.xml" /> 
    </plug-in>
    这句可以不加 
      

  11.   

    1.两种方式。type属性不写的话,加上下面的语句。
    <controller processorClass=    
      "org.springframework.web.struts.DelegatingRequestProcessor"/>
      <message-resources parameter="com.yourcompany.struts.ApplicationResources" />
    如果在type里设置的话就不用了
    2.可以。