Spring + Spring MVC+Hibernate框架整合详细配置

具体配置参数:

Spring: spring-framework-4.2.2
Hibernate: hibernate-release-4.2.21.Final
Eclipse : eclipse MARS.2
MySQL : mysql 5.5 +Navicat Premiumd视图器
System: win 8.1

Spring-framework下载(附地址)

需要下载的文件前面两个就够了,包和参考文档

  • spring-framework-4.2.2.RELEASE-dist.zip 包

  • spring-framework-4.2.2.RELEASE-docs.zip 文档

  • spring-framework-4.2.2.RELEASE-schema.zip 配置

导入SSH框架整合所需的jar包

配置web.xml

手动创建一个config文件夹用与存放配置的文件,这里方便说明记为cf

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:xx.xml</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

其中xx.xml文件是需要你在cf中手动创建的配置文件,里面具体内容后面配置,这里相当于是告诉系统文件在哪,这里为了说明方便命名为spring.xml

     <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:xxx.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

这里的xxx.xml同上,可自己命名,这里命名为springMVC.xml

其中filter-class里的名字不用记,可以通过ctrl+shift+T输入
CharacterEncodingFilter获得,且这一步需放在所有过滤器最前面,才有效果

    <filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
     </filter>
<filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

其中filter-name里的类名可以通过ctrl+shift+T输入HiddenHttpMethodFilter获得,由于浏览器form表单只支持GET与POST请求,而DELETE、PUT等method并不支持,Spring3.0添加了一个过滤器,可以将这些请求转换为标准的http方法,使得支持GET、POST、PUT与DELETE请求,该过滤器为HiddenHttpMethodFilter

  <filter>
      <filter-name>hiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
   </filter>
  <filter-mapping>
    <filter-name>hiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  • 配置SpringMVC

  • 导入命名空间
    打开我们自己定义的配置文件springMVC.xml选择Namespace,勾选context和MVC

  • 添加组成扫描,包含过滤注解

          <context:component-scan base-package="com.jikexueyuancrm"
             use-default-filters="false">
             <context:include-filter type="annotation"
                 expression="org.springframework.stereotype.Controller" />
             <context:include-filter type="annotation"
           expression="org.springframework.web.bind.annotation.ControllerAdvice" />
         </context:component-scan>
    
  • 添加视图解析器

    其中class类名可以通过ctrl+shift+T输入InternalResourceViewResolver获得

           <bean
               class="org.springframework.web.servlet.view.InternalResourceViewResolver">
             <property name="prefix" value="/"></property>
             <property name="suffix" value=".jsp"></property>
         </bean> 
    
  • 配置静态资源

         <mvc:default-servlet-handler />
    
  • 配置注解

        <mvc:annotation-driven />
    
  • 配置Spring

    • 导入命名空间
      打开我们自己定义的配置文件spring.xml选择Namespace,勾选context(上下文)和tx(事物)

    • 添加组成扫描,排除被SpringMVC包含的过滤注解

          <context:component-scan base-package="com.jikexueyuancrm"
              use-default-filters="false">
              <context:exclude-filter type="annotation"
                  expression="org.springframework.stereotype.Controller" />
              <context:exclude-filter type="annotation"
                  expression="org.springframework.web.bind.annotation.ControllerAdvice" />
          </context:component-scan>
      
    • 配置数据库
      <context:property-placeholder location="classpath:db.properties" />

    • 数据库内容
      jdbc.user=root
      jdbc.passowrd=
      jdbc.driverClass=com.mysql.jdbc.Driver
      jdbc.jdbcUrl=jdbc:mysql:///jianlam

    • 配置DataSource-数据库关联的东西

    这里用到cp30的包,C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。

      <bean class="com.mchange.v2.c3p0.ComboPooledDataSource" id="dataSource">
      <property name="user" value="${jdbc.user}"></property>
      <property name="password" value="${jdbc.passowrd}"></property>
      <property name="driverClass" value="${jdbc.driverClass}"></property>
      <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
       </bean>
    

    需要orm包-Object Relational Mapping 对象关系映射,POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans

        <bean class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"
      id="sessionFactory">
      <!-- 配置数据源 -->
      <property name="dataSource" ref="dataSource"></property>
      <!-- 找到实体包(pojo) -->
      <property name="namingStrategy">
          <bean class="org.hibernate.cfg.ImprovedNamingStrategy"></bean>
      </property>
      <property name="packagesToScan" value="com.jianlam.entity"></property>
    
    • 配置hibernate常用属性

      <property name="hibernateProperties">
          <props>
              <!-- 数据库的方言 -->
              <prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop>
              <prop key="hibernate.show_sql">true</prop>
              <prop key="hibernate.format_sql">true</prop>
              <prop key="hibernate.hbm2ddl.auto">update</prop>
          </props>
      </property>
       </bean>
      
    • 配置hibernate事物管理器

        <bean id="transactionManager"
      class="org.springframework.orm.hibernate4.HibernateTransactionManager">
      <property name="sessionFactory" ref="sessionFactory"></property>
       </bean>
      

测试

创建好实体类和数据库表,查看连接操作数据库是否能正常运作,若没有问题则配置成功!

     private spring ctx = null;

    @Test
    public void testDataSource() throws SQLException {
        //检查spring配置
        ctx = new ClassPathXmlApplicationContext("spring.xml");
//          System.out.println(ctx);
                //检查数据库连接
        DataSource dataSource = ctx.getBean(DataSource.class);

//         System.out.println(dataSource.getConnection().toString());
       //检查hibernate配置
        SessionFactory sessionFactory = ctx.getBean(SessionFactory.class);
        System.out.println(sessionFactory);

        Session session = sessionFactory.openSession();
        Transaction tx = session.beginTransaction();
        //测试数据库
        Users  user = new Users  ("jianlam", "123456");
        session.save(user);
        tx.commit();
        session.close();

    }

如果你的mysql有问题或对于MVC模式下所需的包分类有所困惑可参考:这里

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 123,340评论 18 134
  • (一)Struts、Spring、Hibernate、Mybatis框技术 1.Struts2.0有几种标签库 【...
    独云阅读 2,759评论 0 62
  • Spring框架的第四天 案例一:SSH框架整合保存客户 需求分析 案例一:SSH框架整合保存客户 技术分析之SS...
  • 什么是Spring Spring是一个开源的Java EE开发框架。Spring框架的核心功能可以应用在任何Jav...
    jemmm阅读 15,430评论 1 134
  • 讲真,不知道我努力是为了什么,似乎像一个只会埋头干活的热闹,始终不会抬头去看看,去想想自己做的事情对不对,为什么要...
    倾葶77阅读 83评论 0 0
  • 中国有句古话,叫做民以食为天。可见,下到平民百姓,上至名门权贵。吃饭都是一件跟生活息息相关的大事。 我们中国人也有...
    陈晓依阅读 267评论 6 4
  • 如果从最早的计时工具——日晷(rì guǐ )仪看起 ,就是一个圆。 日晷仪是中国古代利用日影测定时刻的计时器。“...
    feeling阅读 179评论 0 1