Struts+Spring整合方式

简介:

struts与spring整合方式有三种:

方式一:通过Spring的ActionSupport类实现。

方式二:通过Sping的DelegatingRequestProcessor类覆盖struts的requestprocessor实现。

方式三:通过Sping的DelegatingActionProxy类实现,将struts action管理委托给spring框架。

相同点:以上三种方式都需要在struts的配置文件struts-config.xml中注册spring的ContextLoaderPlugIn插件。即:

<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">

<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/>

</plug-in>

不同点:

方式一:使用Spring提供的ActionSupport类,只需要使用Action继承Spring的ActionSupport类,即可实现Spring与struts的整合,使用起来简单方便,但是struts的Action与Spring耦合在一起,并且Struts的Action不在spring的控制之中,这样如果更换别的IOC容器,或想使用Spring的AOP都是比较困难的,而且如果是多个动作放在一个Action中,则这种方式就无能为了了!

方式二:使用Spring的DelegatingRequestProcessor类,需要在Struts的配置文件中,使用DelegatingRequestProcessor代替Struts的RequestProcessor类,并在Spring的配置文件中动作映射对应的Bean,可以很方便的转换而不用修改代码,这种方式的缺点是依赖于Struts的RequestProcessor类。

方式三:使用Spring的DelegatingActionProxy类,需要在Struts的配置文件中,定义动作映射的type属性为DelegatingActionProxy而不是类的实际名称,并在Spring的配置文件中定义和Struts配置文件动作映射对应的Bean,这种方式和Struts耦合性最小。

注:三者中,使用Spring的DelegatingActionProxy类来整合Spring和Struts的方式最为强大和灵活。

 

方式三的实例

login.jsp

 

 
  1. 代码  
  2.  
  3. <%@ page language="java" pageEncoding="ISO-8859-1"%>  
  4. <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>   
  5. <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>  
  6.    
  7. <html>   
  8.     <head>  
  9.         <title>JSP for LoginForm form</title>  
  10.     </head>  
  11.     <body>  
  12.         <html:form action="/login">  
  13.               
  14.             username : <html:text property="username"/><html:errors property="username"/><br/>  
  15.             password : <html:password property="password"/><html:errors property="password"/><br/>  
  16.             <html:submit/><html:cancel/>  
  17.         </html:form>  
  18.     </body>  
  19. </html> 

/StrutsLoginDemo/WebRoot/WEB-INF/struts-config.xml

 

 
  1. 代码  
  2.  
  3. <?xml version="1.0" encoding="UTF-8"?> 
  4. <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> 
  5.  
  6. <struts-config> 
  7.   <data-sources /> 
  8.   <form-beans > 
  9.     <form-bean name="loginForm" type="com.qdu.sun.struts.form.LoginForm" /> 
  10.  
  11.   </form-beans> 
  12.  
  13.   <global-exceptions /> 
  14.   <global-forwards /> 
  15.   <action-mappings > 
  16.     <action 
  17.       attribute="loginForm" 
  18.       input="/login.jsp" 
  19.       name="loginForm" 
  20.       path="/login" 
  21.       scope="request" 
  22.       type="org.springframework.web.struts.DelegatingActionProxy"> 
  23.       <forward name="failed" path="/fail.jsp" /> 
  24.       <forward name="success" path="/success.jsp" /> 
  25.     </action> 
  26.  
  27.   </action-mappings> 
  28.  
  29.   <message-resources parameter="com.qdu.sun.struts.ApplicationResources" /> 
  30.   <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> 
  31.     <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/> 
  32.  </plug-in> 
  33.     
  34. </struts-config> 

/StrutsLoginDemo/WebRoot/WEB-INF/applicationContext.xml

 

 
  1. 代码  
  2.  
  3. <?xml version="1.0" encoding="UTF-8"?> 
  4. <beans 
  5.     xmlns="http://www.springframework.org/schema/beans" 
  6.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  7.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> 
  8. <bean id="login" class="com.qdu.sun.struts.BO.LoginBO"/> 
  9.   <bean name="/login"   
  10.     class="com.qdu.sun.struts.action.LoginAction">     
  11.      <property name="loginBean"> 
  12.         <ref bean="login"/> 
  13.      </property> 
  14.   </bean> 
  15.  
  16.  
  17. </beans> 

/StrutsLoginDemo/src/com/qdu/sun/struts/action/LoginAction.java

 
 
  1. 代码  
  2.  
  3. /*  
  4.  * Generated by MyEclipse Struts  
  5.  * Template path: templates/java/JavaClass.vtl  
  6.  */  
  7. package com.qdu.sun.struts.action;  
  8.  
  9. import javax.servlet.http.HttpServletRequest;  
  10. import javax.servlet.http.HttpServletResponse;  
  11. import org.apache.struts.action.Action;  
  12. import org.apache.struts.action.ActionForm;  
  13. import org.apache.struts.action.ActionForward;  
  14. import org.apache.struts.action.ActionMapping;  
  15.  
  16. import com.qdu.sun.struts.BO.LoginBO;  
  17. import com.qdu.sun.struts.form.LoginForm;  
  18.  
  19. /**   
  20.  * MyEclipse Struts  
  21.  * Creation date: 08-05-2008  
  22.  *   
  23.  * XDoclet definition:  
  24.  * @struts.action path="/login" name="loginForm" input="/login.jsp" scope="request" validate="true" 
  25.  * @struts.action-forward name="failed" path="/fail.jsp" 
  26.  * @struts.action-forward name="success" path="/success.jsp" 
  27.  */  
  28. public class LoginAction extends Action {  
  29.     /*  
  30.      * Generated Methods  
  31.      */  
  32.  
  33.     /**   
  34.      * Method execute  
  35.      * @param mapping  
  36.      * @param form  
  37.      * @param request  
  38.      * @param response  
  39.      * @return ActionForward  
  40.      */  
  41.     private LoginBO loginBean;   
  42.     public LoginBO getLoginBean() {  
  43.         return loginBean;  
  44.       }  
  45.       public void setLoginBean(LoginBO loginBean) {     
  46.         this.loginBean=loginBean;  
  47.       }   
  48.  
  49.     public ActionForward execute(ActionMapping mapping, ActionForm form,  
  50.             HttpServletRequest request, HttpServletResponse response) {  
  51.         LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub  
  52.         LoginBO login=getLoginBean();    
  53.         if(login.validate(loginForm.getUsername(), loginForm.getPassword()))  
  54.         {  
  55.             request.setAttribute("username", loginForm.getUsername());  
  56.         return mapping.findForward("success");  
  57.         }  
  58.         else  
  59.             return mapping.findForward("failed");  
  60.     }  
  61.  

 


本文转自linzheng 51CTO博客,原文链接:http://blog.51cto.com/linzheng/1080803


相关文章
|
1月前
|
安全 前端开发 Java
学习从Struts迁移到Spring的策略概述
从Struts框架迁移到Spring框架是一个常见的升级路径,主要是为了利用Spring框架提供的更多功能、更好的模块化支持以及更广泛的社区资源。
36 3
|
11月前
|
Java 数据库连接 数据库
JAVA三大框架Struts、hibernate和spring的各自作用是什么?
JAVA三大框架Struts、hibernate和spring的各自作用是什么?
55 0
|
前端开发 安全 Java
Java 最常见的面试题:spring mvc 和 struts 的区别是什么?
Java 最常见的面试题:spring mvc 和 struts 的区别是什么?
115 0
|
存储 前端开发 Java
Spring MVC 实战:三种方式获取登录用户信息
前言 Web 项目中,维持用户登录状态的常用方式有三种,分别是 Cookie、Session、Token,不管哪种方案,都需要获取到用户信息供业务层使用。
413 0
Spring MVC 实战:三种方式获取登录用户信息
|
资源调度 JavaScript Java
服务器支持访问静态文件的几种方式:Spring、Tomcat、Vue
服务器支持访问静态文件的几种方式:Spring、Tomcat、Vue
|
运维 Java 数据库连接
两种方式实现Spring 业务验证
验证在任何时候都非常关键。考虑将数据验证作为业务逻辑开发有利也有弊,Spring 认为,验证不应该只在Web 端进行处理,在服务端也要进行相应的处理,可以防止脏数据存入数据库中,从而避免为运维同学和测试同学造成更大的困扰,因为数据造成的bug会更加难以发现,而且开发人员关注点也不会放在数据本身的问题上,所以做服务端的验证也是非常有必要的。考虑到上面这些问题,Spring 提供了两种主要类型的验证:
301 0
|
Java 数据库连接 Spring
Spring整合Mybatis,SqlSessionDaoSupport方式
SqlSessionDaoSupport 是一个抽象的支持类,用来为你提供 SqlSession。调用 getSqlSession() 方法你会得到一个 SqlSessionTemplate🙌 接口实现类:(此类继承SqlSessionDaoSupport即可)
212 2
|
XML Java 数据库连接
Spring整合Mybatis,SqlSessionTemplate方式
MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。它将允许 MyBatis 参与到 Spring 的事务管理之中,创建映射器 mapper 和 SqlSession 并注入到 bean 中,以及将 Mybatis 的异常转换为 Spring 的 DataAccessException。 最终,可以做到应用代码不依赖于 MyBatis,Spring 或 MyBatis-Spring
260 2
|
Java Spring
Spring读取配置文件的几种方式
Spring读取配置文件的几种方式
123 1
|
XML Java 数据格式
​将Bean交给Spring容器管理有几种方式?
所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。
171 0
​将Bean交给Spring容器管理有几种方式?