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

清单如下 :
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
         个人需求 










