`

Struts和Spring的整合

阅读更多
(一) 整合方式
     Struts和Spring的整合有很多种方式,如下3种解决方案。
(1)       使用Spring的ActionSupport类整合Struts
(2)       使用Spring的DelegatingRequestProcessor覆盖Struts 的RequestProcessor.
(3)       将Struts Action管理委托给Spring框架  :
Struts2和Spring都有对象工厂ObjectFactory
Spring和Hibernate都有Session工厂  SessionFactory
 我们使用是第三种方式,也就是通过IoC模式让Spring对Struts的Action进行管理。         ObjectFactory 对象工厂
   Spring强调使用接口编程。
  (二)环境的搭建和基本配置
      前提:创建好Struts环境
  1 复制文件:复制文件以下三个文件到项目的lib目录下。
     commons-logging.jar;
     spring.jar ;
     struts2-spring-plugin-2.0.14.jar
 
      2 配置struts.objectFactory属性值:在struts.xml文件中配置常量。
       <constant name="struts.objectFactory" value="spring"></constant>
        说明:默认情况下所有由Struts2框架创建的对象都是有ObjectFactory实例化的,ObjectFactory提供了与其他Ioc容器如Spring集成的方法。在这里用org.apache.struts2.spring.StrutsSpringObjectFactory代替了默认的ObjectFactory。也就是说,处理用户请求的Action并不是由Struts2框架创建的,而是由Spring创建的。
        
      3 配置Spring监听器:在web.xml文件中增加如下内容。
        <listener> 
            <listener-class>
                  org.springframework.web.context.ContextLoaderListener
            </listener-class>
        </listener>
       完整的web.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <display-name>Struts Demo</display-name>
 
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>
            org.apache.struts2.dispatcher.FilterDispatcher
        </filter-class>
    </filter>
 
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <listener>   
 <listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
    </listener>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
4 定义Spring的配置文件:默认情况下,Spring配置文件为applicationContext.xml ,该文件需要保存到Web应用的Web-INF目录下(和web.xml同一目录)。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
 </beans>
5 建立登录页面login.jsp 程序片段如下:
  <body>
    This is my JSP page. <br>
    <s:form id="id" action="LoginAction">
       <s:textfield name="username" label="登录名称:"></s:textfield>
       <s:password name="password" label="密码:"></s:password>
       <s:submit></s:submit>
    </s:form>
  </body>
6 建立业务层(Spring):LoginSerivce接口和其实现类
      (1)com.service.LoginSerivce.java 程序
package com.service;
 
public interface LoginSerivce {
    boolean checkok(String username,String password);
}
      (2)com.service.impl.
package com.service.impl;
 
import com.service.LoginSerivce;
 
public class LoginServiceImpl implements LoginSerivce{
    public boolean checkok(String username,String password){
       if(username!=null && username.equals("sunlu") && password!=null && password.equals("123")){
           return true;
       }
       else{
           return false;
       }
    }
}
  7 建立Web层(Struts)的Action:BaseAction类及其继承类
   (1)com.action. BaseAction
package com.action;
 
import com.opensymphony.xwork2.ActionSupport;
import com.service.LoginSerivce;
 
@SuppressWarnings("serial")
public class BaseAction extends ActionSupport{
    LoginSerivce loginSerivce;
 
    public LoginSerivce getLoginSerivce() {
       return loginSerivce;
    }
 
    public void setLoginSerivce(LoginSerivce loginSerivce) {
       this.loginSerivce = loginSerivce;
    }
      
      
}
   (2)com.action. LoginAction
package com.action;
 
@SuppressWarnings("serial")
public class LoginAction extends BaseAction{
    private String username;
    private String password;
    private String msg;
 
   
    public String getMsg() {
       return msg;
    }
    public void setMsg(String msg) {
       this.msg = msg;
    }
    public String getPassword() {
       return password;
    }
    public void setPassword(String password) {
       this.password = password;
    }
    public String getUsername() {
       return username;
    }
    public void setUsername(String username) {
       this.username = username;
    }
   
    public String execute()throws Exception{
       if(loginSerivce.checkok(username, password)){
           this.msg="整合成功,调用Spring容器中的Action!";
           return SUCCESS;
       }
       else{
           return INPUT;
       }
    }
   
}
  8 部署
(1)在struts.xml 文件中添加action
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <include file="struts-default.xml" />
    <package name="com" extends="struts-default">
        <action name="LoginAction" class="com.action.LoginAction">
            <result name="input">/test/login.jsp</result>
            <result name="success">/test/success.jsp</result>
        </action>
    </package>
    <constant name="struts.objectFactory" value="spring"></constant>
</struts>
 
   (2)在applicationContext.xml文件中添加
  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
   <bean id="loginSerivce"        class="com.service.impl.LoginServiceImpl"></bean>
  
   <!—Action的实例化由spring来完成,这时需要依赖注入业务逻辑Service组件-->
   <bean id=" LoginAction " class="com.action.LoginAction">
       <property name="loginSerivce" ref="loginSerivce"></property>
   </bean>
</beans>
在这种方式中,我们让Action的实例化由Spring来完成,这时需要使用Spring的IoC功能将业务逻辑Serivce组件注入到Action对象中。这种方式有一个明显的缺陷:所有的Action都需要在applicationContext.xml中进行配置,而Struts.xml文件中还需要配置同样的Action。对于有成百上千个Action的一般应用,配置文件就会过于庞大臃肿。我们可以采用Spring的自动装配功能‘
分享到:
评论

相关推荐

    Struts和Spring整合示例讲解

    在提供的"**Myeclipse中Struts和Spring整合.doc**"文档中,应该包含了详细的步骤指导,包括创建Struts和Spring项目、配置相关XML文件、编写Action和Service等。这份文档对于初学者来说是一份宝贵的资源,它将帮助...

    struts和spring整合(两种实现方法)

    用DelegatingRequestProcessor和DelegatingActionProxy两种方法实现struts和spring的整合,不同的地方就在struts-config.xml文件中,当前文件中DelegatingRequestProcessor是注释的。

    struts和spring整合的2种方式

    在Java Web开发中,Struts和Spring框架的整合是常见的需求,以实现更灵活和强大的业务逻辑处理。本文将详细介绍两种整合Struts1与Spring的方法。 首先,我们需要理解这两个框架的基本概念。Struts是一个基于MVC...

    Struts+Spring整合开发实例

    在Struts和Spring整合时,通常会用到Spring的Web MVC框架替换Struts的部分功能,利用Spring的DI和AOP特性来管理Struts的Action。以下是整合的关键步骤: 1. 配置Spring:创建Spring的配置文件(如...

    struts,与spring整合

    以上内容详细介绍了Struts和Spring整合时涉及的关键知识点,包括依赖注入、Action代理、配置文件调整、AOP集成、模型驱动、国际化、异常处理和测试等方面。理解并掌握这些知识点对于开发高质量的Java Web应用至关...

    struts+spring+hibernate整合

    通过以上步骤,一个基本的Struts、Spring和Hibernate整合的应用就搭建完成了。这个整合的关键在于Struts处理HTTP请求,Spring管理业务对象和依赖,而Hibernate则处理数据库操作。这样的架构可以实现松耦合,便于代码...

    struts2和spring整合包

    **Struts2和Spring整合** 整合Struts2和Spring的主要目标是利用两者的优点,创建一个更强大的MVC应用。整合步骤通常包括: 1. **配置Spring**:创建Spring的ApplicationContext配置文件,定义Bean及其依赖。 2. **...

    SSH整合源码(Struts+Spring+Hibernate整合用户注册例子)

    SSH整合,全称为Struts、Spring和Hibernate的集成,是一种常见的Java Web开发框架组合,用于构建高效、可维护的企业级应用程序。在这个例子中,我们看到的是一个基于SSH的用户注册功能的实现,使用的开发工具是...

    struts1和spring整合

    Struts1 和 Spring 整合是 Java Web 开发中常见的一种技术组合,它们分别作为 MVC 框架和依赖注入框架,共同提升了应用的可维护性和可扩展性。Struts1 提供了强大的控制器层,而 Spring 提供了业务逻辑处理和依赖...

    ssh整和技术struts与hibernate整合,struts与spring整合,hibernate与spring整合,struts,hibernate,sp

    Struts技术资料 hibernate技术资料 spring技术资料 ssh整合技术(struts与hibernate整合,struts与spring整合,hibernate与spring整合,struts,hibernate,spring整合)

    struts1 spring ibatis整合项目源码

    struts1 spring ibatis整合项目源码struts1 spring ibatis整合项目源码struts1 spring ibatis整合项目源码struts1 spring ibatis整合项目源码struts1 spring ibatis整合项目源码struts1 spring ibatis整合项目源码

    Struts+Spring+Hibernate整合教程.pdf

    整合Struts、Spring和Hibernate可以构建出高度模块化的应用,提高开发效率和代码质量。然而,随着Java EE技术的发展,现代Web应用更多地转向Spring Boot、Spring MVC和MyBatis等更现代的解决方案,它们在易用性、...

    struts hibernate spring 整合 PUB

    struts struts hibernate spring 整合 PUBhibernstruts hibernate spring 整合 PUBate spring 整合 PUB

    Struts Spring Hibernate整合实践

    Struts、Spring 和 Hibernate 是三个著名的 Java 开发框架,它们分别负责不同的职责。Struts 是一个 MVC(Model-View-Controller)框架,主要用于构建 web 应用的控制层,简化了Servlet和JSP的开发。Spring 是一个...

    struts hibernate spring整合图解及源码

    综上所述,"struts hibernate spring整合图解及源码"这个主题涵盖了如何将这三大框架结合使用,以构建高效、模块化的JavaWeb应用。通过学习和实践这个整合过程,初学者可以深入理解JavaEE开发的高级技术,并提升自己...

    struts2和spring和Hibernate整合的jar包

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自解决应用程序的不同问题,而将这三者整合在一起可以构建高效、灵活的企业级应用。Struts2作为MVC(Model-View-Controller)框架,负责处理用户请求...

    spring_struts_hibernate整合开发书籍

    《Spring+Struts+Hibernate整合开发》是一本深入讲解企业级Java应用开发的书籍,它主要聚焦于三大著名开源框架——Spring、Struts和Hibernate的集成与应用。这些框架是Java Web开发中的基石,广泛应用于各种复杂的...

    Struts2整合Spring、JPA

    Struts2整合Spring和JPA是企业级Java应用开发中常见的技术组合,它们分别负责不同的职责:Struts2作为一款成熟的MVC框架,主要用于处理Web层的请求与响应;Spring作为一个全面的轻量级框架,提供了依赖注入(DI)和...

Global site tag (gtag.js) - Google Analytics