重温整合Maven+SSM框架(详细思路)

一、搭建整合环境

1、整合说明

SSM整合可以使用多种方式,咱们选择的是XML + 注解的方式,这样可以更加的便捷。

2、整合的思路

  1. 搭建整合的环境
  2. Spring的配置搭建完成
  3. Spring整合SpringMVC框架
  4. Spring整合MyBatis框架
  5. Spring整合MyBatis框架配置事务(Spring的声明式事务管理)

3、创建数据库和表结构的语句

!使用的数据库名为:test

创建表:

create table library (
id int primary key auto_increment,
bookName varchar(255),
price int
);
添加数据:

insert into library (id,bookName,price) values(1,"西游记",520);
insert into library (id,bookName,price) values(2,"三国演义",521);
insert into library (id,bookName,price) values(3,"水浒传",522);
insert into library (id,bookName,price) values(4,"红楼梦",523);

4、创建Maven的工程

!使用IDEA创建Maven工程,可以去网上查询一下有很多的。(也可以参考这个博客)

创建项目的结构如下:(web依赖于service,service依赖于dao,dao依赖于pojo

重温整合Maven+SSM框架(详细思路)_第1张图片

在Libraryproject的pom.xml文件中引入坐标依赖如下:


    UTF-8
    1.7
    1.7
    5.0.2.RELEASE
    1.6.6
    1.2.12
    5.1.6
    3.4.5
  



    
      org.aspectj
      aspectjweaver
      1.6.8
    
    
      org.springframework
      spring-aop
      ${spring.version}
    
    
      org.springframework
      spring-context
      ${spring.version}
    
    
      org.springframework
      spring-web
      ${spring.version}
    
    
      org.springframework
      spring-webmvc
      ${spring.version}
    
    
      org.springframework
      spring-test
      ${spring.version}
    
    
      org.springframework
      spring-tx
      ${spring.version}
    
    
      org.springframework
      spring-jdbc
      ${spring.version}
    
    
      junit
      junit
      4.12
      compile
    
    
      mysql
      mysql-connector-java
      ${mysql.version}
    
    
      javax.servlet
      servlet-api
      2.5
      provided
    
    
      javax.servlet.jsp
      jsp-api
      2.0
      provided
    
    
      jstl
      jstl
      1.2
     
    
      log4j
      log4j
      ${log4j.version}
    
    
      org.slf4j
      slf4j-api
      ${slf4j.version}
    
    
      org.slf4j
      slf4j-log4j12
      ${slf4j.version}
     
    
      org.mybatis
      mybatis
      ${mybatis.version}
    
    
      org.mybatis
      mybatis-spring
      1.3.0
    
    
      c3p0
      c3p0
      0.9.1.2
      jar
      compile
    
  

5、编写实体类,在com.jm.pojo包下创建

创建实体类如下:

package com.jm.pojo;

import java.io.Serializable;

/**
 * @author jm
 * @date 2020/4/25
 **/
public class Library implements Serializable {

    private Integer id;
    private String bookName;
    private Integer price;
    
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public Integer getPrice() {
        return price;
    }

    public void setPrice(Integer price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "Library{" +
                "id=" + id +
                ", bookName='" + bookName + '\'' +
                ", price=" + price +
                '}';
    }
}

6、创建dao持久层接口

在com.jm.dao包下创建LibraryDao接口如下:

package com.jm.dao;

import com.jm.pojo.Library;

import java.util.List;


/**
 * @author jm
 * @date 2020/4/25
 **/
public interface LibraryDao {
    //查询所有图书信息
    public List findAll();
    //保存图书信息
    public void saveLibrary(Library library);
}

7、创建service接口与实现类

在com.jm.service包下创建LibraryService接口如下:

package com.jm.service;

import com.jm.pojo.Library;

import java.util.List;

/**
 * @author jm
 * @date 2020/4/25
 **/
public interface LibraryService {

    //查询所有图书信息
    public List findAll();
    //保存图书信息
    public void saveLibrary(Library library);
}

创建com.jm.service.impl包下的service接口实现类LibraryServiceImpl如下:

package com.jm.service.impl;

import com.jm.pojo.Library;
import com.jm.service.LibraryService;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author jm
 * @date 2020/4/25
 **/
@Service("libraryService")
public class LibraryServiceImpl implements LibraryService {
    @Override
    public List findAll() {
        System.out.println("Service业务层:查询所有图书信息.....");
        return null;
    }

    @Override
    public void saveLibrary(Library library) {
        System.out.println("Service业务层:保存图书信息.....");
    }
}

!以上就是整合环境搭建,接下来就搭建Spring配置。

二、Spring框架代码的编写

开始搭建和测试Spring的开发环境

1、创建resources的资源文件目录管理XML配置文件

创建资源文件为:resources,用来管理放置XML配置文件

重温整合Maven+SSM框架(详细思路)_第2张图片

 创建完resources资源文件,然后将其资源文件权限修改为:Resources Boot 如下:

重温整合Maven+SSM框架(详细思路)_第3张图片

2、编写applicationContext.xml的配置文件

在resources资源文件中创建applicationContext.xml的配置文件,编写具体的配置信息如下:






    
    



3、在项目中编写测试方法,进行Spring测试

在com.jm.test包下创建TestSpring类,如下:

重温整合Maven+SSM框架(详细思路)_第4张图片

package com.jm.test;

import com.jm.service.LibraryService;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @author jm
 * @date 2020/4/25
 **/
public class TestSpring {

    @Test
    public void TestRun(){
        ClassPathXmlApplicationContext cs = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
        LibraryService ls = (LibraryService) cs.getBean("libraryService");
        ls.findAll();
    }
}

测试出如下结果,说明搭建Spring的开发环境成功!

三、SpringMVC框架代码的编写

主要内容:搭建和测试SpringMVC的开发环境

1、在web.xml中配置DispatcherServlet前端控制器和过滤器解决中文乱码




  Archetype Created Web Application

  
  
    dispatcherServlet
    org.springframework.web.servlet.DispatcherServlet
    
    
      contextConfigLocation
      classpath:springmvc.xml
    
    
    1
  
  
    dispatcherServlet
    /
  

  
  
    characterEncodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    
      encoding
      UTF-8
    
  
  
    characterEncodingFilter
    /*
  

2、创建springmvc.xml的配置文件

在resources资源文件中创建springmvc.xml配置文件如下:

 



    
    
        
    

    
    
        
        
    
    
    
    
    
    
    

3、创建jsp页面,并编写controller层

编写index.jsp页面如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


测试SpringMVC查询



在controller层中创建LibraryController类并编写查询方法如下:

package com.jm.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @author jm
 * @date 2020/4/25
 **/
@Controller
public class LibraryController {

    @RequestMapping("/library/findAll")
    public String findAll(){
        System.out.println("进入contr层:进行查询图书信息......");
        return  "list";
    }
}

创建controller层跳转的list.jsp页面如下:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>



    Title


    

跳转成功,展示所有图书信息!

4、给项目部署Tomcat进行页面测试

配置Tomcat如下:

重温整合Maven+SSM框架(详细思路)_第5张图片

重温整合Maven+SSM框架(详细思路)_第6张图片

重温整合Maven+SSM框架(详细思路)_第7张图片

重温整合Maven+SSM框架(详细思路)_第8张图片

5、启动项目,进入页面测试接口

在页面输入http://localhost:8080/Libraryproject_war_exploded/ 

重温整合Maven+SSM框架(详细思路)_第9张图片

点击进入跳转到展示所有图书信息,则测试成功!如下:

重温整合Maven+SSM框架(详细思路)_第10张图片

以上就是Spring、SpringMVC的开发环境就搭建完成了,接下来就开始整合Spring和SpringMVC了!

四、Spring整合SpringMVC的框架

1、在web.xml中配置ContextLoaderListener监听器

在项目启动的时候,就去加载applicationContext.xml的配置文件,在web.xml中配置ContextLoadListener监听器(该监听器只能加载WEN-INF母驴下的applicationContext.xml的配置文件)。想要加载applicationContext.xml的配置文件有两种方法,第一种(不建议使用);推荐使用第二种如下:

在web.xml中配置加载路径:

 
    
        org.springframework.web.context.ContextLoaderListener
    
 
    
        contextConfigLocation
        classpath:applicationContext.xml
    

2、controller中注入service对象,调用service对象方法并测试

现在启动服务器时会加载spring配置文件,那么,我们可以在controller层注入service的方法,如下:

package com.jm.controller;

import com.jm.service.LibraryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @author jm
 * @date 2020/4/25
 **/
@Controller
public class LibraryController {

    @Autowired
    private LibraryService libraryService;

    @RequestMapping("/library/findAll")
    public String findAll(){
        System.out.println("进入contr层:进行查询图书信息......");
        libraryService.findAll();
        return  "list";
    }
}

测试Spring和SpringMVC整合是否成功,看如下效果:

重温整合Maven+SSM框架(详细思路)_第11张图片

五、MyBatis框架代码的编写

提到MyBatis,就要想到dao持久层;MyBatis环境搭建首先是dao,再搭建MyBatis,在此之前还要编写mapper映射的配置文件,这里我们选择使用注解的方式如下:

1、在LibraryDao接口方法是添加注解,编写SQL语句

package com.jm.dao;

import com.jm.pojo.Library;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;

import java.util.List;


/**
 * @author jm
 * @date 2020/4/25
 **/
@Repository//此注解表示为持久层
public interface LibraryDao {
    //查询所有图书信息
    @Select("select * from library")
    public List findAll();
    //保存图书信息
    @Insert("insert into library (bookName,price) value(#{bookName},#{price})")
    public void saveLibrary(Library library);
}

2、创建SqlMapConfig.xml的配置文件并编写

在resources文件下创建SqlMapConfig.xml的配置文件如下:

 

    
        
            
            
                
                
                
                
            
        
    
    
    
         
        
    

3、创建并编写MyBatis测试方法

在com.jm.test包下创建TestMyBatis测试类如下:

package com.jm.test;

import com.jm.dao.LibraryDao;
import com.jm.pojo.Library;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * @author jm
 * @date 2020/4/26
 **/
public class TestMyBatis {

    @Test
    public void myRunOne() throws IOException {
        Library library = new Library();
        library.setBookName("金瓶梅");
        library.setPrice(998);
        //加载配置文件
        InputStream rst = Resources.getResourceAsStream("SqlMapConfig.xml");
        //创建SqlSessionFactory对象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(rst);
        //创建SqlSession对象
        SqlSession session = factory.openSession();
        //获取到代理对象
        LibraryDao dao = session.getMapper(LibraryDao.class);
        dao.saveLibrary(library);
        session.commit();
        session.close();
        rst.close();
    }

    @Test
    public void myRunTwo() throws IOException {
        InputStream rst = Resources.getResourceAsStream("SqlMapConfig.xml");

        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(rst);

        SqlSession session = factory.openSession();

        LibraryDao dao = session.getMapper(LibraryDao.class);

        List list = dao.findAll();
        for (Library library: list ) {
            System.out.println(library);
        }
        session.close();
        rst.close();
    }

}

测试效果如下:

六、Spring整合MyBatis框架

整合思路:需要Service层能够调用Dao层的对象,进行数据库的操作;现在Spring已经是在IOC容器中,Dao是个接口,可通过程序把这个接口生成代理对象,我们把这个代理对象放到IOC容器,那么service就可以拿到这个对象在service中做个注入,调用dao代理对象的方法。

把SqlMapConfig.xml配置文件中的内容配置到applicationContext.xml配置文件中如下:

 
    
    
        
        
        
        
    

1、在applicationContext.xml中配置SqlSessionFactory工厂

在applicationContext.xml中配置SqlSessionFactory工厂,这就相当于IOC容器中有工厂,就可以去创建SqlSession,进而

通过Sqlsession拿到代理对象,没必要每次测试都去创建工厂,配置如下:

 

    
 

2、在applicationContext.xml中配置LibraryDao接口在包

现在工厂、SqlSession都有了,那代理谁?所以我们要配置Library接口所在包,告诉SqlSession去代理接口所在包中的代理,从而存到IOC容器中,如下:

 
    
        
    

以上就是把MyBatis中配置(SqlMaoConfig.xml)转移到spring中去,让他产生代理并存到IOC容器中。

3、完善Service层代码

package com.jm.service.impl;

import com.jm.dao.LibraryDao;
import com.jm.pojo.Library;
import com.jm.service.LibraryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author jm
 * @date 2020/4/25
 **/
@Service("libraryService")
public class LibraryServiceImpl implements LibraryService {

    @Autowired
    private LibraryDao libraryDao;

    @Override
    public List findAll() {
        System.out.println("Service业务层:查询所有图书信息.....");
        return libraryDao.findAll();
    }

    @Override
    public void saveLibrary(Library library) {
        System.out.println("Service业务层:保存图书信息.....");
        libraryDao.saveLibrary(library);
    }
}

4、完善Controller层代码

package com.jm.controller;

import com.jm.pojo.Library;
import com.jm.service.LibraryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

/**
 * @author jm
 * @date 2020/4/25
 **/
@Controller
public class LibraryController {

    @Autowired
    private LibraryService libraryService;

    @RequestMapping("/library/findAll")
    public String findAll(Model model){
        System.out.println("进入contr层:进行查询图书信息......");
        List list = libraryService.findAll();
        model.addAttribute("list",list);
        return  "list";
    }
}

5、创建list.jsp页面并展示数据

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>



    Title


    

查询所有图书信息

${liy.bookName}

6、启动项目并测试

重温整合Maven+SSM框架(详细思路)_第12张图片

七、Spring整合MyBatis框架配置事务(Spring的声明式事务管理)

1、在applicationContext.xml中配置Spring框架声明式事务管理


    
        
            
            
        
    

    
    
        
    

2、完善index.jsp页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


    测试
    

测试页面

图书名称:
价格:

3、完善Service层、Controller层代码

 @Override
    public void saveLibrary(Library library) {
        System.out.println("Service业务层:保存图书信息.....");
        libraryDao.saveLibrary(library);
    }
@RequestMapping("/library/saveData")
    public void saveData(Library library, HttpServletRequest request, HttpServletResponse response) throws IOException {
        libraryService.saveLibrary(library);
        response.sendRedirect(request.getContextPath() + "/library/findAll");
        return ;
    }

4、启动项目并测试运行

重温整合Maven+SSM框架(详细思路)_第13张图片

结束语:以上就是SSM框架的整合,此篇只是自己作为练习发布的,如果有大神看到了可以请绕过,谢谢!

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(java,mybatis,spring,jsp)