1. SSM整合配置

1. Spring 与Spring MVC环境配置
1. 依赖spring-webmvc
2. 配置DispatcherServlet(Spring MVC中的核心组件用于请求的获取和转发)
3. 启用Spring MVC注解模式
4. 配置请求与相应字符集(解决请求与响应中字符集乱码的功能)

filter是配置的POST请求的字符集转换,而GET请求需要修改tomcat的server.xml增加urlEncoding这个配置项,让所有get请求的数据按照utf-8编码进行转换。但是在tomcat8以后默认get请求就是按照utf-8字符集进行转换的

5. 配置FreeMarker模板引擎
6. 配置Json序列化组件

pom.xml

<!-- 1. Maven依赖spring-webmvc -->
    <repositories>
        <repository>
            <id>aliyun</id>
            <name>aliyun</name>
            <url>https://maven.aliyun.com/repository/public</url>
        </repository>
    </repositories>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.6.RELEASE</version>
        </dependency>

        <!-- FreeMaker -->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.30</version>
        </dependency>
        <!-- 整合Freemakre组件 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>5.2.6.RELEASE</version>
        </dependency>

        <!-- Jackson, springmvc默认的序列化工具包 -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.11.0</version>
        </dependency>
        <!-- 注解包 -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.11.0</version>
        </dependency>
        <!-- 数据绑定包,通过这个绑定包可以让我们和springmvc的数据进行有效的交互 -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.11.0</version>
        </dependency>
    </dependencies>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <!-- 2. 配置DispatcherServlet -->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext*.xml</param-value>
        </init-param>
        <!-- 代表在web应用启动的时候就去初始化这个servlet-->
        <load-on-startup>0</load-on-startup>
    </servlet>
    <!-- 映射url-->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>


    <!-- 4. 解决请求中的中文乱码 (解决post请求中的乱码,核心是一个过滤器)-->
    <filter>
        <filter-name>characterFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

applicationContext.xml

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:task="http://www.springframework.org/schema/task"
       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
       http://www.springframework.org/schema/task
       http://www.springframework.org/schema/task/spring-context.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
    <!-- 3. 开启SpringMVC注解模式-->
    <context:component-scan base-package="com.imooc"/>
    <!-- 开启springmvc注解-->
    <mvc:annotation-driven>
        <!-- 解决相应时候的字符集转换 -->
        <mvc:message-converters>
            <!--用来管理响应输出所产生的main及字符集-->
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <!--说明响应内容是一个html片段,浏览器会对其进行解析,,,对于响应的内容,会先通过utf-8进行字符集编码转换,然后用http格式文本进行解析-->
                        <value>text/html;charset=utf-8</value>
                        <!-- 6. 配置json序列化输出配置 -->
                        <value>application/json;charset=utf-8</value>
                    </list>
                </property>

            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
    <!-- 将图片img,css等静态资源排除在外,进而提高springmvc对url的处理效率-->
    <mvc:default-servlet-handler/>

    <!-- 5. 配置FreeMaker模板引擎 id="freamakerConfig"代表这是freemaker的配置对象  class:去哪个目录下加载freemaker的脚本-->
    <bean id="freamakerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <!--freemaker脚本存放地址-->
        <property name="templateLoaderPath" value="/WEB-INF/ftl"/>
        <!--针对freemaker本身,需要配置的参数-->
        <property name="freemarkerSettings">
            <props>
                <!--读取指定ftl文件的时候采用utf-8编码,和请求响应中的字符集没有关系-->
                <prop key="defaultEncoding">UTF-8</prop>
            </props>
        </property>
    </bean>

    <!-- 视图解析器,规定了到底使用那种模板引擎来对数据进行解析,真正执行的对象是ViewResolver -->
    <bean id="ViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
        <!-- 在我们进行视图解析器将数据和模板引擎结合所产生的新的html片段,向响应输出时设置他的contentType, -->
        <property name="contentType" value="text/html; charset=utf-8"/>
        <!-- 要加载的模板引擎扩展名 -->
        <property name="suffix" value=".ftl"/>
    </bean>
</beans>
2. Spring 与MyBatis的整合配置

在前面我们学习mybatis时,开发了一个名为MyBatisUtils的工具类,他的主要作用是通过代码方式来实例化MyBatis最核心的对象,就是SqlSessionFactory这个对象,用于解析mybatis的配置文件,并完成一系列的初始化工作。但是当前实例化一个对象是通过代码new的形式来完成的。它和spring没有任何关系。由于这个类是我们自己创建的,spring也不会对它进行管理。spring底层提供了IOC,AOP这样的技术,可以在原始的程序之外扩展很多新的能力。比如说日志的管理,任务调度,声明式事物等。经过一些配置,SpringIOC容器在初始化时候自动创建sqlsessionFactory对象。同时这个对象也会被spring进行管理。这样基于spring的很多扩展功能都可以使用在MaBatis上。同时因为加入了mybatis-spring,把程序的创建的权利交给了springIoc容器,让我们系统中分散的技术形成了一个有机的整体,让我们程序更容易被维护,更容易被管理。

2.1 依赖mybatis-spring及驱动

pom.xml

 <!-- MyBatis整合步骤: 2.1. 引入依赖 -->
        
        <!-- 1. jdbc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.6.RELEASE</version>
        </dependency>
        <!-- 2. MyBatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.4</version>
        </dependency>

        <!-- 必要的整合包 MyBatis与Spring整合组件-->
        <!-- 3. MyBatis和Spring之间的整合包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.6</version>
        </dependency>
        <!-- 4. JDBC驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.22</version>
        </dependency>
        <!-- 5. alibaba Druid连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.14</version>
        </dependency>
2.2 配置数据源和连接池

applicationContext.xml

<!--2. 配置数据源-->
    <bean id="datasource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/reader?useSSL=false&amp;Unicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/shanghai&amp;allowPublicKeyRetrieval=true"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
        <property name="initialSize" value="5"/>
        <property name="maxActive" value="20"/>

    </bean>
2.3 配置使Ioc容器实例化SqlSessionFactory

applicationContext.xml

<!-- SqlSessionFactoryBean 用于根据配置信息创建SqlSessionFactory, 不再需要我们自己手动编码创建 -->
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="datasource"/>
    <property name="mapperLocations" value="classpath:mappers/*.xml"/>
    <!-- 2.5. MyBatis配置文件地址 -->
    <property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
2.4 配置Mapper扫描器

applicationContext.xml

<!-- 2.4. 配置mapper扫描器-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--    只需要指定包名,ioc容器初始化mybatis的时候,会对这个包下所有的mapper接口进行扫描,并根据对应的xml文件来生成接口对应的实现类-->
        <property name="basePackage" value="com.imooc.reader.mapper"/>
    </bean>
2.5 创建mybatis-config.xml

前期配置见2.3
mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!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>
2.6 整合其他组件

2.6.1. 配置logback日志输出
pom.xml添加依赖

<!--logback日志组件-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>

logback.xml

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!--    直接向控制台打印输出-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!--        向控制台指定输出格式-->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{HH:mm:ss} %-5level [%thread] %logger{30} - %msg%n </pattern>
            <charset>UTF-8</charset>
        </encoder>

    </appender>
    <root level="debug">
        <appender-ref ref="console"/>
    </root>

</configuration>

2.6.2 声明式事物配置
applicationContext.xml开头所有引入的url

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:task="http://www.springframework.org/schema/task"
       xmlns:tx="http://www.springframework.org/schema/tx"
       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
       http://www.springframework.org/schema/task
       http://www.springframework.org/schema/task/spring-context.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd">
<!--    tx代表事物-->

在applicationContext.xml下面添加bean

 <!-- 声明式事物配置   用于控制事物的打开提交或者回滚-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="datasource"/>
    </bean>
    <!--      annotation-driven  启用对应的注解模式-->
    <tx:annotation-driven transaction-manager="transactionManager"/>

在测试类上加注解@transaction

package com.imooc.reader.service;

import com.imooc.reader.mapper.TestMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;

@Service
public class TestService {
    @Resource
    private TestMapper testMapper;
//    事务,要么全部完成,要不不做
    @Transactional
    public void batchImport(){
        for(int i = 0; i < 5; i++){
//            if(i == 3){
//                throw new RuntimeException("预期外异常");
//            }
            testMapper.insert();
        }
    }
}

2.6.3 整合JUnit单元测试
pom.xml增加依赖包

<!-- 2.6.3 单元测试依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.2.6.RELEASE</version>
        </dependency>
        <!--spring-test依赖于junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值