首页 | 源码下载 | 网站模板 | 网页特效 | 广告代码 | 网页素材 | 字体下载 | 书库 | 站长工具
会员投稿 投稿指南 RSS订阅
当前位置:主页>网络编程>java教程>资讯:编程技巧:五步搞定Spring整合Strus

编程技巧:五步搞定Spring整合Strus

www.jz123.cn  2009-08-28   来源:   中国建站    责任编辑(袁袁)    我要投递新闻

本文向您介绍Spirng整合Strus的五个通用步骤,包括对配置文件的修改,Action的设置和测试等.

  1. 项目需要有Struts包和Spring的core, aop, web 三个包(注意不是Spring自己的Web MVC), 将Spring整合Strus。具体的 .classpath 文件如下所示:


??xml version="1.0" encoding="UTF-8"??   
?classpath?   
    ?classpathentry kind="src" path="src"/?   
    ?classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/?   
    ?classpathentry kind="con" path="com.genuitec.core.J2EE14_CONTAINER"/?   
    ?classpathentry kind="lib" path="WebRoot/WEB-INF/lib/antlr.jar"/?   
    ?classpathentry kind="lib" path="WebRoot/WEB-INF/lib/beanutils.jar"/?   
    ?classpathentry kind="lib" path="WebRoot/WEB-INF/lib/digester.jar"/?   
    ?classpathentry kind="lib" path="WebRoot/WEB-INF/lib/fileupload.jar"/?   
    ?classpathentry kind="lib" path="WebRoot/WEB-INF/lib/logging.jar"/?   
    ?classpathentry kind="lib" path="WebRoot/WEB-INF/lib/validator.jar"/?   
    ?classpathentry kind="lib" path="WebRoot/WEB-INF/lib/jakarta-oro.jar"/?   
    ?classpathentry kind="lib" path="WebRoot/WEB-INF/lib/struts.jar"/?   
    ?classpathentry kind="lib" path="WebRoot/WEB-INF/lib/mysql-connector-java--bin.jar"/?   
    ?classpathentry kind="con" path="melibrary.com.MYECLIPSE_SPRING20_CORE"/?   
    ?classpathentry kind="con" path="melibrary.com.MYECLIPSE_SPRING20_AOP"/?   
    ?classpathentry kind="con" path="melibrary.com.MYECLIPSE_SPRING20_WEB"/?   
    ?classpathentry kind="output" path="WebRoot/WEB-INF/classes"/?   
?/classpath?  

  2. 对Struts 配置文件做修改加入Spring 托管功能.

  创建 Spring 配置文件,将文件放到src 目录下,文件名称为 applicationContext.xml, 编译后放到WEB-INF/classes/ 下.

  配置struts-config.xml文件,添加 spring的插件, 位置在 struts-config 文件的最末尾.


<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">  
<set-property property="contextConfigLocation"  
value="/WEB-INF/classes/applicationContext.xml" />  
plug-in>  

  3. 修改 Struts 的 struts-config.xml 中的Action配置。原来的代码:

  改变后的代码:


<action  
attribute="loginForm"  
input="/login.jsp"  
name="loginForm"  
path="/login"  
scope="request"  
validate="true"  
type="com.test.struts.action.LoginAction" />  

  type 部份为修改内容, 这里将使用spring的代理器来对Action进行控制. 当提交到/login.do是将控制权交给了spring,然后由spring来把它转回到struts的Action.

  4. Spring整合Strus,需要配置spring来实例化上一步中被删除的 Action 类.


xml version="1.0" encoding="UTF-8"?>  
>    
 
<beans>  
<bean name="/login" class="com.test.struts.action.LoginAction">bean>    
 
beans>   

  Spring 通过 org.springframework.web.struts.DelegatingActionProxy 这个类, 然后根据 Struts 配置文件中的 和 Spring 配置文件中的 来将 Spring 管理下的 Struts Action 类和提交的路径匹配起来, 这些就是关于转交控制权的配置内容.

  实践的过程中发现必须把 singleton="false"去掉才行, 否则就会无法初始化 Spring 框架, 不知道具体的原因是什么.

  既然这个 Struts的Action 已经通过 Spring 来初始化, 所以就可以加入依赖注入, 整合Hibernate 的功能了. 例如典型的情况:


com.test.struts.action.LoginAction    
 
private UserManager userManager;    
 
public UserManager getUserManager()...   
public void setUserManager(UserManager userMgmr) ...    
 
public ActionForward execute(ActionMapping mapping,  
ActionForm form,   
    HttpServletRequest request, HttpServletResponse response) {   
    System.out.println("userManager=" + getUserManager());   
    getUserManager().someBusinessMethods();   
    .....   
}  

  然后就可以配置:


<bean name="/login" class="com.test.struts.action.LoginAction">  
  <property name="userManager">  
   <ref bean="userManagerBean" />  
  property>  
bean>    
 
<bean id="userManagerBean" class="manager.UserManager" />   

  同理 Spring整合Hibernate 和没Struts 的时候一样, 也可以在这个文件中进行配置即可.

  5. Spring整合Strus最后一步, 测试, 只要能打印出来 userManager 不为空, 就说明整合成功了. 如果出现 404 action servlet 不可用的错误, 一般都是 Spring 配置文件出错导致的.

 


上一篇:JSR通过JavaEE 6依赖注入标准的各方不同观点 下一篇:关于Socket编程项目的经验之谈

评论总数:0 [ 查看全部 ] 网友评论


关于我们隐私版权广告服务友情链接联系我们网站地图