SpringMvc + Mybatis + Spring - 工程总结 ,基础知识结语篇

作者:LABLENET

结语:

   到此为止,大部分的基础知识已经学习完毕了,但并没有学习全面,连cookie操作,图片的上传优化,分页请求实现等都还没有实现。故,在后面需要进行完整的项目实现,在此将Spring+ SpringMvc + Mybatis的工程进行了总结,和配置信息清单的总述;

            SpringMvc+Spring+Mybatis 总配置 :

              

   

      下载地址 :http://download.csdn.net/detail/lablenet/9396439


清单如下 :

  1.Jar包

   Spring 3.2.0
   SpringMvc 3.2.0
   Mybatis 3.2.7
   Mybatis-Spring 1.2.2
   Oracle-jdbc 5
   mysql-jdbc 5.1.7
   jstl 1.2
   jackson-mapper 1.9.11
   jackson-core 1.9.11
   dbcp-cglib 2.2.2
   hibernate-validation 4.3.0




2.Spring配置

   2.1 applicationContext-dao.xml
       1)加载数据库配置信息
           
 <context:property-placeholder location="classpath:db.properties"/>


       2)加载数据源 :
   
      <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
           <property name="driverClassName" value="${jdbc.driver}"></property>
           <property name="url" value="${jdbc.url}"></property>
           <property name="username" value="${jdbc.name}"></property>
           <property name="password" value="${jdbc.pass}"></property>
           <property name="maxActive" value="10"></property>
           <property name="maxIdle" value="5"></property>
         </bean>


       3)配置sqlSessionFactory
    
     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="configLocation" value="classpath:mybatis/sqlmapConfig.xml"></property>
            <property name="dataSource" ref="dataSource"></property>
         </bean>


       4)采用mapper扫描方式 ,加载mapper
       
  <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
             <property name="basePackage" value="cn.labelnet.ssm.mapper"></property>
             <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
         </bean>


   2.2 applicationContext-service.xml
            配置service的bean , 提供给HandlerMapping使用
   2.3 applicationContext-transcation.xml
        1)配置事务管理器,使用Spring下的jdbc事务管理器
    
     <bean id="transactionManager"  class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
             <property name="dataSource" ref="dataSource"></property>
         </bean>


       2)通知配置
       
  <tx:advice id="txManager" transaction-manager="transactionManager">
             <tx:attributes>
                 <tx:method name="insert*" propagation="REQUIRED"/>
                 <tx:method name="update*" propagation="REQUIRED"/>
                 <tx:method name="delete*" propagation="REQUIRED"/>
                 <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
             </tx:attributes>
         </tx:advice>


       3)aop配置
        
 <aop:config>
           <aop:pointcut expression="execution(* cn.labelnet.ssm.service.impl.*.*(..))" id="perfrom"/>
           <aop:advisor advice-ref="txManager" pointcut-ref="perfrom"/>
         </aop:config>




   2.4 Springmvc.xml
        1)配置HandlerMapping(Controller)扫描方式 ,指定包名
           <context:component-scan base-package="cn.labelnet.ssm.controller"></context:component-scan>


        2)RESTful静态文件加载配置,指定自己路径
          
 <mvc:resources location="/" mapping="/**" />


        3)使用注解方式配置:不建议
        4)使用注解驱动方式配置 :
         
  <mvc:annotation-driven conversion-service="conversionService" validator="validator"></mvc:annotation-driven>




        5)配置视图解析器
          
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" />


        6)可配置自定义类型转换器
       
   <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
               <property name="converters">
                 <list>
                     <!-- 在这里可以定义多个转换 -->
                    <bean class="cn.labelnet.ssm.controller.converter.FormatDateConverter"></bean>
                 </list>
               </property><span style="font-family: 'Comic Sans MS';font-size:18px;">  </bean></span>


        
        7)配置校验器
          
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">


              <!-- 配置hibernate校验器 -->
              <property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property>
              <!-- 指定校验使用的资源文件,在文件中配置校验错误信息,如过不指定默认使用classpath下的ValidationMessages.properties -->
                <property name="validationMessageSource" ref="messageSource"></property>


          </bean>


        8)配置校验器信息配置文件
          
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
              <!-- 资源文件名:配置自己的验证信息 -->
              <property name="basenames">
                 <list>
                    <value>classpath:CustomValidationMessage</value>
                 </list>
              </property>
              <!-- 资源文件编码格式 -->
              <property name="fileEncodings" value="utf-8"></property>
               <!-- 对资源文件内容缓存时间,单位秒 -->
              <property name="cacheSeconds" value="120"></property>
          </bean>


        9)配置全局异常类
           实现 HandlerExceptionResolver接口 :
          
 <bean class="cn.labelnet.ssm.controller.exception.CustomExceptionResover"></bean>


        10)配置文件上传解析器
         
  <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
                 <!-- 最大的上传尺寸 -->
                <property name="maxUploadSize" value="5242880"></property>
           </bean>




        11)配置拦截器
          
 <mvc:interceptors>
               <!-- 多个拦截器,顺序执行 -->
                <mvc:interceptor>
                  <!-- /** 表示所有的url,包括子url路径 -->
                    <mvc:mapping path="/**"/>
                    <bean class="cn.labelnet.ssm.filter.HanderInterceptor1"></bean>
                </mvc:interceptor>
                <!-- 配置登陆拦截器 -->
                <mvc:interceptor>
                    <mvc:mapping path="/**"/>
                    <bean class="cn.labelnet.ssm.filter.LoginHandlerIntercepter"></bean>
                </mvc:interceptor>
                <!--
                .....


                 -->
           </mvc:interceptors>



      2.4 Spring和SpringMVC
           配置信息在这里实现,尤其是SpringMvc的配置尤其重要,涉及到很多,比如 校验器,拦截器,全局异常信息类,文件上传解析器等,
         而其实都是Spring的配置文件,Spring配置文件加载,在web.xml中进行,采用通配符的方式加载Spring的配置文件,所以Spring的
         配置文件在命名的时候,也很重要!
            <!-- 加载spring容器:采用通配符的方式实现 -->
     
         <context-param>
                  <param-name>contextConfigLocation</param-name>
                  <param-value>/WEB-INF/classes/spring/applicationContext-*.xml</param-value>
              </context-param>
              <listener>
                <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
              </listener>



        而SpringMVc的配置文件加载,在SpringMVc的前端控制器中进行加载 ,比如 :
       
      <!-- 配置Springmvc 处理器 -->
              <servlet>
                <servlet-name>springmvc</servlet-name>
                <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
                <init-param>
                   <param-name>contextConfigLocation</param-name>
                   <param-value>classpath:spring/springmvc.xml</param-value>
                </init-param>
              </servlet>


              <servlet-mapping>
                <servlet-name>springmvc</servlet-name>
                <url-pattern>*.action</url-pattern>
              </servlet-mapping>



3.Mybatis配置

  3.1 db.properties
      数据库信息
  3.2 log4j.properties
      固定的配置信息,一般在开发的时候,将其设置为 DEBUG模式 ,开发完成时,设置为 INFO 模式 ;
       
 # Global logging configuration
        # 在这里修改logger模式
        log4j.rootLogger=DEBUG, stdout
        # MyBatis logging configuration...
        log4j.logger.org.mybatis.example.BlogMapper=TRACE
        # Console output...
        log4j.appender.stdout=org.apache.log4j.ConsoleAppender
        log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
        log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n



  3.3 sqlMapConfig.xml
      对Mybatis的配置信息的配置,如 setiing, 别名 等 ,而 mapper的加载 就不需要在这里实现了,
    在SpringMvc.xml中实现了扫描的方式实现了加载;
     
 <?xml version="1.0" encoding="UTF-8" ?>
      <!DOCTYPE configuration
      PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-config.dtd">
      <configuration>
      </configuration>



  3.4 Mapper.xml
      在这里我们需要注意几点,首先mapper.xml和mapper.java在同一个包下,且名字一样;其次是,mapper.xml
    中的命名空间是mapper.java的全限定名,操作的id是mapper.java的方法名;
     
 <?xml version="1.0" encoding="UTF-8" ?>
      <!DOCTYPE mapper
      PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
      <mapper namespace="全限定名">
      </mapper>


4.web配置-web.xml



  4.1 过滤器实现
      固定不变,可直接复制
        
<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>



  4.2 加载Spring容器
      需要配置<param-value>的spring配置文件的位置,可以在部署在tomcat上后在配置位置;
   
     <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/classes/spring/applicationContext-*.xml</param-value>
        </context-param>
        <listener>
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>


  4.3 配置SpringMvc前端控制器
      需要配置springmvc.xml 的位置,和 url-pattern 的配置,url的后缀;
      <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>classpath:spring/springmvc.xml</param-value>
        </init-param>
      </servlet>


      <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.action</url-pattern>
      </servlet-mapping>



  4.4 可以配置RESTful的URL支持
       url-pattern的值为 / ;,可以同时配置,并不冲突;
     
 <servlet>
        <servlet-name>springmvc_rest</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>classpath:spring/springmvc.xml</param-value>
        </init-param>
      </servlet>


      <servlet-mapping>
        <servlet-name>springmvc_rest</servlet-name>
        <url-pattern>/</url-pattern>
      </servlet-mapping>



5.工程目录固定化

  5.1 src
         cn.labelnet.ssm.controller
            --HandlerMapping.java : controller实现
         cn.labelnet.ssm.controller.converter
            --自定义参数类型,实现Converter接口
         cn.labelnet.ssm.controller.exception
            --自定义异常类,继承Exception
            --全局异常处理器,实现HandlerExceptionResolver接口
         cn.labelnet.ssm.controller.validated
            --校验分组接口,定义即可,不需要方法
         cn.labelnet.ssm.filter
            --拦截器实现,实现HandlerInterceptor接口
            --实现preHandler,postHandler,afterHandler三个方法
         cn.labelent.ssm.mapper
            -- mapper.java 和 mapper.xml
         cn.labelnet.ssm.po
            -- pojo类
         cn.labelnet.ssm.po.custom
            -- pojo拓展类
         cn.labelent.ssm.po.vo
            --包装类
         cn.labelnet.ssm.service
            -- 业务接口
         cn.labelnet.ssm.service.impl
            -- 业务接口实现类
  5.2 config
      --db.properties
      --log4j.properties
      --CustomValidationMessage.properties
      mybatis
        --sqlmapconfig.xml
      spring
        --applicationContext-dao.xml
        --applicationContext-service.xml
        --applicationContext-transcation.xml
        --springmvc.xml


  5.3 test
       cn.labelnet.ssm.test
         --各种测试类
  5.5 webRoot
        个人需求



  总配置下载地址 :http://download.csdn.net/detail/lablenet/9396439




发表评论

0个评论

我要留言×

技术领域:

我要留言×

留言成功,我们将在审核后加至投票列表中!

提示x

知识工程知识库已成功保存至我的图谱现在你可以用它来管理自己的知识内容了

删除图谱提示×

你保存在该图谱下的知识内容也会被删除,建议你先将内容移到其他图谱中。你确定要删除知识图谱及其内容吗?

删除节点提示×

无法删除该知识节点,因该节点下仍保存有相关知识内容!

删除节点提示×

你确定要删除该知识节点吗?