SSM框架指的是Spring、SpringMVC、MyBatis

本文介绍将这三个框架进行整合。本文使用的工具是

IDEA2022、JDK1.8、maven3.6.3

一、创建数据库

创建一个数据,名字为ssm,然后创建一个名字为book的表


CREATE DATABASE IF NOT EXISTS ssm;

use ssm;
-- 如果表存在则删除
DROP TABLE IF EXISTS book;
-- 创建新表
CREATE TABLE book (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    press VARCHAR(100),
    author VARCHAR(50)
);

INSERT INTO book (name, press, author) VALUES ('Java编程思想', '机械工业出版社', 'Bruce Eckel');
INSERT INTO book (name, press, author) VALUES ('Spring实战', '人民邮电出版社', 'Craig Walls');

SELECT * from book;

创建完毕以后查询数据库结果如下:

二、创建项目

打开IDEA,点击File—>New—>Project

我们 选择“Maven”项目, JDK这里选择1.8版本,下面勾选maven-archtype-webapp,然后点击“Next”

项目名称为SSM

此处主要配置一下maven,配置完了以后选择”Finish”

点击“Finish”,等待一会儿(网络好的情况下会快一些),可以看到项目结构如下:

(1)下面开始生成相关文件夹(java、resources)

右击main文件夹,选择New—>Directory

在弹出来的框中分别选择java和resources文件夹,按回车,生成这两个文件夹。

(2)创建相关文件夹

右击java文件夹,选择New—>Package

包名为com.guo.www (可以自定义为其他的)

继续右击www文件夹,分别创建controller、domain、service、mapper、test文件夹,创建后结构如下:

三、引入项目依赖

打开pom.xml文件,参考下面的代码。

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>SSM</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>SSM Maven Webapp</name>
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.1</version>
      <scope>test</scope>
    </dependency>
    <!-- Spring相关依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.8.RELEASE</version>
    </dependency>
    <!--Spring事务管理-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>5.2.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.2.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>5.2.8.RELEASE</version>
    </dependency>
    <!--Spring MVC的相关依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.8.RELEASE</version>
    </dependency>
    <!--MyBatis相关依赖-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.2</version>
    </dependency>
    <!--MyBatis与Spring整合相关依赖-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>2.0.1</version>
    </dependency>
    <!--数据源-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.20</version>
    </dependency>
    <!--单元测试相关的依赖-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <!-- 相关的依赖-->
    <!--ServletAPI:引入servlet的功能-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <!--ServletAPI: jsp页面的功能包 -->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.2</version>
      <scope>provided</scope>
    </dependency>
    <!-- 数据库驱动相关依赖-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.16</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>compile</scope>
    </dependency>

  </dependencies>

  <build>
    <finalName>SSM</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.4.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.3.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.13.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.4.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>3.1.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>3.1.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

然后右击右侧的maven,点击上面按钮,下载maven相关的依赖,等待依赖下载。

四、创建实体类

右击domain文件夹,选择New—Java Class

实体类的名字为Book

实体类的参考代码如下:

package com.guo.www.domain;


public class Book {
    private Integer id;            //图书id
    private String name;        //图书名称
    private String press;        //出版社
    private String author;        //作者

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPress() {
        return press;
    }

    public void setPress(String press) {
        this.press = press;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }
}
五、创建DAO层代码

(1)创建Mapper文件

右击mapper文件夹,选择New—>Java Class,名字为BookerMapper,这里的类型要选Interface

参考代码如下:

package com.guo.www.mapper;

import com.guo.www.domain.Book;

public interface BookMapper {
    public Book findBookById(Integer id);

}

(2)创建mapper对应的xml文件,

上面的mapper文件对应的xml文件,这个xml文件就是我们需要对数据库进行操作的文件。

右击resources文件夹,选择New—>Directory文件夹,

创建文件夹名字为dao。

然后继续右击刚才创建的dao文件夹,选择New—>File

文件名为BooKMapper.xml

参考代码如下:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.guo.www.mapper.BookMapper">
    <!--根据id查询图书信息 -->
    <select id="findBookById" parameterType="int"
            resultType="com.guo.www.domain.Book">
  		select * from tb_book where id = #{id}
  	</select>
</mapper>

注意:xml文件中的namespace指向的是上面的mapper,这个是必须的,这样上面的mapper文件才会知道要执行哪个xml文件中的代码。

下面的resultType一般指向实体类(注意路径)

六、创建Service层代码

Service一个有两个代码,一个是接口,一个是接口的实现类。

(1)Service代码

右击service文件夹,选择New—>Java Class

名字为BookService,类型选Interface

参考代码如下:

package com.guo.www.service;


import com.guo.www.domain.Book;

public interface BookService {
    public Book findBookById(Integer id);
}

(2)创建impl代码

右击service文件夹,新建impl文件夹

刚才新建的impl文件夹,选择New—>java Class

名称为BookServiceImpl

参考代码如下:

package com.guo.www.service.impl;

import com.guo.www.domain.Book;
import com.guo.www.mapper.BookMapper;
import com.guo.www.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class BookServiceImpl implements BookService {
    @Autowired
    private BookMapper bookMapper;

    public Book findBookById(Integer id) {
        return bookMapper.findBookById(id);
    }
}

创建完毕后项目结构如下:

七、创建Controller层代码

右击controller文件夹,选择New—>Java Class

名称为BookController

参考代码如下:

package com.guo.www.controller;

import com.guo.www.domain.Book;
import com.guo.www.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class BookController {
    @Autowired
    private BookService bookService;

    @RequestMapping("/book")
    public ModelAndView findBookById(Integer id) {
        Book book = bookService.findBookById(id);
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("book.jsp");
        modelAndView.addObject("book", book);
        return modelAndView;
    }
}

八、Sping和MyBatis整合

(1)创建数据库文件

右击resources文件夹,选择New—>File

名字为db.properties

参考代码如下:

jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
jdbc.username=root
jdbc.password=root

创建完后,项目结构如下:

(2)创建MyBatis配置文件(mybatis-config.xml)

右击service文件夹,选择New—File

名字为mybatis-config.xml

注意,这里文件的名称不一定是这个,也可以命名成其他的,比如application-dao.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"
       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
 	">
    <!--引入属性文件-->
    <context:property-placeholder location="classpath:db.properties"/>
    <!--数据源-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    <!--创建SqlSessionFactory对象-->
    <bean id="sqlSessionFactory"
          class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--数据源-->
        <property name="dataSource" ref="dataSource"/>
        <!-- 扫描sql配置文件:mapper需要的xml文件 -->
        <property name="mapperLocations" value="classpath:dao/*.xml"/>
    </bean>
    <!--扫描Dao包,创建动态代理对象, 会自动存储到spring IOC容器中-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--指定要扫描的dao的包-->
        <property name="basePackage" value="com.guo.www.mapper"/>

    </bean>
</beans>

注意对应关系

九、Spring配置文件

在resources目录下创建配置文件application-service.xml用于配置Spring对Service层的扫描信息。

右击

名字为application-service.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"
       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
       	">
    <!--开启注解扫描, 扫描包-->
    <context:component-scan base-package="com.guo.www.service"/>
</beans>
十、SpringMVC的配置

(1)新增spring-mvc.xml文件

右击resources文件夹,选择New—>File

名字为spring-mvc.xml

参考代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       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">
    <!-- 配置要扫描的包 -->
    <context:component-scan base-package="com.guo.www.controller"/>
    <!-- 配置注解驱动 -->
    <mvc:annotation-driven/>
    
</beans>
十一、修改web.xml文件

打开web.xml文件,修改参考如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app
    version="4.0"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:javaee="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xml="http://www.w3.org/XML/1998/namespace"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
  <display-name>Archetype Created Web Application</display-name>
    <!--配置文件加载-->
    <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>
        classpath:mybatis-config.xml,
        classpath:application-service.xml
      </param-value>
    </context-param>
    <!--容器加载的监听器-->
    <listener>
      <listener-class>
        org.springframework.web.context.ContextLoaderListener
      </listener-class>
    </listener>
    <!--Spring MVC 前端控制器-->
    <servlet>
      <servlet-name>DispatcherServlet</servlet-name>
      <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
      </servlet-class>
      <!--初始化参数-->
      <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-mvc.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>
十二、增加jsp文件

本文前端需要jsp文件进行配合,右击webapp,选择New—>JSP/JSPX

名称为book

参考代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head><title>图书信息查询</title></head>
<body>
<table border="1">
    <tr>
        <th>图书id</th>
        <th>图书名称</th>
        <th>出版社</th>
        <th>作者</th>
    </tr>
    <tr>
        <td>${book.id}</td>
        <td>${book.name}</td>
        <td>${book.press}</td>
        <td>${book.author}</td>
    </tr>
</table>
</body>
</html>

十三、效果测试

参考下面这篇文章配置tomcat:Spring MVC项目配置tomcat – 每天进步一点点

然后启动项目。

启动后在浏览器访问下面的网址:

http://localhost:8080/SSM_war/book?id=1

然后可以看到实现的效果

十四、后记

上面简单完成了SSM框架代码,但是没有配置json的相关配置, 在实际开发中,后端一般返回json格式数据,这里也简单说明一下配置方式。

修改下面的代码:

BookMapper.xml 修改如下:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.guo.www.mapper.BookMapper">
    <!--根据id查询图书信息 -->
    <select id="findBookById" parameterType="int"
            resultType="com.guo.www.domain.Book">
  		select * from book where id = #{id}
  	</select>

    <select id="findAllBook" resultType="com.guo.www.domain.Book">
        select  * from book;
    </select>
</mapper>

BookMapper修改如下:

package com.guo.www.mapper;

import com.guo.www.domain.Book;

import java.util.List;

public interface BookMapper {

    public Book findBookById(Integer id);

    public List<Book> findAllBook();
}

BookServiceImpl文件修改如下:

package com.guo.www.service.impl;

import com.guo.www.domain.Book;
import com.guo.www.mapper.BookMapper;
import com.guo.www.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class BookServiceImpl implements BookService {
    @Autowired
    private BookMapper bookMapper;

    public Book findBookById(Integer id) {
        Book book =  bookMapper.findBookById(id);
        return  book;
    }

    public List<Book> findAllBook(){
        return bookMapper.findAllBook();
    }
}

BookService文件修改如下:

package com.guo.www.service;


import com.guo.www.domain.Book;

import java.util.List;

public interface BookService {
    public Book findBookById(Integer id);

    public List<Book> findAllBook();
}

BookController文件修改如下:

package com.guo.www.controller;

import com.guo.www.domain.Book;
import com.guo.www.service.BookService;
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.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import java.util.List;

@Controller
public class BookController {
    @Autowired
    private BookService bookService;

    @RequestMapping("/book")
    public ModelAndView findBookById(Integer id) {
        Book book = bookService.findBookById(id);
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("book.jsp");
        modelAndView.addObject("book", book);
        return modelAndView;
    }


    @RequestMapping("/allbook")
    @ResponseBody
    public List<Book> findAllBook(){
        List<Book> books = bookService.findAllBook();
        return books;
    }

}

pom文件需要引入json转换的相关依赖,

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>SSM</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>SSM Maven Webapp</name>
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.1</version>
      <scope>test</scope>
    </dependency>
    <!-- Spring相关依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.8.RELEASE</version>
    </dependency>
    <!--Spring事务管理-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>5.2.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.2.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>5.2.8.RELEASE</version>
    </dependency>
    <!--Spring MVC的相关依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.8.RELEASE</version>
    </dependency>
    <!--MyBatis相关依赖-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.2</version>
    </dependency>
    <!--MyBatis与Spring整合相关依赖-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>2.0.1</version>
    </dependency>
    <!--数据源-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.20</version>
    </dependency>
    <!--单元测试相关的依赖-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <!-- 相关的依赖-->
    <!--ServletAPI:引入servlet的功能-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <!--ServletAPI: jsp页面的功能包 -->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.2</version>
      <scope>provided</scope>
    </dependency>
    <!-- 数据库驱动相关依赖-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.16</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>compile</scope>
    </dependency>
    <!-- Jackson 转换的数据绑定包依赖 -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.12.3</version>
    </dependency>
  </dependencies>

  <build>
    <finalName>SSM</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.4.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.3.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.13.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.4.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>3.1.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>3.1.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

重新启动项目,访问下面的网址,就可以看到返回的是json数据了

http://localhost:8080/SSM_war/allbook

效果如下:

本文源代码下载地址(访问密码: 6521):

SSM.zip: https://url47.ctfile.com/f/64055047-1509662263-29e17b?p=6521