`
namezhou
  • 浏览: 158654 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ssh整合的三种方式

阅读更多

第一种方式:

 

整合方式:
Spring与Struts的整合
Action 继承Spring提供的Action ,该Action父类为Struts的Action,添加了方法getWebApplicationContext()
可以通过此方法获取ApplicationContext对象,从而获取到Bean
Spring与Hibernate的整合
通过动态代理整合HibernateTemplate

实现流程:
1.实现Spring与Hibernate的集成:

public class UserDaoImpl implements UserDao {
 private HibernateTemplate ht;
 /**
  * 添加用户
  */
 public boolean addUser(User user) {
  try{
   ht.save(user);
   return true;
  }catch(Exception e){
   e.printStackTrace();
  }
  return false;
 }
 
 /**
  * 删除用户
  */
 public boolean deleteUser(User user) {
  try{
   ht.delete(user);
   return true;
  }catch(Exception e){
   e.printStackTrace();
  }
  return false;
 }
}

 

 <!-- 配置数据源的bean -->
<bean id="datasrc" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
 <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
 <property name="url" value="jdbc:mysql://localhost:3306/spring"></property>
 <property name="username" value="root"></property>
 <property name="password" value=""></property>
</bean>
<!-- 配置SessionFactory的Bean -->
<bean id="sessionfactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
 <property name="dataSource" ref="datasrc"></property>
 <!-- 配置映射文件 -->
 <property name="mappingResources">
  <list>
   <value>com/dowebber/entity/user.hbm.xml</value>
  </list>
 </property>
 <property name="hibernateProperties">
  <props>
   <prop key="hibernate.show_sql">true</prop>
   <prop key="hibernate.format_sql">true</prop>
   <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
  </props>
 </property>
</bean>
<!-- 配置HibernateTemplate的Bean-->
<bean id="hibernatetemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
 <property name="sessionFactory" ref="sessionfactory"></property>
</bean>
<!-- 配置接口的实现类的Bean-->
<bean id="userdao" class="com.dowebber.dao.impl.UserDaoImpl">
 <property name="ht" ref="hibernatetemplate"></property>
</bean>
<!-- 配置userdaoimpl的bean -->
<bean id="userdaoimpl" class="com.dowebber.service.dao.impl.UserServiceDaoImpl">
 <property name="dao" ref="userdao"></property>
</bean>
<!-- 配置事务的bean 使用hibernate的事务类,spring提供 -->
<bean id="transactionmanager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
 <property name="sessionFactory" ref="sessionfactory"></property>
</bean>
<!-- 配置代理的bean -->
<bean id="userdaoproxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
 <property name="target" ref="userdaoimpl"></property>
 <property name="transactionAttributes">
  <props>
   <prop key="*">PROPAGATION_REQUIRED,-Exception</prop>
  </props>
</property>

 2.整合Spring与Struts
2.1 写Action,继承Spring提供的ActionSupport

import org.springframework.web.struts.MappingDispatchActionSupport;

import com.dowebber.entity.User;
import com.dowebber.service.dao.UserServiceDao;

public class UserAction extends MappingDispatchActionSupport {
 
 public ActionForward login(ActionMapping mapping, ActionForm arg1,
   HttpServletRequest request, HttpServletResponse response) throws Exception {
  UserServiceDao dao = (UserServiceDao) this.getWebApplicationContext().getBean("userdaoproxy");
 }
}

 
2.2 在web.xml中配置Spring
 

 <context-param>
 <param-name>contextConfigLocation</param-name>
 <param-value>
  /WEB-INF/spring.xml
 </param-value>
   </context-param>
     <listener> 
 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
   </listener>

 Struts的配置不变

应用流程: 请求-->ActionServlet-->构造Action的父类,即Spring提供ActionSupport,构造ApplicationContext->构造bean->执行Action->执行Bean

 

整合方式二:

集成方式
1.Action中把需要的bean设置成成员属性
2.把Action配置成Bean
3.struts的action的type指向Spring的代理类
4.配置struts的loader插件

请求过程 请求-->ActionServlet->Spring代理类-->加载spring配置文件,获取Action的Bean并注入其中的属性-->执行Action中的方法

整合的实现:
Action中添加需要的bean的私有属性并提供setter和getter

public class UserAction extends MappingDispatchAction {
 
 private UserServiceDao dao;
 
 public UserServiceDao getDao() {
  return dao;
 }

 public void setDao(UserServiceDao dao) {
  this.dao = dao;
 }

 public ActionForward login(ActionMapping mapping, ActionForm arg1,
   HttpServletRequest request, HttpServletResponse response) throws Exception {
  }
}

 
配置Action的Bean

<!-- Action的bean -->
<bean name="/user/login" class="com.dowebber.action.UserAction">
 <property name="dao" ref="userdaoimpl"></property>
</bean>

 配置struts的action指向spring的代理类
 

<action-mappings >
   <action 
   path="/user/login"
   type="org.springframework.web.struts.DelegatingActionProxy"
   parameter="login"
   >
   <forward name="success" path="/success.jsp"></forward>
   <forward name="fail" path="/fail.jsp"></forward>
  </action>

 配置struts的插件,插件中加载spring的配置文件

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

 整合方式三:

配置流程:
1.Action中添加需要的bean的私有属性并提供setter和getter
2.spring中配置Action的Bean bean的name属性应该与Action的Path属性一致,不需要提供id
3.在struts配置中,配置controller和plugin,Action的type无需设置代理

实现过程:

1.Action中添加需要的bean的私有属性并提供setter和getter

public class UserAction extends MappingDispatchAction {
 
 private UserServiceDao dao;
 
 public UserServiceDao getDao() {
  return dao;
 }

 public void setDao(UserServiceDao dao) {
  this.dao = dao;
 }

 public ActionForward login(ActionMapping mapping, ActionForm arg1,
   HttpServletRequest request, HttpServletResponse response) throws Exception {
 }
}

 
2.spring中配置Action的Bean bean的name属性应该与Action的Path属性一致,不需要提供id

<!-- Action的bean -->
<bean name="/user/login" class="com.dowebber.action.UserAction">
 <property name="dao" ref="userdaoimpl"></property>
</bean>

 

3.在struts配置中,配置controller和plugin,Action的type无需设置代理

 <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"></controller>

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

 

分享到:
评论

相关推荐

    SSH整合的三种方式

    SSH整合的三种方式主要指的是将Spring、Struts和Hibernate这三个流行的Java开源框架集成到一起,以构建高效的企业级Web应用程序。下面将详细讲解这三种整合方法。 1. 使用Spring的`ActionSupport` 在Spring与...

    ssh整合 5种方式

    然而,本文探讨的“SSH整合5种方式”并非指SSH协议本身的五种使用方法,而是指如何将SSH与Spring框架进行整合的五种策略。Spring框架是Java平台上的一个开源框架,用于构建企业级应用程序,它提供了丰富的功能,包括...

    ssh2三种整合方式

    接下来,我们将深入探讨SSH2的三种整合方式。 **一、全XML配置方式** 在全XML配置方式中,所有的配置信息,包括Struts2、Spring和Hibernate的设置,都写在XML文件中。这通常涉及到以下文件: 1. `struts.xml` - ...

    SSH 整合原代码 包括2种方式:注解&xml;配置 (已测试, 原创)

    本资源提供的是SSH整合的原代码,涵盖了通过注解和XML配置两种方式进行整合的方法,并且已经过测试,确保其可行性和原创性。以下是关于SSH整合及这两种配置方式的详细知识: 1. **Struts框架**:Struts是一个基于...

    SSH整合Jar包

    SSH整合在JavaWeb开发中是一项重要的技术组合,它包含了三个主要的开源框架:Spring、Struts和Hibernate。这些框架分别负责应用的业务逻辑管理、视图层控制和数据持久化。接下来,我们将深入探讨SSH整合的关键知识点...

    SSH整合jar包

    SSH整合jar包是一个集合了所有在Java开发中用于Spring、Struts和Hibernate(SSH)集成应用所需的库文件的压缩包。SSH是Java企业级开发中非常流行的一种框架组合,它能够帮助开发者快速构建高效、可维护的企业级Web...

    ssh整合jar包

    总的来说,SSH整合提供了一种强大的方式来组织和管理复杂的Java Web应用,通过合理利用这三个框架的功能,可以有效地提高开发效率和代码质量。然而,理解和熟练掌握每一个框架的核心概念和配置是至关重要的,这样...

    ssh整合所需所有架包

    SSH整合是Java开发中一种常见的框架集成方式,它结合了Struts2、Spring和Hibernate三个开源框架,以实现高效、灵活的企业级应用开发。这里提到的"ssh整合所需所有架包"是一个包含这三个框架相应版本的集合,确保它们...

    ssh整合所需要的jar包

    这三种框架分别负责表现层、业务层和持久层的管理,通过合理的整合,可以构建出高效、灵活且易于维护的Web应用。下面将详细介绍SSH整合所需的关键jar包以及它们在整合过程中的作用。 1. **Struts2框架**:Struts2...

    SSH三大框架整合jar包

    在SSH整合中,Spring主要负责管理其他组件,如Struts和Hibernate,以及应用程序中的业务逻辑和服务。 1. **依赖注入**:Spring通过XML配置或注解方式实现对象间的依赖关系,使得代码更易于测试和维护。 2. **AOP**...

    SSH整合SSh三大框架整合和excl导出

    SSH整合是指将Struts2、Hibernate3.2和Spring2.5这三大开源框架集成到一个项目中,以实现高效、灵活的Web应用开发。这三个框架各司其职,Struts2负责MVC(Model-View-Controller)模式中的控制层,Spring2.5则作为...

    SSH整合增删改查全部

    SSH整合是Java Web开发中常见的一个技术组合,指的是Spring、Struts和Hibernate三个开源框架的集成。Spring提供了依赖注入和面向切面编程的能力,Struts则处理MVC(Model-View-Controller)架构中的控制器部分,而...

    三大框架ssh整合Demo

    在"三大框架ssh整合Demo"中,Struts2作为前端控制器,接收用户的请求,并根据配置决定调用哪个Action进行处理,最后返回相应的视图。 **Hibernate** 是一个强大的ORM(对象关系映射)框架,它简化了Java应用与...

    SSH整合实例源码

    这个"SSH整合实例源码"提供了一种实际应用这些框架的方法,帮助开发者理解如何在项目中有效地结合它们。以下是关于SSH整合及其中涉及的关键知识点的详细解释。 1. **Struts 2**: Struts 2 是一个基于MVC(Model-...

    SSH整合项目

    SSH整合项目指的是在Java开发中,使用Spring、Struts2和Hibernate这三个开源框架进行集成的Web应用程序项目。这个项目描述中提到的是一个已经搭建完成的框架,但是去掉了Hibernate的配置文件,可能意味着项目选择了...

    SSH整合 银行管理系统

    SSH整合在IT行业中通常指的是Struts、Hibernate和Spring三大框架的集成应用,它们是Java Web开发中的重要组件,尤其在企业级应用系统中广泛应用。银行管理系统是一个典型的业务复杂、安全性要求高的应用场景,SSH...

    SSH整合经典实例

    SSH整合是Java企业级开发中一种常见的解决方案,它极大地提高了开发效率,降低了系统的耦合度。 1. **Spring框架**: Spring是一个全面的后端应用程序框架,提供依赖注入(DI)和面向切面编程(AOP)等核心功能。...

    SSH整合例子(SSH例子)

    SSH整合是Java开发中一种常见的框架组合,包括Spring、Struts和Hibernate三个核心组件。Spring提供了依赖注入(DI)和面向切面编程(AOP),Struts负责MVC模式的实现,而Hibernate则是用于对象关系映射(ORM)。在这...

    SSH整合小项目

    SSH整合是Java Web开发中的一种常见技术栈,主要包括Spring、Struts和Hibernate这三个框架的集成。这个名为"SSH整合小项目"的资源提供了一个实践示例,帮助开发者理解和掌握这三大框架协同工作的机制。 首先,...

Global site tag (gtag.js) - Google Analytics