SSH的简单整合

纠结了好久,记下

Eclispe下,Spring3+Struts2+Hibernate3.3

Spring与Struts的整合其实就是将Struts的Action交给Spring来处理

Spring整合Hibernate主要是对hibernate的Session进行管理,包含Session的创建、提交、关闭的整个生命周期:
1、在配置中,将Hibernate的sessionFactory交由Spring中的事务管理器管理
2、配置代理工厂,向工厂中注入事务管理器(设置abstract="true")
3、以后对于Hibernate实现具体操作服务的类,都交由代理工厂代理(parent="代理工厂id")

--------------------------------------------------------------------------------------------------
开始时用MyEclipse8.6搭建环境,结果各种奇葩的错误,都是包冲突的问题,但是却不知道怎么导包,就换成Eclipse,自己一个一个添加

Sturts2必需包

还要有一个Struts2-Spring-plugin-xxx.jar包,用于Spring和Struts2的整合

Hibernate必需包


Spring必需包
spring

导包时可能遇到包冲突问题,根据提示查看,看是包冲突还是缺少包,这一步花了蛮长时间
--------------------------------------------------------------------------------------------------
配置dataSource,需要{common-dbcp.jar}支持,若数据源所选的是另外的实现,则应导入其他相应的包
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver">
        </property>
        <property name="url"
            value="jdbc:sqlserver://127.0.0.1:1433;databaseName=Users">
        </property>
        <property name="username" value="sa"></property>
        <property name="password" value="1234"></property>

    </bean>



配置sessionFactory,最基本的配置
<bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">
                    org.hibernate.dialect.SQLServerDialect
                </prop>
            </props>
        </property>
        <property name="mappingResources">
            <!-- <list> -->
                <value>com/tian/test/User.hbm.xml</value>
            <!-- </list> -->
        </property>

    </bean>


以上都配置在applicationContext.xml文件中,完成以上两步,可以先测试用代码测试下是否正确
具体做法是 ApplicationContext ac = newClassPathXmlApplicationC
ontext("applicationContext.xml");
看输出的ac是否为空,不为空,则以上配置正确
------------------------------------------------------------------------------------------------
接下来省略了代理器、代理器工厂的配置

直接在struts.xml中配置Action,将Action配置如下
<action name="logint" class="loginPro">

再在applicationContext.xml配置相应的bean
    <bean id="loginPro" class="com.tian.test.LoginAction" scope="prototype"/>

scope不是必须。

在代码中尝试获取相应bean,发生org.hibernate.MappingException: entity class notfound错误
原因是Eclipse无法找到实体类,将xxx.hbm.xml中的实体对应的class属性修改为  包名+类名
 <class name="com.tian.test.User" table="user" schema="dbo" catalog="Users">
--------------------------------------------------------------------------------------------------
在web.xml添加Spring容器以及Struts2过滤器
<!-- 配置spring的监听器 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <!-- 开启监听 -->
    <listener>
        <listener-class>
        org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>
 
  <filter>
      <filter-name>struts2</filter-name>
      <filter-class>
          org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
      </filter-class>
  </filter>
  <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>

--------------------------------------------------------------------------------------------------
完成以上就可以实现基础的ssh整合了

导包时顺利则一切都没什么问题
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值