什么是整合
通过Spring IoC容器管理第三方框架对象,让多框架形成整体。
Spring/Spring MVC/MyBatis是业内最主流的框架搭配。
SSM配置与使用是所有Java工程师必须掌握的技能。
SSM整合三阶段
Spring与Spring MVC环境配置
Spring与MyBatis的整合配置
整合其他组件:声明式事务/日志/任务调度/…
创建web工程
首先创建一个maven工程


然后进行web应用的配置,点击菜单File=>Project Structure,然后在在设置面板选择Modules,增加web应用





然后创建测试页面index.html
在Tomcat发布项目




配置完点击OK在在右上角启动Tomcat,在浏览器中访问http://localhost:8080/


依赖spring-webmvc
打开pom.xml文件,引入spring-webmvc及其他依赖
<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.0modelVersion>
<groupId>com.qlgroupId>
<artifactId>ssm-readerartifactId>
<version>1.0-SNAPSHOTversion>
<properties>
<maven.compiler.source>8maven.compiler.source>
<maven.compiler.target>8maven.compiler.target>
properties>
<repositories>
<repository>
<id>aliyunid>
<name>aliyunname>
<url>https://maven.aliyun.com/repository/publicurl>
repository>
repositories>
<dependencies>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webmvcartifactId>
<version>5.2.6.RELEASEversion>
dependency>
<dependency>
<groupId>org.freemarkergroupId>
<artifactId>freemarkerartifactId>
<version>2.3.30version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-context-supportartifactId>
<version>5.2.6.RELEASEversion>
dependency>
<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-coreartifactId>
<version>2.11.0version>
dependency>
<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-annotationsartifactId>
<version>2.11.0version>
dependency>
<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-databindartifactId>
<version>2.11.0version>
dependency>
dependencies>
project>
引入完依赖,需要手动发布依赖包,选择菜单File=>Project Structure,选择好依赖jar包右键选择Put into/WEB-INF/lib然后点击OK。

配置DispatcherServlet
打开web.xml文件添加配置
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
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_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>springmvcservlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<init-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:applicationContext*.xmlparam-value>
init-param>
<load-on-startup>0load-on-startup>
servlet>
<servlet-mapping>
<servlet-name>springmvcservlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
web-app>
启用Spring MVC注解模式
在src/main/resources目录下创建applicationContext.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.ql"/>
<mvc:annotation-driven/>
<mvc:default-servlet-handler/>
beans>
配置请求与响应字符集及JSON序列化输出配置
解决请求中的中文乱码,在web.xml中配置
<filter>
<filter-name>characterFilterfilter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
<init-param>
<param-name>encodingparam-name>
<param-value>UTF-8param-value>
init-param>
filter>
<filter-mapping>
<filter-name>characterFilterfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>
解决响应中的中文乱码,打开applicationContext.xml修改mvc:annotation-driven标签内容
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=utf-8value>
<value>application/json;charset=utf-8value>
list>
property>
bean>
mvc:message-converters>
mvc:annotation-driven>
配置FreeMarker模板引擎
打开applicationContext.xml添加配置
<bean id="ViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="contentType" value="text/html;charset=utf-8"/>
<property name="suffix" value=".ftl"/>
bean>
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/ftl"/>
<property name="freemarkerSettings">
<props>
<prop key="defaultEncoding">UTF-8prop>
props>
property>
bean>
在src/main/webapp/WEB-INF/ftl目录下创建测试页面test.ftl
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
head>
<body>
测试页面
body>
html>
然后在com.ql.reader.controller包下创建类TestController.java
package com.ql.reader.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import java.util.HashMap;
import java.util.Map;
@Controller
public class TestController {
@GetMapping("/test/t1")
public ModelAndView test1(){
return new ModelAndView("/test");
}
@GetMapping("/test/t2")
@ResponseBody
public Map test2(){
Map map = new HashMap();
map.put("test", "测试文本");
return map;
}
}
然后启动项目,在浏览器中输入http://localhost:8080/test/t1和http://localhost:8080/test/t2分别测试

