手把手教你搭建与整合SSM框架(文末附源码)(Spring MVC + Spring + MyBatis)

目录

1.导入jar包

2.项目目录总览

3.配置Spring IoC容器

4.连接数据库配置

5.集成mybatis环境

5.1配置映射器 

5.2创建Mapper接口

5.3创建数据库表和实体类

6.整合Spring MVC

6.1配置 dispatcherServlet

6.2创建控制器controller

6.3创建视图

7.SSM测试

8.源码地址

1.导入jar包

为了使初学者减少不必要的学习阻碍,本例采用手动导入jar包(不使用maven),在你的web工程的WEB-INF/lib目录下导入如下jar包

手把手教你搭建与整合SSM框架(文末附源码)(Spring MVC + Spring + MyBatis)_第1张图片

这里给出各jar包的下载地址:

spring和spring-mvc:https://repo.spring.io/release/org/springframework/spring/

myBatis:https://github.com/mybatis/mybatis-3/releases

mybatis-spring:https://github.com/mybatis/spring/release

 

如果不想在官网找的话,其他jar包均可以在mvn仓库中搜索到,地址:https://mvnrepository.com/,例如mysql的驱动包:

手把手教你搭建与整合SSM框架(文末附源码)(Spring MVC + Spring + MyBatis)_第2张图片

这里有几点需要注意:

  1. 要特别注意jar包的版本,不同版本的jar包之间可能会有版本冲突问题,例如mytatis-3.4.2和mybatis-spring-1.2.5会有冲突,不注意到后面报错会很难排查,建议读者先按博主的jar包版本下载。
  2. 还是jar包的版本,mysql驱动包6版本之前连接数据库会有不同,后面会有提到,还是建议读者和博主版本一致。
  3. 细心的读者可能会发现myBatis的jar包怎么会有两个?这是因为在spring3发布的时候,myBatis3还没有完成,所以spring并不支持myBatis3,故MyBatis社区就自己开发了MyBatis-Spring项目用以支持spring。
  4. 在本例中除去log4j日志包以外都是必须包!

 2.项目目录总览

在这里先给出整个ssm整合与测试的结构图,目的是为了使读者能够全局的有一个大概印象,也方便在后续的搭建过程中能够回到这里查漏补缺,读者这里不需要知道每个文件含义,之后都会说明,如下图:

手把手教你搭建与整合SSM框架(文末附源码)(Spring MVC + Spring + MyBatis)_第3张图片

 

3.配置Spring IoC容器

IoC(Inversion of Control ),即控制反转,是spring的核心。什么是控制反转呢?简单来说就是原来由你自己创建并控制的java对象现在交由spring内的容器来控制并管理,即控制权被反转了,而这个容器就是IoC容器

而配置IoC容器,就是往这个容器中提前放入我们项目中可能会用到的各种对象,什么时候用,什么时候再取出来(是不是很方便???),通常我们有两种方式来配置,一个是xml文件配置,一个是注解配置。对于第三方的类,我们通常通过xml配置,对于我们自己创建的类,我们通常通过注解进行配置。

在src的根目录下新建applicationContext.xml文件(重要部分均做了注释)

 applicationContext.xml



          
        
    
        
    
    
    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    
    
    
        
        
        
        
    

	
	
	
	
    
    
    	
    	
    	
    	
    
    
    
    	
    
    
    
   

4.连接数据库配置

观察IoC容器的配置我们发现引入了jdbc配置文件,文件中对数据库连接的一些属性进行了设置。

这里需要注意的是,从mysql-connector-java-6开始,驱动的名称变成了“com.mysql.cj.jdbc.Driver”,并且数据库连接地址也需要加上时区(serverTimezone)和useSSL属性。

在src根目录下新建jdbc.properties文件,如下:

 jdbc.properties

#============================================================================
# MySQL
#============================================================================
jdbc.mysql.driver=com.mysql.cj.jdbc.Driver
jdbc.mysql.url=jdbc:mysql://127.0.0.1:3306/ssm?characterEncoding=utf-8&serverTimezone=UTC&useSSL=false
jdbc.mysql.username=root
jdbc.mysql.password=123

jdbc.initialSize=5
jdbc.minIdle=5
jdbc.maxIdle=20
jdbc.maxActive=100
jdbc.maxWait=100000
jdbc.defaultAutoCommit=false
jdbc.removeAbandoned=true
jdbc.removeAbandonedTimeout=600
jdbc.testWhileIdle=true
jdbc.timeBetweenEvictionRunsMillis=60000
jdbc.numTestsPerEvictionRun=20
jdbc.minEvictableIdleTimeMillis=300000

我们观察IoC配置文件,在引入了jdbc配置文件后,开始进行了数据库连接池的配置,其中标签的value值是从引入的jdbc配置中得到的。连接数据库配置的目的是为了之后整合myBatis框架。

5.集成mybatis环境

继续回到IoC配置文件,配置完数据库连接池以后开始集成mybatis,首先需要关联之前配置的数据库连接池,之后引入mybatis配置文件。

在src根目录下新建文件sqlMapConfig.xml,如下: 

 sqlMapConfig.xml

  
 

	
		
		
		
		
		
		
		
		
		
		
	
	
	
		
	
	
	
		
	

5.1配置映射器 

观察sqlMapConfig.xml配置文件,我们发现在最后引入了映射器配置文件,映射器的作用是创建实体类与数据库表之间的一种映射关系,同时在映射器中写入操作数据库的sql语句。

新建com/ssm/sqlMapper包,在包下新建RoleMapper.xml配置文件,如下:

 RoleMapper.xml

  
 


	
	
	
	
		insert into t_role (role_name,note)
		values (#{roleName},#{note})
	

	
		update t_role set
		role_name = #{roleName},
		note = #{note}
		where id = #{id}
	

	
		delete from t_role where id = #{id}
	

5.2创建Mapper接口

有了映射器还不够,mybatis操作数据库还需要接口

新建com.ssm.mapper包,新建接口RoleMapper,如下:

接口com.ssm.mapper.RoleMapper 

package com.ssm.mapper;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import com.ssm.pojo.Role;

@Repository
public interface RoleMapper {

	public int insertRole(Role role);
	public int deleteRole(@Param("id") Long id);
	public int updateRole(Role role);
	public Role getRole(@Param("id") Long id);
	
}

5.3创建数据库表和实体类

至此mybatis的配置已经全部完成,但要操作数据库我们还需要实体类和数据库表

实体类(角色):com.ssm.pojo.Role 

package com.ssm.pojo;

public class Role {

	private Long id;
	private String roleName;
	private String note;
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getRoleName() {
		return roleName;
	}
	public void setRoleName(String roleName) {
		this.roleName = roleName;
	}
	public String getNote() {
		return note;
	}
	public void setNote(String note) {
		this.note = note;
	}
	
}

数据库表:t_role

6.整合Spring MVC

如果你的web项目使用的是servlet3.0标准,那么你的项目WEB-INF/目录下是没有web.xml配置文件的,这时你要手动在WEB-INF/目录下创建web.xml配置文件,如下

web.xml



	
	
	
		contextConfigLocation
		WEB-INF/classes/applicationContext.xml
	
	
	
		
			org.springframework.web.context.ContextLoaderListener
		
	
	
	
		
		dispatcher
		org.springframework.web.servlet.DispatcherServlet
		
		2
	
	
	
		dispatcher
		*.do
	
	

观察以上配置文件发现引入了我们之前配置的IoC配置文件,使得项目启动的时候能初始化IoC容器,同时配置文件中引入了dispatcherServlet配置文件 ,dispathcerServlet是spring mvc的核心,对到来的请求进行处理和调度。

6.1配置 dispatcherServlet

在WEB-INF/目录下新建dispatcher-servlet.xml配置文件

 dispatcher-servlet.xml



        
        
        
        
        
        
        
        
        
    	

        

转发器配置文件中主要配置了解析器,根据你的请求分发到指定目录的视图进行解析。

6.2创建控制器controller

新建包com.ssm.controller,新建java类RoleController.class:

package com.ssm.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import com.ssm.pojo.Role;
import com.ssm.service.RoleService;

@Controller
//请求在"/role"路径下才执行此控制器
@RequestMapping("/role")
public class RoleController {

	@Autowired
	private RoleService roleService = null;
	//请求在getRole路径下此方法才执行
	@RequestMapping(value="/getRole",method=RequestMethod.GET)
	public ModelAndView getRole(@RequestParam("id") Long id) {
		
		Role role = roleService.getRole(id);
		ModelAndView mv = new ModelAndView();
		mv.setViewName("roleDetails");
		mv.addObject("role", role);
		return mv;
	}
}

 控制器接受请求参数取出role存入模型中并转发到指定视图(这里是roleDetails)进行解析。

6.3创建视图

根据视图解析器的配置,我们在WEB-INF/目录下新建文件夹jsp,同时新建jsp页面roleDetails.jsp:

 roleDetails.jsp

<%@ page pageEncoding="utf-8"%>



ssm框架测试


角色名称:${role.roleName}
角色描述:${role.note}

jsp页面中我们通过el表达式对数据进行展示。

7.SSM测试

到这里ssm的整合就全部完成了,我们开始进行测试,从数据库中取出角色信息返回到jsp页面中进行展示

新建com.ssm.service和com.ssm.service.impl包,分别创建RoleService接口和RoleServiceImpl实现类:

 RoleService接口

package com.ssm.service;

import com.ssm.pojo.Role;

public interface RoleService {
	public Role getRole(Long id);
}

 RoleServiceImpl实现类

package com.ssm.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.ssm.mapper.RoleMapper;
import com.ssm.pojo.Role;
import com.ssm.service.RoleService;

@Service//表示此类将自动注册到spring容器中去(前提是已经在xml配置文件中启用了扫描)
public class RoleServiceImpl implements RoleService {

	@Autowired
	private RoleMapper roleMapper = null;

	@Override
	public Role getRole(Long id) {
		return roleMapper.getRole(id);
	}

}

 到这里启动tomcat服务器,输入请求:http://localhost:8080/project-181107-ssm/role/getRole.do?id=1,得到页面:

手把手教你搭建与整合SSM框架(文末附源码)(Spring MVC + Spring + MyBatis)_第4张图片

执行成功,ssm整合成功!!!!

在这里我简单梳理一下这个测试的整个执行流程:

页面发出请求,通过dispatcherServlet分发到指定的controller进行响应,controller接收请求参数,根据参数,通过service到数据库中取出对应id的Role,之后控制器将得到的Role对象装进ModelAndView(模型与视图)中,之后将ModelAndView对象返回给指定的视图(jsp页面),页面通过EL表达式得到Role对象的信息并展示出来。

controller中的RoleService内部是通过我们之前配置的RoleMapper接口去数据库中取出数据的,同时我们把数据库操作的Mapper接口都放入了Spring IoC容器中,至此整个SSM框架都联通起来了。

8.源码地址

链接:https://pan.baidu.com/s/1lpkIf_PSQbY4lJvGX-hZ1A 
           提取码:mj2r 

欢迎留言讨论指正......^_^...... 

你可能感兴趣的:(SSM)