基于 xml 配置文件的入门级 SSM 框架整合

Posted Spring-_-Bear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于 xml 配置文件的入门级 SSM 框架整合相关的知识,希望对你有一定的参考价值。

文章目录

1、创建 Maven 工程

  1. 使用 IntelliJ IDEA 新建一个 Maven 工程,项目类型选择 Maven,然后点 Next

  2. 填入 Maven 工程的必要信息

2、改造 Maven 工程

  1. 将新建的 Maven 工程改造成 Web 工程:在 IDEA 点击 File -> Project Structure(或快捷键:Ctrl + Shift + Alt + S)进入设置界面

  2. Facts 下为当前工程添加 Web 模块

  3. 选择自己的刚刚创建的 Maven 工程,点击 OK

  4. 为 Web 工程添加核心配置文件 web.xml,并修改 web.xml 文件路径为 src\\main\\webapp\\WEB-INF\\web.xml(没有则点击 + 号新建 web.xml 文件)


  5. 指定 Web 工程的上下文路径为 src\\main\\webapp,而后点击 OK 即可


3、pom.xml 引入依赖

为方便后续操作,在 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>edu.whut.springbear</groupId>
    <artifactId>uims</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <!-- Spring 版本号统一管理 -->
        <spring.version>5.3.1</spring.version>
        <!-- Maven 打包编码指定为 UTF-8,避免工程部署到远程服务器后乱码 -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <!-- Maven 打包时跳过测试 -->
        <maven.test.skip>true</maven.test.skip>
    </properties>

    <dependencies>
        <!-- Spring5 整合 Thymeleaf -->
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf-spring5</artifactId>
            <version>3.0.12.RELEASE</version>
        </dependency>
        <!-- SpringMVC -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>$spring.version</version>
        </dependency>
        <!-- Spring 整合 MyBatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.2</version>
        </dependency>
        <!-- Mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.7</version>
        </dependency>
        <!-- Servlet API -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

        <!-- Spring JDBC -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>$spring.version</version>
        </dependency>
        <!-- mysql 驱动文件 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.27</version>
        </dependency>
        <!-- 阿里巴巴德鲁伊数据库连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.15</version>
        </dependency>

        <!-- Spring Test -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>$spring.version</version>
            <scope>test</scope>
        </dependency>
        <!-- JUnit 单元测试 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <!-- Jackson -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.8</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.8</version>
        </dependency>

        <!-- Lombok 简化 POJO 类开发 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
            <scope>provided</scope>
        </dependency>

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

        <!-- 文件上传 -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
    </dependencies>
</project>

4、web.xml 相关配置

  1. src\\main\\webapp\\WEB-INF\\web.xml 中配置 Spring IOC 容器、编码过滤器、HTTP 请求方法过滤器、SpringMVC 的前端控制器

    注:编码过滤器应配置为第一个过滤器,否则依旧会中文乱码(因为过滤器的安装配置的顺序依次拦截执行)

    <!-- 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_4_0.xsd"
             version="4.0">
        <!-- Spring IOC 容器 -->
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext.xml</param-value>
        </context-param>
    
        <!-- 编码过滤器解决中文乱码 -->
        <filter>
            <filter-name>CharacterEncodingFilter</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>
            <init-param>
                <param-name>forceRequestEncoding</param-name>
                <param-value>true</param-value>
            </init-param>
            <init-param>
                <param-name>forceResponseEncoding</param-name>
                <param-value>true</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>CharacterEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    
        <!-- Http 请求方法过滤器以支持 RESTful 风格编程 -->
        <filter>
            <filter-name>HiddenHttpMethodFilter</filter-name>
            <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>HiddenHttpMethodFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    
        <!-- SpringMVC 前端控制器 -->
        <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:springMVC-config.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>
    
  2. src\\main\\resources\\ 目录下新建 Spring 和 SpringMVC 的核心配置文件 applicationContext.xmlspringMVC-config.xml

    1. Spring 核心配置文件 applicationContext.xml
    <!-- applicationContext.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"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    </beans>
    
    1. SpringMVC 核心配置文件 springMVC-config.xml
    <!-- springMVC-config.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"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    </beans>
    
    1. 项目结构如下

5、Spring 核心配置

src\\main\\resources\\applicationContext.xml 进行 Spring 的相关配置

注:IDEA 中 context 爆红使用 Alt + Enter 引入 context 名称空间即可,其余爆红在后续的配置过程自动消失

<!-- applicationContext.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 https://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 组件扫描 -->
    <context:component-scan base-package="edu.whut.springbear.uims.pojo,edu.whut.springbear.uims.dao,
                                          edu.whut.springbear.uims.service,edu.whut.springbear.uims.util"/>
    <!-- 引入数据库连接配置文件 -->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!-- 数据源 -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="$jdbc.driverClass"/>
        <property name="url" value="$jdbc.url"/>
        <property name="username" value="$jdbc.username"/>
        <property name="password" value="$jdbc.password"/>
    </bean>
    <!-- MyBatis SQL 会话工厂实例  -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <!-- MyBatis 核心配置文件路径 -->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <!-- MyBatis Mapper.xml 文件路径 -->
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>
    </bean>
    <!-- MyBatis Mapper.xml 对应接口的包路径 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <!-- Mapper.xml 对应接口所在包路径 -->
        <property name="basePackage" value="edu.whut.springbear.uims.dao"/>
    </bean>
</beans>
  1. src\\main\\java 下新建组件扫描时所扫描到的相关常用包

  1. src\\main\\resources\\ 目录下新建数据库连接配置文件 jdbc.properties,并配置相关 MySQL 连接信息
# jdbc.properties
jdbc.driverClass=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/uims?characterEncoding=utf-8&serverTimezone=Asia/Shanghai
jdbc.username=admin
jdbc.password=admin
  1. src\\main\\resources\\ 目录下新建 MyBatis 的核心配置文件 mybatis-config.xml
<!-- 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>
</configuration>
  1. src\\main\\resources\\ 目录下新建 MyBatis 数据库操作 *Mapper.xml 文件所在目录 mapper

  1. applicationContext.xml中指定 MyBatis Mapper.xml 对应接口的所在包路径

6、SpringMVC 核心配置

src\\main\\resources\\springMVC-config.xml 进行 SpringMVC 的相关配置

注:此配置文件中 IDEA 爆红问题可以不予理会,运行正常

<!-- springMVC-config.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以上是关于基于 xml 配置文件的入门级 SSM 框架整合的主要内容,如果未能解决你的问题,请参考以下文章

SSM 框架 搭建整合(IDEA)保姆级

SSM框架的整合

ssm框架整合入门系列——修改-员工的修改

SSM框架整合(新手必备)

SSM三大框架整合配置详解

SSM三大框架整合