整合SSM框架:构建Java Web应用

目录

简介

项目结构

配置文件详解

db.properties

mybatis-config.xml

spring-mybatis.xml

springmvc.xml

web.xml

pom.xml

整合步骤

为什么这样整合?


简介

SSM框架整合指的是Spring、Spring MVC和MyBatis三个开源框架的整合。这种整合方式在Java Web开发中非常流行,因为它提供了强大的数据访问层、灵活的业务逻辑层和简洁的表示层。

项目结构

在开始之前,让我们先了解一下项目的结构:

src
│
├── main
│   ├── java
│   │   └── org.example
│   │       ├── controller
│   │       ├── mapper
│   │       ├── pojo
│   │       └── service
│   ├── resources
│   │   ├── mapper
│   │   ├── db.properties
│   │   ├── mybatis-config.xml
│   │   ├── spring-mybatis.xml
│   │   └── springmvc.xml
│   └── webapp
│       ├── WEB-INF
│       │   ├── web.xml
│       └── index.jsp
└── test

配置文件详解

db.properties

db.properties 文件用于配置数据库连接信息:

properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/smbms_db?serverTimezone=UTC
jdbc.username=root
jdbc.password=123456

mybatis-config.xml

mybatis-config.xml 文件用于配置MyBatis的全局设置:

xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <setting name="useGeneratedKeys" value="true"/>
        <setting name="autoMappingBehavior" value="FULL"/>
    </settings>
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <property name="helperDialect" value="mysql"/>
        </plugin>

    </plugins>
</configuration>

spring-mybatis.xml

spring-mybatis.xml 文件用于配置Spring和MyBatis的整合:

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"
       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
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        ">
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:db.properties"/>
    </bean>
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>
        <property name="typeAliasesPackage" value="org.example.pojo"/>
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
    </bean>
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="org.example.mapper"/>
    </bean>



</beans>

springmvc.xml

springmvc.xml 文件用于配置Spring MVC:

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"
       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
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        ">
    <mvc:annotation-driven/>
    <context:component-scan base-package="org.example"/>
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    <mvc:default-servlet-handler/>

</beans>

web.xml

web.xml 文件用于配置Servlet和Spring的DispatcherServlet:

xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee">


  <display-name>Archetype Created Web Application</display-name>

  <servlet>
    <servlet-name>ssm</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml, classpath:spring-mybatis.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>

    <multipart-config>
      <max-file-size>10485760</max-file-size>
      <max-request-size>10485760</max-request-size>
      <file-size-threshold>0</file-size-threshold>
    </multipart-config>
  </servlet>
  <servlet-mapping>
    <servlet-name>ssm</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>

pom.xml

pom.xml中添加所需的依赖,包括Spring、MyBatis、数据库驱动等

<?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>org.example</groupId>
    <artifactId>SSM</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <!-- junit -->
    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.16</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.30</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>6.1.12</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>3.0.3</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>6.1.12</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.34</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.17.2</version>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>6.1.0</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.23</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
            <version>3.3.0</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>


</project>

整合步骤

  1. 配置数据库连接 :在db.properties中设置数据库驱动、URL、用户名和密码。

  2. 配置MyBatis :在mybatis-config.xml中设置日志实现、下划线到驼峰命名转换、使用生成的键和自动映射行为。

  3. 配置Spring和MyBatis整合 :在spring-mybatis.xml中配置数据源、SqlSessionFactory、Mapper扫描和属性占位符配置器。

  4. 配置Spring MVC :在springmvc.xml中启用注解驱动、组件扫描和视图解析器。

  5. 配置Servlet :在web.xml中配置DispatcherServlet,它将作为前端控制器处理所有的HTTP请求。

  6. 配置Maven依赖 :在pom.xml中添加所需的依赖,包括Spring、MyBatis、数据库驱动等。

为什么这样整合?

这种整合方式提供了以下优势:

  • 解耦:通过Spring的依赖注入,我们可以将不同的层解耦,使得代码更加模块化。
  • 可维护性:清晰的分层和依赖注入使得代码更易于维护和测试。
  • 灵活性:Spring MVC提供了灵活的请求处理机制,MyBatis提供了强大的SQL映射功能。
  • 性能:使用连接池(如Druid)可以提高数据库连接的性能。

通过这样的整合,我们可以构建一个结构清晰、易于维护且性能良好的Java Web应用。

相关推荐
爱上语文30 分钟前
登录认证(5):过滤器:Filter
java·后端·spring
csucoderlee30 分钟前
Go语言中的函数闭包
开发语言·后端·golang
geovindu1 小时前
D3.js Org Chart
开发语言·javascript·ecmascript
疋瓞1 小时前
excel实用问题:提取文字当中的数字进行运算
java·javascript·excel
苏-言1 小时前
RabbitMQ深度探索:简单实现 MQ
java·rabbitmq·java-rabbitmq
张焚雪1 小时前
关于图像锐化的一份介绍
开发语言·python·opencv·计算机视觉
CodeClimb1 小时前
【华为OD-E卷 - 任务最优调度 100分(python、java、c++、js、c)】
java·javascript·c++·python·华为od
锐策2 小时前
『 C++ 』中理解回调类型在 C++ 中的使用方式。
开发语言·c++
苹果酱05672 小时前
人工智能基础知识速成 - 机器学习、深度学习算法原理及其实际应用案例
java·vue.js·spring boot·mysql·课程设计