【Spring篇】SSM框架整合

提示:ssm是一个整体不整合就达不到快速开发的效果,后期会有boot
boot本质就是封装SSM,实现快速开发
所以学习boot之前,ssm是基础哦
由于个人能力有限,终结篇并不是源码

目录

  • 前言
  • 1.概述
    • a>各个框架的作用
    • b>IOC容器
    • c>IOC容器创建的顺序
  • 2.整合步骤
    • a>导入依赖
    • b>创建数据库中的表
    • c>配置web.xml
    • d>创建springmvc的配置文件
    • e>搭建MyBatis的环境
    • f>创建log4j日志文件
  • 3.总结


前言

此篇仅为个人初期学习笔记,如有错误,请xdm指正
你这么好看,还。。。。。。

1.概述

a>各个框架的作用

  • SpringMVC:表述层框架,获取浏览器发送的请求,并响应浏览器
  • MyBatis:持久层框架,操作数据库中的数据
  • Spring:整合型框架,通过IOC管理对象,AOP实现事务操作

b>IOC容器

  1. Spring和SpringMVC整合
    • 俩个各自使用各自的IOC容器,管理各自的组件
    • SpringMVC容器管理控制层组件
    • Spring管理其它组件
  2. 俩个IOC如何交互
    • SpringMVC是子容器,Spring是父容器
    • 子容器可以使用父容器中的bean,父容器不能使用子容器中的bean

c>IOC容器创建的顺序

  1. 先创建spring的,再创建springmvc的

    1. Why?

      • 自动装配是在获取ioc容器时完成的

      • 而springmvc想实现自动往cotroller中装配service组件,此操作是在获取springmvc的ioc容器时完成的

      • 然而controller和service是由spring的ioc来自动装配的

      • 所以要保证二操作的执行,必须在之前就获取到service和从controller组件,才能实现在获取ioc容器时,自动装配

    2. Spring中IOC容器创建时间

      • 服务器三大组件:监听器、过滤器、Servlet
      • springmvc的ioc容器是在servlet初始化方法时创建的,为了实现往controller中自动装配service,必须在这之前创建spring的ioc容器
      • 所以spring创建ioc容器在监听器或者过滤器中
      • 过滤器不适合,过滤器是用来过滤数据的
      • 所以把创建spring的ioc容器的过程交给监听器
      • Spring提供的监听器ContextLoaderListener
        • 必须在web.xml进行配置
        • 监听servletcontext的状态
        • 在web服务器启动时,自动加载spring的配置文件,来创建ioc容器
    3. SpringMVC中IOC容器创建时间

      • 默认是在获取前端控制器时创建

      • 而为了减低第一个用户的访问时间,把该操作提前到服务器启动时

2.整合步骤

整合思路:先搭建spring工程,在spring工程的基础上整合MyBatis和SpringMVC

a>导入依赖

<dependencies>
    
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-contextartifactId>
        <version>5.3.1version>
    dependency>
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-beansartifactId>
        <version>5.3.1version>
    dependency>
    
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-webartifactId>
        <version>5.3.1version>
    dependency>
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-webmvcartifactId>
        <version>5.3.1version>
    dependency>
    
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-jdbcartifactId>
        <version>5.3.1version>
    dependency>
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-aspectsartifactId>
        <version>5.3.1version>
    dependency>
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-testartifactId>
        <version>5.3.1version>
    dependency>
    
    <dependency>
        <groupId>org.mybatisgroupId>
        <artifactId>mybatisartifactId>
        <version>3.5.7version>
    dependency>
    
    <dependency>
        <groupId>org.mybatisgroupId>
        <artifactId>mybatis-springartifactId>
        <version>2.0.6version>
    dependency>
    
    <dependency>
        <groupId>com.alibabagroupId>
        <artifactId>druidartifactId>
        <version>1.0.9version>
    dependency>
    
    <dependency>
        <groupId>junitgroupId>
        <artifactId>junitartifactId>
        <version>4.12version>
        <scope>testscope>
    dependency>
    
    <dependency>
        <groupId>mysqlgroupId>
        <artifactId>mysql-connector-javaartifactId>
        <version>8.0.16version>
    dependency>
    
    <dependency>
        <groupId>log4jgroupId>
        <artifactId>log4jartifactId>
        <version>1.2.17version>
    dependency>
    
    <dependency>
        <groupId>javax.servletgroupId>
        <artifactId>javax.servlet-apiartifactId>
        <version>3.1.0version>
        <scope>providedscope>
    dependency>
    
    <dependency>
        <groupId>ch.qos.logbackgroupId>
        <artifactId>logback-classicartifactId>
        <version>1.2.3version>
    dependency>
    
    <dependency>
        <groupId>com.fasterxml.jackson.coregroupId>
        <artifactId>jackson-databindartifactId>
        <version>2.12.1version>
    dependency>
    
    <dependency>
        <groupId>commons-fileuploadgroupId>
        <artifactId>commons-fileuploadartifactId>
        <version>1.3.1version>
    dependency>
    
    <dependency>
        <groupId>org.thymeleafgroupId>
        <artifactId>thymeleaf-spring5artifactId>
        <version>3.0.12.RELEASEversion>
    dependency>
    
    <dependency>
        <groupId>com.github.pagehelpergroupId>
        <artifactId>pagehelperartifactId>
        <version>5.2.0version>
    dependency>
dependencies>

b>创建数据库中的表

c>配置web.xml

  • 相比springmvc的web.xml多配置了一个ContextLoaderListener监听器

  • 作用:在服务器启动时,加载spring的配置文件,创建对象并且注入属性

    
    <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_4_0.xsd"
             version="4.0">
        
        <filter>
            <filter-name>CharacterEncodingFilterfilter-name>
            <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
            
            <init-param>
                <param-name>encodingparam-name>
                <param-value>UTF-8param-value>
            init-param>
            
            <init-param>
                <param-name>forceResponseEncodingparam-name>
                <param-value>trueparam-value>
            init-param>
        filter>
        <filter-mapping>
            <filter-name>CharacterEncodingFilterfilter-name>
            <url-pattern>/*url-pattern>
        filter-mapping>
        
        
        <filter>
            <filter-name>HiddenHttpMethodFilterfilter-name>
            <filter-class>org.springframework.web.filter.HiddenHttpMethodFilterfilter-class>
        filter>
        <filter-mapping>
            <filter-name>HiddenHttpMethodFilterfilter-name>
            <url-pattern>/*url-pattern>
        filter-mapping>
        
        
        <servlet>
            <servlet-name>DispatcherServletservlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
            
            <init-param>
                <param-name>contextConfigLocationparam-name>
                <param-value>classpath:springMVC.xmlparam-value>
            init-param>
            
            <load-on-startup>1load-on-startup>
        servlet>
        <servlet-mapping>
            <servlet-name>DispatcherServletservlet-name>
            <url-pattern>/url-pattern>
        servlet-mapping>
        
        
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
        listener>
        <context-param>
            <param-name>contextConfigLocationparam-name>
            <param-value>classpath:spring.xmlparam-value>
        context-param>
    web-app>
    

d>创建springmvc的配置文件


<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
       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.nuesoft.ssm.controller"/>
    
    
    <bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
        <property name="order" value="1"/>
        <property name="characterEncoding" value="UTF-8"/>
        <property name="templateEngine">
            <bean class="org.thymeleaf.spring5.SpringTemplateEngine">
                <property name="templateResolver">
                    <bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
                        
                        <property name="prefix" value="/WEB-INF/templates"/>
                        
                        <property name="suffix" value=".html"/>
                        <property name="templateMode" value="HTML5"/>
                        <property name="characterEncoding" value="UTF-8"/>
                    bean>
                property>
            bean>
        property>
    bean>
    
    
    
    
    <mvc:default-servlet-handler/>
    
    
    
    <mvc:annotation-driven/>
    
    
    
    <mvc:view-controller path="/" view-name="index"/>
    
    
    <bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
    
    
    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"/>
beans>

e>搭建MyBatis的环境

  1. properties配置文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=1234
  1. 创建mybatis的核心配置文件

DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
   
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    settings>
configuration>

f>创建log4j日志文件

`encoding=“UTF-8” ?>

`

  
    
    
      
    
  
  
    
  
  
    
  
  
    
    
  

3.总结

  1. Spring的IOC容器创建要先于SpringMVC的IOC容器
  2. SpringMVC扫描的是controller包,spring扫描其它包,分开管理组件
  3. 了解ContextLoderListener监听器的作用,在服务器启动时扫描spring的核心配置文件
  4. mbatis-config.xml被spring.xml给替代了

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