`
rainlife
  • 浏览: 233331 次
  • 性别: Icon_minigender_1
  • 来自: 我也来自火星?
社区版块
存档分类
最新评论

String,Struts,Hibernate集成

阅读更多
 
一、    Spring集成Hibernate

 先给出Spring的配置文件,applicationContext.xml: 

这种方式在整合的时候,有时会产生Action的无效,即不能正常实例化一个Action,一个原因是版本的问题,另一个原因是引入了Hibernateannotation库,估计仍然是版的问题。

    (2)web.xml文件中装载Spring上下文,如下:

如果不支持Servlet2.4,则采用下面的配置:

   Spring集成Struts的三种方式:

(1)    Struts的每一个具体的Action直接继承SpringActionSupport ,例如:

这样的话,就可以使用getWebApplicationContext().getBean()方式来使用在Spring的配置的Bean了。但使用这种方式的话,每一个Action都和Spring框架耦合在一起了,一般不采用。

 

  (2)  使用SpringDelegatingRequestProcessor覆盖StrutsRequestProcess,在Struts的配置文件struts-config.xml文件中加入如下内容:

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

这样的话,就可以由SpringBean的方式来管理StrutsAction这种设计使 Struts 动作并不知道它正被 Spring 管理,并且使您能够利用 Spring框架的所有优点。由于Struts 动作注意不到 Spring 的存在,所以不需要重写Struts 代码就可以使用其他控制反转容器来替换掉 SpringDelegatingRequestProcessor 方法的确比第一种方法好,但是仍然存在一些问题。如果使用一个不同的 RequestProcessor,则需要手动整合 Spring DelegatingRequestProcessor

 

(3)  使用代理将StrutsAction委托给Spring管理

     先看一下在struts-config.xml中的Action的配置:

<action attribute="loginForm" 
             input="/login.jsp"
             name="loginForm" path="/login" scope="request"                   
             type="org.springframework.web.struts.DelegatingActionProxy">
            <forward name="success" path="/success.jsp" />
</action>
 

 

通过type属性指定为org.springframework.web.struts.DelegatingActionProxy将这个Action委托给Spring进行管理。它注册 Spring 代理类的名称,而不是声明动作的类名。DelegatingActionProxy 类使用动作映射名称查找 Spring 环境中的动作。

下面看一下Spring的配置文件中的配置:

<bean name="/login" 
          class="com.test.struts.action.LoginAction"
          singleton="false" autowire="byType">
</bean>
 

Bean的配置中,是通过name属性而不是id属性,因为id属性在DTD验证中的类型为ID,而ID类型,ID类型必须以字母、下划线或冒号开头,不允许使用非法字符,而”/”是非法字符。另外,name属性的值是非常重要的,它一定要和在struts-config.xml中配置的Actionpath属性的值一致。DelegatingActionProxy会通过path属性的值在Spring的上下文环境中查找真正的Action。而Beanclass属性则指定了真正实现StrutsAction的具体类。这样就将StrutsAction交给了Spring来管理。

public class LoginAction extends ActionSupport {
    private UserDAO getUserDAO() {
        return (UserDAO) getWebApplicationContext().getBean("userDAO");
    }

    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) {
        getUserDAO().save(User);
        return null;
    }
}
 

 

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
    
<servlet>
    <servlet-name>SpringContextServlet</servlet-name>
    <servlet-class>
        org.springframework.web.context.ContextLoaderServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
 

<context-param>
    <param-name>contextConfigLocation</param-name>
    param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<!-- 这是Servlet2.4的规范,如果不支持Servlet2.4规范,则采用ContextLoaderServlet -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName">
            <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
        </property>
        <property name="url">
            <value>jdbc:microsoft:sqlserver://localhost:1433;database=bookstoressh</value>
        </property>
        <property name="username">
            <value>sa</value>
        </property>
        <property name="password">
            <value>123456</value>
        </property>
    </bean>

    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="configLocation">
            <value>classpath:hibernate.cfg.xml</value>
        </property>
        <property name="dataSource">
            <ref local="dataSource"/>
        </property>
</bean>
 

在集成中主要是要配置dataSourcesessionFacotyrdataSource主要是配置数据库的连接属性,而sessionFactory主要是用来管理Hibernate的配置,通过classpath:hibernate.cfg.xml直接装入Hibernate的配置文件,这样就仍然可以采用Hibernate自己的方式来配置Hibernate

sessionFactory有一个dataSource属性,需要注入一个dataSource

实际上也可以在Spring的配置文件中来配置Hibernate如下:

<bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="configLocation">
            <value>classpath:hibernate.cfg.xml</value>
        </property>
        <property name="dataSource">
            <ref local="dataSource"/>
        </property>
        <property name="mappingResources">
            <list>
                <value><!-- 这里填写hibernate的映射文件路径 --></value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
            <!-- 配置Hibernate的方言 -->
                <prop key="hibernate.dialect">
                    org.hibernate.dialect.SQLServerDialect
                </prop>
                <!-- 输入由Hibernate生成的SQL语句,如果在hibernate.cfg.xml中也指定的话,会生成两条语句,在产品中最好关闭,即设为false -->
                <prop key="show_sql">true</prop>
            </props>
        </property>
</bean>
 

 

SpringHibernate的集成比较简单,通过上面的配置,就已经完成了。

下面是SpringStruts的集成,这部分比较复杂。

一、    Spring集成Struts

Spring集成Struts主要有两种上下文装载方式和三种整合方法:

 两种上下文装载方式:

(1)    struts-config.xml中通过插件的方式装载Spring上下文,如下:


<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
             <set-property property="contextConfigLocation"
                     value="/WEB-INF/applicationContext.xml" />
</plug-in>
 
分享到:
评论

相关推荐

    hibernate String struts2 包

    Struts2通过拦截器机制实现了灵活的请求处理,同时提供了丰富的插件支持,能够与各种技术(如Hibernate)集成。使用Struts2可以降低视图层和业务逻辑层的耦合度,提高代码的可维护性和可扩展性。 当这三个技术整合...

    struts与hibernate实现文件的上传与动态下载

    1. **环境配置**:首先,你需要一个集成开发环境,例如MyEclipse8.6,并安装所需的Struts2.21、JUnit4.8.2以及Hibernate3.6.0.Final。这些库文件的下载和配置是基础步骤,确保所有依赖都已添加到项目类路径中。 2. ...

    struts string hibernate整合案例

    这个"struts string hibernate整合案例"项目显然是为了帮助J2EE开发者,特别是初学者理解这三个框架如何协同工作。 Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它负责处理HTTP请求,...

    Struts2+Spring+Hibernate集成过程

    ### Struts2+Spring+Hibernate集成过程 #### 一、集成环境搭建 1. **开发环境**:在开始集成之前,首先要确保安装了正确的开发工具和技术版本,具体为: - JDK版本:JDK 7 - Web服务器:Tomcat 6 - IDE:...

    订单管理系统 ssh(string+struts+hibernate)源码

    学习这个项目,初学者可以理解SSH框架的集成方式,掌握如何创建Action、Service和DAO层,以及如何配置Spring的Bean和Struts的Action映射。同时,通过实际运行和调试,能够更好地理解订单管理系统的业务流程,例如...

    struts hibernate Spring 整合实例

    它结合了Struts2的MVC架构模式、Spring的依赖注入(DI)和面向切面编程(AOP)、以及Hibernate的对象关系映射(ORM)技术,可以有效提高开发效率和代码质量。 - **Struts**:负责处理前端请求和页面展示,遵循MVC...

    String+Spring+Hibernate搭建的框架

    这个框架集合是Java开发领域中广泛使用的三大技术,它们分别是Spring框架、Hibernate持久化框架以及Struts(而不是String,可能是打字错误) MVC框架。下面我们将深入探讨这三个组件及其在构建Web应用中的作用。 **...

    struts,hibernate,spring集成开发示例.doc

    Struts、Hibernate、Spring是Java Web开发中的三大框架,它们的集成使用能够构建高效、松耦合的应用。本文将详细讲解如何将这三个框架整合在一起,通过一个网站登录的例子进行实战演示。 首先,我们需要搭建基本的...

    Struts+Hibernate分页

    通过以上步骤,你可以成功地在Struts和Hibernate集成的环境中实现数据的分页展示。在实际开发中,还需要考虑错误处理、安全性以及代码的可维护性和扩展性。不断学习和实践,才能更好地驾驭这些强大的框架。

    Struts2+Spring3+Hibernate3_集成方法

    Struts2+Spring+Hibernate集成 #### 4.1 先按照“Struts2+Spring集成”方法执行。 #### 4.2 导入Apache Commons几个jar包。 #### 4.3 导入Hibernate几个jar包。 #### 4.4 数据库的JDBC驱动 #### 4.5 在...

    在Netbeans中使用Struts2.0+Spring2.5+Hibernate框架

    - Struts + Spring 整合库:提供框架之间的无缝集成。 ##### 2. 数据库建模 在MySQL中创建名为`sshdemo`的数据库,并执行SQL脚本创建用户表`user`: ```sql CREATE TABLE `user` ( `userId` bigint(20) NOT NULL ...

    struts2 hibernate spring注解的整合(重写了巴巴运动网部门功能)

    Struts2、Hibernate和Spring是Java开发中常用的三大框架,它们分别负责Web层、持久层和业务层的管理。在本项目中,我们将探讨如何将这三个框架通过注解方式进行整合,实现巴巴运动网部门功能的重写。这篇文章将提供...

    struts+hibernate分页 模糊查询

    2. **事务管理**:Hibernate提供了与Java Transaction API集成的事务管理机制。 3. **缓存机制**:支持一级缓存和二级缓存,可以提高应用程序性能。 #### 三、分页功能实现 为了实现分页功能,我们需要在Hibernate...

    struts spring hibernate整合

    这种方式使得Struts能够更好地与Spring集成,特别是在需要使用Spring管理的Bean作为Action处理逻辑的情况下更为适用。 #### 三、使用ControllerPlug-In进行整合 **1. web.xml配置:** 在`web.xml`中,我们同样...

    Hibernate+struts实例学习

    ### Hibernate与Struts实例学习知识点 #### 1. 数据库设计与表建立 在本实例学习中,首先需要对数据库进行设计,创建一个名为`crud`的数据库,以及在其中建立一个名为`student`的表。表中包含`id`, `name`, `age`,...

    struts2,hibernate

    ### Struts2与Hibernate整合开发登录系统的详细解析 在IT领域的软件开发中,MVC(Model-View-Controller)架构模式被广泛应用于构建复杂的应用程序。Struts2和Hibernate是两个在Java领域内非常重要的开源框架,分别...

    SSH登陆实例(spring strus hibernate集成登陆实例)

    在SSH集成中,Spring扮演着中央控制器的角色,协调Struts和Hibernate的工作。 Struts是MVC(模型-视图-控制器)设计模式的实现,主要处理HTTP请求并控制应用程序流程。在这个登录实例中,Struts的Action类会接收...

Global site tag (gtag.js) - Google Analytics