主要知识点

  • SSM整合配置
  • MyBatis-Plus配置与应用
  • Kaptcha验证码组件使用
  • 富文本编辑器wangEditor
  • Spring Task任务调度器

1、SSM整合的意义

1.1、什么是整合

  • 通过Spring IOC容器管理第三方框架对象,让对框架形成整体。
  • Spring/Spring MVC/MyBatis是业内最主流的框架搭配

    1.2、SSM整合三阶段

  • Spring与Spring MVC环境配置

  • Spring与MyBatis的整合配置
  • 整合其他组件:声明式事务、日志、任务调度/…

    2、Spring与Spring MVC环境配置

  • 依赖spring-webmvc

    1. <dependencies>
    2. <!--引入Spring MVC依赖,Spring底层的其他依赖会进行自动引入-->
    3. <dependency>
    4. <groupId>org.springframework</groupId>
    5. <artifactId>spring-webmvc</artifactId>
    6. <version>5.2.9.RELEASE</version>
    7. </dependency>
    8. <!--FreeMarker-->
    9. <dependency>
    10. <groupId>org.freemarker</groupId>
    11. <artifactId>freemarker</artifactId>
    12. <version>2.3.30</version>
    13. </dependency>
    14. <dependency>
    15. <groupId>org.springframework</groupId>
    16. <artifactId>spring-context-support</artifactId>
    17. <version>5.2.9.RELEASE</version>
    18. </dependency>
    19. <!--Jackson-->
    20. <dependency>
    21. <groupId>com.fasterxml.jackson.core</groupId>
    22. <artifactId>jackson-core</artifactId>
    23. <version>2.11.3</version>
    24. </dependency>
    25. <dependency>
    26. <groupId>com.fasterxml.jackson.core</groupId>
    27. <artifactId>jackson-annotations</artifactId>
    28. <version>2.11.3</version>
    29. </dependency>
    30. <dependency>
    31. <groupId>com.fasterxml.jackson.core</groupId>
    32. <artifactId>jackson-databind</artifactId>
    33. <version>2.11.3</version>
    34. </dependency>
    35. </dependencies>
  • 配置DispatcherServlet

    1. <servlet>
    2. <servlet-name>springmvc</servlet-name>
    3. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    4. <init-param>
    5. <param-name>contextConfigLocation</param-name>
    6. <param-value>classpath:applicationContext*.xml</param-value>
    7. </init-param>
    8. <load-on-startup>0</load-on-startup>
    9. </servlet>
    10. <servlet-mapping>
    11. <servlet-name>springmvc</servlet-name>
    12. <url-pattern>/</url-pattern>
    13. </servlet-mapping>
  • 启用Spring MVC注解模式 ```xml <?xml version=”1.0” encoding=”UTF-8”?> <beans xmlns=”http://www.springframework.org/schema/beans

    1. xmlns:mvc="http://www.springframework.org/schema/mvc"
    2. xmlns:context="http://www.springframework.org/schema/context"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mv="http://www.springframework.org/schema/mvc"
    4. xsi:schemaLocation="http://www.springframework.org/schema/beans
    5. http://www.springframework.org/schema/beans/spring-beans.xsd
    6. http://www.springframework.org/schema/context
    7. http://www.springframework.org/schema/context/spring-context.xsd
    8. http://www.springframework.org/schema/mvc
    9. http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    1. <mvc:message-converters>
    2. <!--解决响应中文乱码问题-->
    3. <bean class="org.springframework.http.converter.StringHttpMessageConverter">
    4. <property name="supportedMediaTypes">
    5. <list>
    6. <value>text/html;character;charset=utf-8</value>
    7. </list>
    8. </property>
    9. </bean>
    10. </mvc:message-converters>

  1. - 配置请求与响应字符集
  2. - 解决请求中文乱码问题
  3. ```xml
  4. <!--处理请求的中文乱码问题-->
  5. <filter>
  6. <filter-name>characterFilter</filter-name>
  7. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  8. <init-param>
  9. <param-name>encoding</param-name>
  10. <param-value>UTF-8</param-value>
  11. </init-param>
  12. </filter>
  13. <filter-mapping>
  14. <filter-name>characterFilter</filter-name>
  15. <url-pattern>/*</url-pattern>
  16. </filter-mapping>
  • 解决响应中文乱码问题
    1. <mvc:annotation-driven>
    2. <mvc:message-converters>
    3. <!--解决响应中文乱码问题-->
    4. <bean class="org.springframework.http.converter.StringHttpMessageConverter">
    5. <property name="supportedMediaTypes">
    6. <list>
    7. <value>text/html;character;charset=utf-8</value>
    8. </list>
    9. </property>
    10. </bean>
    11. </mvc:message-converters>
    12. </mvc:annotation-driven>
  • 配置FreeMarker模板引擎

    1. <!--配置FreeMarker模板引擎-->
    2. <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    3. <!--templateLoaderPath属性是FreeMarker脚本存放地址-->
    4. <property name="templateLoaderPath" value="/WEB-INF/ftl"/>
    5. <!--FreeMarker本身参数配置-->
    6. <property name="freemarkerSettings">
    7. <props>
    8. <!--默认编码类型;读取ftl文件时的编码-->
    9. <prop key="defaultEncoding">UTF-8</prop>
    10. </props>
    11. </property>
    12. </bean>
    13. <!--配置视图解析器:决定了使用那种模板引擎对数据进行解析;真正执行的对象是ViewResolver -->
    14. <bean id="ViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
    15. <!--配置响应类型,Spring MVC加载FreeMarker片段返回数据的时候所使用-->
    16. <property name="contentType" value="text/html;charset=utf-8"/>
    17. <property name="suffix" value=".ftl"/>
    18. </bean>
  • 配置JSON序列化组件

    1. <mvc:annotation-driven>
    2. <mvc:message-converters>
    3. <!--解决响应中文乱码问题,没有使用模板引擎,直接向客户端输出的时候生效-->
    4. <bean class="org.springframework.http.converter.StringHttpMessageConverter">
    5. <property name="supportedMediaTypes">
    6. <list>
    7. <value>text/html;character;charset=utf-8</value>
    8. <!--对JSON格式的字符串进行转换-->
    9. <value>application/json;charset=utf-8</value>
    10. </list>
    11. </property>
    12. </bean>
    13. </mvc:message-converters>
    14. </mvc:annotation-driven>

    3、Spring与MyBatis整合配置

  • 依赖mybatis-spring及驱动

  • 配置数据源和连接池

    1. <!--MyBatis与Spring的整合配置-->
    2. <!--2、配置数据源-->
    3. <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    4. <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
    5. <property name="url" value="jdbc:mysql://localhost:3306/imooc_reader?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai&amp;allowPublicKeyRetrieval=true"/>
    6. <property name="username" value="root"/>
    7. <property name="password" value="mysqladmin"/>
    8. <property name="initialSize" value="5"/>
    9. <property name="maxActive" value="20"/>
    10. </bean>
  • 配置SqlSessionFactory

  • 配置Mapper扫描器
  • 创建mybatis-config.xml
  • 整合其他组件

    • 配置logback日志输出
    • 声明式事务配置
    • 整合JUnit单元测试

      4、MyBatis-Plus

  • MyBastis-Plus(简称MP)是一个MyBatis的增强工具

  • 自动实现Mapper CRUD操作,极致提高数据库开发效率
  • MP在MyBatis的基础上只做增强,不做修改

    4.1、MyBatis-Plus整合三部曲

  • pom引入mybatis-plus依赖

  • Spring XMl更改配置SqlSessionFactory实现类
  • mybatis-config.xml增加MP分页插件

    4.2、MyBatis开发三部曲

  • 创建实体类,@TableName、@TableId、@TableField实现与表字段的映射

  • 创建Mapper接口继承BaseMapper(BaseMapper中提供了像新增、修改、删除等方法的声明),BaseMapper要定义泛型,说明对应的实体是 哪一个,创建MapperXML。
  • 开发时注入Mapper对象,通过内置API实现CRUD操作

    4.3、MyBatis-Plus核心注解

  • @TableName-将实体类与表名映射

  • @TableId-说明对应属性是表的主键
  • @TableField-设置属性与列名的对应关系

    4.4、BaseMapper接口核心API

    | 方法名 | 用途 | | —- | —- | | insert(entity) | 数据新增,自动生成insert sql,根据@TableId 决定注解生成方式 | | updateById(entity) | 根据主键更新对应对象,自动生成update sql | | deleteById(id) | 根据主键删除数据,自动生成delete sql | | selectById(id) | 根据主键查询对应的实体对象,自动生成select sql | | selectList(queryWrapper) | 根据查询生成器(QueryWrapper)的条件自动生成sql查询返回List集合 | | selectPage(Page,queryWrapper) | 分页查询方法,自动生成分页limit子句,返回IPage分页对象 |

5、基于SSM开发慕课书评网

5.1、案例分析