SSM框架的整合

在分别学习了Spring,SpringMVC和Mybatis三大框架之后,接下来最重要的就是这三大框架的整合,那话不多说,直接进入正题。

1添加jar包

    Spring框架的jar包

    SpringMVC框架的jar包

    Mybatis框架的jar包

    Oracle或者Mysql的驱动包

    C3P0的数据源框架

    Log4j

    Junit

    Mybatis和Spring框架集成的jar包:mybatis-spring-1.3.0.jar

    jstl

 具体如下图所示

2配置Web.xml

  设置首页

<welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

  配置过滤器,解决乱码问题

<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>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>false</param-value>
        </init-param>
    
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>

  加载Spring配置文件,项目启动时,创建ApplicationContext对象,实现对项目同一管理,同时配置Spring的监听器,监听当前正在被使用的对象,管理对象的生命周期

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-common.xml</param-value>
    </context-param>
    <!-- spring监听,负责监听当前项目正在使用的bean对象 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

  配置SpringMVC的前置控制器DispatcherServlet,最先获取页面的请求,加载SpringMVC配置的文件

<!-- 配置springmvc前置控制器: 最先获取用户请求,通过调配其他对象,完成一次请求和响应 -->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <!-- springmvc-servlet.xml默认的存放位置是WEB-INF文件夹下 如果想改变文件的存放路径,
            就使用init-param节点重新指定路径 ,springmvc-servlet.xml文件名中的springmvc是web.xml中
            配置DispatcherServlet的servlet-name的值 ,如果移动springmvc的配置文件,则可以修改文件名
                -->
            <param-value>classpath:springmvc-common.xml</param-value>
        </init-param>

    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <!-- url-pattern属性是整个SpringMVC框架的请求的总规则, 请求格式必须先符合这个规则,才能进入SpringMVC框架 
            然后还要符合springmvc-servlet.xml文件中某个控制器bean的name属性格式 -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>

3 配置jdbc.properties

  配置设置连接数据库的配置信息,若使用Oracle则配置Oracle,若使用Mysql,则配置mysql;这里以Mysql为例

url=jdbc:mysql://localhost:3306/order_system
uname=root
upwd=
driver=com.mysql.jdbc.Driver

4 配置Spring-Common.xml文件

  加载jdbc.properties,为Spring注入数据源对象,提供访问数据库的参数

<!-- 加载jdbc.properties资源文件 -->
    <bean
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:jdbc.properties</value>
            </list>
        </property>
    </bean>

  注入数据源对象(采用C3P0数据源框架)

<!-- 注入数据源对象 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="user" value="${uname}"></property>
        <property name="password" value="${upwd}"></property>
        <property name="driverClass" value="${driver}"></property>
        <property name="jdbcUrl" value="${url}"></property>
    </bean>

注意:这里仅仅设置了资源文件中的键对应的值是多少,还可以设置很多高级属性,若想了解,情参照C3P0文档!

  注入mybatis的核心对象sqlSessionFactory,实现数据操作,并交给Spring管理

<!-- 注入mybatis的核心对象sqlSessionFactory,交给spring管理 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" >
        <!-- sqlSessionFactory依赖dataSource -->
        <property name="dataSource" ref="dataSource"></property>
        <!-- 加载mybatis的配置文件 -->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
        <!--配置mybatis分页插件  -->
        <property name="plugins">
            <bean class="com.github.pagehelper.PageHelper">
                <!-- 指定当前执行的sql语句的类型: mysql -->
                <property name="properties" value="dialect=mysql"></property>
            </bean>        
        </property>
    </bean>

注意:这里多配了一个分页插件,关于这个分页插件若明白,请听下回分解!

  指定Spring框架扫描所有需要注入sqlSessionFactory的接口

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.dao"></property>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" ></property>
    </bean>

  注入事务管理对象,并且开启注解实现事务管理的功能

<!-- 注入Spring事务管理对象 -->
    <bean id="a"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 事务管理对象依赖数据源对象 -->
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!-- 开启使用注解实现事务控制的功能 指定自定义事务管理对象 -->
    <tx:annotation-driven transaction-manager="a" />

5 配置SpringMVC-common.xml文件

  设置所有编写有注解的类所在包的范围

<context:component-scan base-package="com"></context:component-scan>

  设置controller业务处理完毕后跳转路径的规则 注入视图解析器

<bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <!--     在ModelAndView对象中设置的ViewName的前后追加字符串,拼成完成的路径 -->
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

  若自己有业务需求,也可以在里面配置,例如配置全局的转换器和自定义的拦截器等

<!-- 配置全局的类型转换器 -->
    <bean id="myConverter" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean class="com.util.MyDateConverter"></bean>
            </set>
        </property>
    </bean>


      <!-- 注册自定义的拦截器 -->
      <mvc:interceptors>
          <mvc:interceptor>
              <mvc:mapping path="/user/*"/>
              <bean class="com.interceptor.UserInterceptor"></bean>
          </mvc:interceptor>     
      </mvc:interceptors>
      
            <mvc:interceptors>
          <mvc:interceptor>
              <mvc:mapping path="/admin/*"/>
              <bean class="com.interceptor.AdminInterceptor"></bean>
          </mvc:interceptor>     
      </mvc:interceptors>

接下来的就是一些比较简单和常规操作了

6 配置log4j

log4j.rootLogger=INFO, Console  
      
#Console  DEBUG
log4j.appender.Console=org.apache.log4j.ConsoleAppender  
log4j.appender.Console.layout=org.apache.log4j.PatternLayout  
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n  
      
log4j.logger.java.sql.ResultSet=INFO  
log4j.logger.org.apache=INFO  
log4j.logger.java.sql.Connection=DEBUG  
log4j.logger.java.sql.Statement=DEBUG  
log4j.logger.java.sql.PreparedStatement=DEBUG

7配置mybatis-config.xml

<!-- 设置mybatis自动匹配属性与列名的模式 -->
    <settings>
        <setting name="autoMappingBehavior" value="FULL"/>
    </settings>
    
    <!-- 给实体类命别名 -->
    <typeAliases>
        <!-- name="com.entity" 指定实体类所在的包的全称 -->
        <package name="com.entity"/>
        <package name="com.dao"/>
    </typeAliases>

    
    <!-- 加载所有的接口映射文件 -->
    <mappers>
        <mapper resource="com/mapper/AdminMapper.xml" />
        <mapper resource="com/mapper/CatelogMapper.xml" />
        <mapper resource="com/mapper/EmailMapper.xml" />
        <mapper resource="com/mapper/FoodMapper.xml" />
        <mapper resource="com/mapper/MessageMapper.xml" />
        <mapper resource="com/mapper/NoticeMapper.xml" />
        <mapper resource="com/mapper/OrderMapper.xml" />
        <mapper resource="com/mapper/OrdermMapper.xml" />
        <mapper resource="com/mapper/UserMapper.xml" />
        
    </mappers>

8 编写实体类,接口,service层以及实现层,controller层等等

 

posted @ 2018-04-25 11:20  性感的小辣椒  阅读(148)  评论(0编辑  收藏  举报