常用的SSM整合方式

常用的SSM整合方式,第1张

常用的SSM整合方式 常用的SSM整合方式

看见网上这么多的整合方法,实在是眼花缭乱,看不过来,有些资料仅仅是整合某个部分,或者是整合的方式太过简陋,在实际开发中根本不会使用。接下来我页也来写一篇我平时写项目用的整合方式,一是将我的整合模板记录下来,二是提供给大家一个借鉴的思路。
在讲解整合思路之前,我们先搭建好一个项目工程,以便我们进行后面的 *** 作

一、创建项目

我们先创建好要整合项目的环境,然后再讲如何讲这三个框架整合起来。

创建项目

绑定maven

点击finish后,我们将项目的pom文件修改至结构如下:



  4.0.0
  war
  SSM_Template
  example
  SSM_Template
  1.0-SNAPSHOT
  
  
 
  


然后将web.xml文件内容修改为如下





到这里我们的项目结构暂时如下所示

二、搭建SpringMVC环境

整合这三个框架,我从SpringMVC开始,也就是先搭建SpringMVC的环境。其实也有人是从搭建Spring开始的,这两者没多大区别,整合思路大体一致。

1、导入springmvc相关依赖

首先我们想要使用springmvc的相关功能,必定要先导入跟springmvc相关的jar包,要不然就玩不起来了。
在pom.xml文件中添加如下依赖

     
      org.springframework
      spring-webmvc
      5.2.0.RELEASE
    

2、配置跟springmvc相关的组件 2.1、web.xml文件 前端控制器

我们都知道springmvc工作的核心就是在客户端浏览器发起的所有请求到达服务器之前,由一个前端控制器来控制所有的请求,并由其决定该请求转发给哪个控制器中的请求方法。所以我们要使用springmvc,首先得在web.xml文件中配置这个前端控制器。如果你要问为什么是在web.xml文件中配置它,这个前端控制器叫DispatcherServlet,它是一个Servlet,既然是一个Servlet,那么它就跟我门之前学习javaweb的时候配置Servlet一样在web.xml中一样的。

在web.xml中加入如下内容配置前端控制器

    
        springDispatcherServlet
        org.springframework.web.servlet.DispatcherServlet
    
    
        springDispatcherServlet
        /
    
springmvc的配置文件

注意,因为我在配置这个前端控制器的时候并没有指定它的springmvc的配置文件在哪,所以这个springmvc的配置文件默认是放在WEB-INF目录下的,而且它的名字是前端控制器的名字再加上-servlet , 为了降低出错率,我们现在就在WEB-INF目录下创建springmvc的配置文件且文件名就叫 [ springDispatcherServlet-servlet.xml ] 。

里面的内容我门先不添加

中文乱码过滤器

乱码过滤几乎是必须的,为什么要配置它我想不需要过多的啰嗦,唯一要注意的一点是,这个过滤器必须放在所有的filter之前,否则就不能达到过滤的效果。
在web.xml文件中加入如下内容

 
        CharacterEncodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            UTF-8
        
        
            forceEncoding
            true
        
    
    
        CharacterEncodingFilter
        
    @Override
    public void deleteById(Integer id) {
        System.out.println("id 为" + id +" 的图书已被删除.....");
    }
}
3.3、spring的配置文件

相应的业务代码也写的差不多了,现在我们开始写spring的配置文件

在类路径下(resources目录下)创建spring的配置文件,名为spring.xml

在写springmvc的配置文件的时候我们就说过,spring的配置文件不用扫描Controller,所以在配置包扫描的时候,在spring.xml文件添加如下内容

   
       
   
3.4、测试spring环境

引用测试依赖,写一个测试方法来看看我们的组件是否已经被扫描进了spring的容器
测试依赖

    
      junit
      junit
      4.9
    

测试方法

 @Test
public void test1(){
     ClassPathXmlApplicationContext ioc =new ClassPathXmlApplicationContext("spring.xml");
     String[] beanDefinitionNames = ioc.getBeanDefinitionNames();
     for (String name :
             beanDefinitionNames) {
         System.out.println(name);
     }
 }

显示测试结果如下,说明我门的spring.xml文件中的配置内容生效了,而且Controller并没有被扫描进来,正是我们想要的

3.5、spring与springmvc整合

即然spring与springmvc的环境都搭建好了,那么我们现在就开始着手将他们两个组合起来。那么怎样才算整合成功呢?明确这一点将对我们产生很大的作用,首先spring作用是降低耦合,反转控制;而我们的springmvc的作用在这里是代替servlet提供一种更便利的方式去处理请求。说的通俗一点就是,spring容器中配置的组件要能够在springmvc组件中使用,也就是说,BookService要能够在Controller中完成DI注入。
因为我们的项目是在tomcat下部署的,也就是说,我门的服务器是tomcat。而在我们启动tomcat服务器的时候,只会启动我们的springmvc容器,而 不会启动我们 的spring容器,因为我门在web.xml文件中配置前端控制器的时候,这个前端控制器会默认去加载默认位置的springmvc文件,而没有去加载我们的spring配置文件,所以也就是说我们的spring容器没有启动。所以怎样能够像springmvc配置文件一样,在启动tomcat容器的时候就能够被加载呢?我们的spring中又没有像mvc中的前端控制器一样的东西?
虽然spring中么有,但是我们可以利用tomcat中的lisenter监听器来初始化加载我们的spring容器,也就是说,在webx.xml文件中除了配置springmvc的内容除外,还要在里面加入如下内容去加载我们的spring容器。


        contextConfigLocation
        classpath:spring.xml
    
    
        org.springframework.web.context.ContextLoaderListener
    
3.6、测试springmvc与spring整合后的环境

在控制器中添加如下的请求方法

  @Autowired
    BookService bookService;
    @RequestMapping("hello2")
    public String hello2(
            Model model
    ){
        bookService.deleteById(5);
        model.addAttribute("msg","你好哇,李银河!");
        return "success";
    }

启动服务器后,发起请求

http://localhost:8080/SSM_Template/hello2

成功跳转页面

而且服务器端输出如下内容,表明我们的Controller能够正常DI注入我们spring容器中的组件。整合成功!

四、整合Mybatis

整合Mybatis之前,我们先来说一下将会用到的数据库以及数据表

这里我直接用之前创建好的Book作为测试的JavaBean

1、导入依赖坐标
    
      mysql
      mysql-connector-java
      5.1.37
    
    
      com.mchange
      c3p0
      0.9.5.2
    
    
      org.mybatis
      mybatis
      3.5.7
    
    
      org.mybatis
      mybatis-spring
      2.0.6
    
    
      org.springframework
      spring-jdbc
      5.2.0.RELEASE
    

同样我们整合mybatis的目标是能够使用spring反转控制实现DI注入相应的Mapper接口,也就是直接在ServiceImpl中直接使用Mapper。

2、创建dao层文件

BookDao接口

import SSM.Template.bean.Book;
import org.springframework.stereotype.Repository;
@Repository
public interface BookDao {
    public Book getBookById(Integer id);
}

对应的mapper映射文件




    

之前我们学习mybatis的时候都知道,mybatis可以帮我们使用的dao接口生成一个代理对象,是这个代理对象帮我们进行的增删改查。我们可以把这个代理对象也放进IOC容器,那么service就可以拿到这个对象进行DI注入。而将mybatis整合进spring容器中,其实就是将mybatis的配置内容转移到spring的配置文件中,这样容器才能拿到mybatis的组件,实现DI注入。

3、在spring配置文件中配置与(mybatis框架)数据库有关的组件

类路径下创建dbconfig.properties文件

jdbc.jdbcUrl=jdbc:mysql://localhost:3306/blog
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.user=root
jdbc.password=xxxxx

在spring的配置文件中加入如下内容


    
        
        
        
        
    
    
    
        
        
        

         

Controller添加请求方法

  @Autowired
    BookService bookService;
    @RequestMapping("hello2")
    public String hello2(
            Model model
    ){
        Book bookById = bookService.getBookById(5);
        System.out.println(bookById);
        model.addAttribute("msg","你好哇,李银河!");
        return "success";
    }

启动服务器,访问请求

http://localhost:8080/SSM_Template/hello2

页面跳转成功

服务器输出相应的数据库信息


说明spring简单整合mybatis成功!!!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5609714.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存