zoukankan      html  css  js  c++  java
  • SSM框架整合

    一、创建一个maven的web项目,导入相关的依赖jar包

    二、预先搭建好springmvc的框架,这里要创建一个springmvc.xml的配置文件,这个配置文件中

       1.先开启扫描,让他扫描controller的注解@controller,可以设置只扫描这个控制器注解,

       2.开启spring对mvc的支持,就是配置映射器和适配器

       3.配置视图解析器

        4.配置过滤掉静态资源

    springmvc.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation=" http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/mvc
           http://www.springframework.org/schema/mvc/spring-mvc.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd">
    
    
        <!--配置扫描器  只扫描控制器controller-->
        <context:component-scan base-package="com.music">
            <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
        </context:component-scan>
    
        <!--配置视图解析器-->
    
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
            <property name="prefix" value="/WEB_INF/jsp"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>
    
        <!--过滤静态资源-->
        <!--<mvc:resources mapping="/js/**" location="/js/"></mvc:resources>
       <mvc:resources mapping="/css/**" location="/css/"></mvc:resources>
        <mvc:resources mapping="/images/**" location="/images/"></mvc:resources>-->
        <!--开启spring对springmvc的支持-->
         <mvc:annotation-driven></mvc:annotation-driven>
    </beans>

    三、配置web.xml文件

      这里先配置就是说springmvc框架所需要的,dispacherServlet的一个前端控制器,还需要把之前我们配置 的springmvc .xml文件加载进来让我们配置的扫描器能够扫描起到作用,如果有需要的话还要对我们的传输的数据进行编码格式的过滤,就需要再我们添加的控制器的上边再加上一个过滤器,(为什么要在上边呢,因为web.xml文件好像有规定这些配置的位置防止先后的顺序)

    springmvc.xml

    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app>
      <display-name>Archetype Created Web Application</display-name>
    
      <!--解决中文乱码的 过滤器  监听器要在上边-->
      <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>
    
      <!--配置前端控制器-->
      <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
    
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--加载指定的配置文件springmvc.xml-->
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:springmvc.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>
    
    
    </web-app>

    注:这里可以正常的测试一下,简单的写几页面,让它能在控制器的作用下正常的跳转就说明,这个框架搭建的没有问题

    三、搭建一个mybatis的框架

      正常来说,mybatis的框架我们需要编写mybatis-config.xml文件,如果要使用xml配置的形式就还需要配置,映射的xml文件,注解的会就不用了,后边会说他们的区别,我们的mybatis文件的配置,

      1.我们需要先配置一个配置文件,然后再把这个配置文件用properties标签加载到我们的这个mybatis文件当中,配置全局映射的级别和开启缓存,下边可以配置实体类的别名,在下边就是配置上给们的数据库的连接的环境,事务的级别,要不要 使用连接池,用mappers标签来配置我们的映射文件,这个文件在后边的整合spring的时候就不需要了,所以我们就在这强掉一下mappers中有几个属性的使用区别

    <mapper resource="mapper/demo01/FoodMapper.xml"/>    相对路径进行配置
    <mapper class="cn.et.demo02.mapper.FoodMapper"/>  使用接口的信息进行配置
    <!--<package name="mapper.demo01"/>-->   使用接口所在的包进行配置
     
    这里也进行一个小的测试,如果测试可以连接上数据库 就说明我们的mybatis的框架搭建完成,
      四、接下来我们就说整合spring框架和mybatis的框架,
      在整合之中我们就把上述的mybatis-config.xml的文件弃之不用了,我们把所有的配置全部都放在applicationContext。xml的文件中来
      1.我们先配置开启扫描器,让他去扫描我们的dao层和service层,可以配置忽略我们的控制器controller,
      2.配置我们的数据库连接池,
      3.配置我们的sqlsessionfactory,将我们的数据库连接池注入我们的是SQL sessionfactory
      4.配置我们的扫描dao的接口,这里要说明一下上边我们说的xml和注解的不同方式,如果你的xml的文件路径和dao的接口一致的话,就直接正常配置就行了,如果不一致的话,就要在我们的SQL sessionfactory中配置一下映射文件的路径
    applicationContext。xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd">
    
        <!--配置扫描器  但是只让他扫描service层和dao层 无需扫描注解-->
        <context:component-scan base-package="com.music">
            <!--exclude不扫描-->
            <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
        </context:component-scan>
    
    
    
        <!--整合mybatia和spring-->
        <!--配置连接池-->
        <!--配置数据源 DriverManagerDataSource -->
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
            <property name="url" value="jdbc:mysql:///song?serverTimezone=GMT%2B8"></property>
            <property name="username" value="root"></property>
            <property name="password" value="root"></property>
        </bean>
        <!--配置sqlsessionFactory的工厂-->
        <bean class="org.mybatis.spring.SqlSessionFactoryBean" id="factoryBean">
            <property name="dataSource" ref="dataSource"></property>
            <!-- ****************目录不一致的情况 要在这里添加这没一条配置******************************************** -->
            <!-- *通配符来匹配 **任意文件夹下的 *任意以xml结尾的文件 -->
           <!-- <property name="mapperLocations" value="classpath:com/music/**/*.xml"></property>-->
            <!-- ************************************************************ -->
        </bean>
        <!--配置dao下的接口 扫描 -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" id="MapperScannerConfig">
            <property name="basePackage" value="com.music.dao"></property>
        </bean>
       </beans>

    这样还不算完,因为此时我们的applicationcontext。xml文件仍然没有和我们的整个spring的框架整合起来,没有任何的东西将我们配置的文件加载到web容器中,

    所以我们就需要考虑如何将我们的文件加载进来呢?我们可以通过一个sevletcontext的域对象来加载,因为这个域对象的生命周期和我们的服务器的生命周期一致,

    我们可以通过他的init的方法来配置加载我们的文件,所以我们呢要在web。xml文件中监听这个对象的创建,

    web。xml文件修改如下

    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app>
      <display-name>Archetype Created Web Application</display-name>
    
      <!--设置配置文件的路径-->
      <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
      </context-param>
    
      <!--解决中文乱码的 过滤器  监听器要在上边-->
      <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>
    
    
      <!--配置spring的监听器  这个监听器他默认就只加载WEB_INF下的applicationContest.xml的文件-->
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
    
    
      <!--配置前端控制器-->
      <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
    
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--加载指定的配置文件springmvc.xml-->
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:springmvc.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>
    
    
    </web-app>

    此时我们就就将三个框架整合差不多了,就差个事务的控制,我们一鼓作气,配完它!!!

    我们就只需要在applicationContext。xml文件中去加上事务的控制就欧克了

    1.开启一个事务管理器

    2.配置这个事务的管理器通知

    3.织入事务到代码中

    添加如下的代码

        <!--配置spring框架声明式事务处理-->
        <bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="transactionManager">
            <property name="dataSource" ref="dataSource"></property>
        </bean>
        <!--配置事务通知-->
        <tx:advice id="txadvice" transaction-manager="transactionManager">
            <tx:attributes>
                <tx:method name="find*" read-only="true" propagation="REQUIRED"/>
            </tx:attributes>
        </tx:advice>
        <!--织入事务-->
        <aop:config>
            <aop:pointcut id="txpoint" expression="execution(* com.music.service.Impl.*.*(..))"/>
            <aop:advisor advice-ref="txadvice" pointcut-ref="txpoint"></aop:advisor>
        </aop:config>
     

    编写一个查询和保存的功能测试一下,这就初步完成了ssm框架的整合,

    开心

    高兴

    nice

    2333

  • 相关阅读:
    Kettle 实现mysql数据库不同表之间数据同步——实验过程
    Kettle ETL 来进行mysql 数据同步——试验环境搭建(表中无索引,无约束,无外键连接的情况)
    并查集知识总结
    c# 线程同步问题(about volatile)
    c# 线程的等待(堵塞)
    net中多线程返回值
    c# 中的 lock monitor mutex Semaphore 的比较
    c#两种同步结构
    links-some-blog
    T-SQL中的APPLY用法
  • 原文地址:https://www.cnblogs.com/yifachen/p/12039632.html
Copyright © 2011-2022 走看看