SSM框架详解

SSM框架是Java Web开发中常用的组合,尽管目前大部分企业基本已经不使用SSM,但SSM仍然是学习前后端分离以及微服务框架的基础,SSM由Spring、SpringMVC和MyBatis三个开源项目整合而成。小编将详细介绍SSM框架的组成部分、作用、特点以及如何在项目中应用和配置SSM框架。

一、SSM框架的组成部分
  1. Spring
    • 核心功能:Spring是一个轻量级的应用框架,提供了丰富的特性和功能,包括IoC容器、AOP支持、事务管理等模块。
    • IoC(控制反转):Spring的核心思想是IoC,即不再需要程序员去显式地new一个对象,而是让Spring框架帮你来完成这一切。通过IoC容器,开发者可以将对象的创建、组装和管理交给Spring来处理,大大简化了代码的编写和维护。
    • AOP(面向切面编程):Spring提供了AOP的支持,可以在不修改原有代码的情况下,通过切面来添加和管理横切关注点,如日志记录、事务管理等。
  2. SpringMVC
    • 基于MVC设计模式:SpringMVC是基于MVC(Model-View-Controller)设计模式的Web框架。它通过DispatcherServlet统一接收用户请求,并将请求分发给相应的处理器进行处理,最后将处理结果返回给用户。
    • 核心组件:DispatcherServlet是SpringMVC的核心组件,它拦截所有请求并负责处理请求的分发工作。处理器映射器(Handler Mapping)将请求与对应的处理器(Controller)建立映射关系,并通过处理器适配器(HandlerAdapter)调用相应的处理器进行处理。
  3. MyBatis
    • 持久层框架:MyBatis是一款轻量级的持久层框架,它通过SQL映射文件或注解来实现对象关系映射(ORM)。
    • SQL映射:MyBatis提供了强大的SQL执行能力和灵活的事务管理机制,使得开发者可以更加高效地进行数据库操作。通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的SQL语句映射。
二、SSM框架的特点
  1. 高效:SSM框架整合了Spring、SpringMVC和MyBatis三个技术框架的优势,实现了高效、灵活的Web应用程序开发。
  2. 灵活:Spring的IoC和AOP功能,以及SpringMVC的灵活请求映射和视图渲染功能,使得SSM框架具有很高的灵活性。
  3. 可扩展:SSM框架的各个组件之间相互配合,提供了一套完整的解决方案,用于开发企业级的Java Web应用程序,具有良好的可扩展性。
三、SSM框架的配置与应用
  1. 项目搭建
    • 使用Maven进行项目骨架的填充,添加SSM的各种JAR包。
    • 配置数据库的连接信息、日志的信息、Spring和MyBatis的整合等。
    • 配置web.xml文件,包括web服务的启动、各种过滤器、servlet的配置等。
      <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
               xmlns="http://maven.apache.org/POM/4.0.0"  
               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>com.example</groupId>  
          <artifactId>ssm-demo</artifactId>  
          <version>1.0-SNAPSHOT</version>  
          <packaging>war</packaging>  
        
          <properties>  
              <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
              <maven.compiler.source>1.8</maven.compiler.source>  
              <maven.compiler.target>1.8</maven.compiler.target>  
          </properties>  
        
          <dependencies>  
              <!-- Spring dependencies -->  
              <dependency>  
                  <groupId>org.springframework</groupId>  
                  <artifactId>spring-context</artifactId>  
                  <version>5.3.8</version>  
              </dependency>  
              <dependency>  
                  <groupId>org.springframework</groupId>  
                  <artifactId>spring-webmvc</artifactId>  
                  <version>5.3.8</version>  
              </dependency>  
              <dependency>  
                  <groupId>org.springframework</groupId>  
                  <artifactId>spring-jdbc</artifactId>  
                  <version>5.3.8</version>  
              </dependency>  
        
              <!-- MyBatis dependencies -->  
              <dependency>  
                  <groupId>org.mybatis</groupId>  
                  <artifactId>mybatis</artifactId>  
                  <version>3.5.7</version>  
              </dependency>  
              <dependency>  
                  <groupId>org.mybatis.spring</groupId>  
                  <artifactId>mybatis-spring</artifactId>  
                  <version>2.0.6</version>  
              </dependency>  
        
              <!-- MySQL driver -->  
              <dependency>  
                  <groupId>mysql</groupId>  
                  <artifactId>mysql-connector-java</artifactId>  
                  <version>8.0.25</version>  
              </dependency>  
        
              <!-- Log4j for logging -->  
              <dependency>  
                  <groupId>log4j</groupId>  
                  <artifactId>log4j</artifactId>  
                  <version>1.2.17</version>  
              </dependency>  
        
              <!-- Other dependencies -->  
              <!-- Add other dependencies as needed -->  
          </dependencies>  
        
          <build>  
              <plugins>  
                  <!-- Maven plugins -->  
                  <!-- Add plugins for building and packaging the project -->  
              </plugins>  
          </build>  
      </project>

  2. Spring配置
    • 配置IoC容器,管理应用程序中的对象。
    • 配置AOP切面,添加和管理横切关注点。
    • 配置事务管理,简化事务控制的开发工作。
      <?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: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/tx  
             http://www.springframework.org/schema/tx/spring-tx.xsd">  
        
          <!-- DataSource configuration -->  
          <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">  
              <property name="url" value="jdbc:mysql://localhost:3306/mydatabase" />  
              <property name="username" value="root" />  
              <property name="password" value="yourpassword" />  
              <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />  
          </bean>  
        
          <!-- SqlSessionFactory configuration -->  
          <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
              <property name="dataSource" ref="dataSource" />  
              <property name="mapperLocations" value="classpath:mapper/*.xml" />  
          </bean>  
        
          <!-- Transaction Manager configuration -->  
          <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
              <property name="dataSource" ref="dataSource" />  
          </bean>  
        
          <!-- Enable annotation-driven transaction management -->  
          <tx:annotation-driven transaction-manager="transactionManager" />  
        
          <!-- Scan for components -->  
          <context:component-scan base-package="com.example" />  
        
      </beans>

  3. SpringMVC配置
    • 配置DispatcherServlet,拦截用户请求。
    • 配置处理器映射器和处理器适配器,建立请求与处理器的映射关系。
    • 配置视图解析器,解析和渲染视图。
      <?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">  
        
          <!-- Enable annotation-driven MVC -->  
          <mvc:annotation-driven />  
        
          <!-- Configure view resolver -->  
          <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
              <property name="prefix" value="/WEB-INF/views/" />  
              <property name="suffix" value=".jsp" />  
          </bean>  
        
          <!-- Scan for controllers -->  
          <context:component-scan base-package="com.example.controller" />  
        
          <!-- Configure resource handling -->  
          <mvc:resources mapping="/resources/**" location="/resources/" />  
        
      </beans>

  4. MyBatis配置
    • 配置数据库连接池,管理数据库连接。
    • 配置SqlSessionFactory对象,获取sqlSession。
    • 配置Mapper文件,实现对象关系映射。
      <!-- 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>  
        
          <!-- 引入外部配置文件 -->  
          <properties resource="jdbc.properties"/>  
        
          <!-- 设置全局配置 -->  
          <settings>  
              <!-- 将表中字段的下划线自动转换为驼峰命名法 -->  
              <setting name="mapUnderscoreToCamelCase" value="true"/>  
              <!-- 开启延迟加载 -->  
              <setting name="lazyLoadingEnabled" value="true"/>  
          </settings>  
        
          <!-- 设置类型别名 -->  
          <typeAliases>  
              <!-- 为单个类型设置别名 -->  
              <typeAlias type="com.example.pojo.User" alias="user"/>  
              <!-- 为包下的所有类型设置默认的别名(类名且不区分大小写) -->  
              <package name="com.example.pojo"/>  
          </typeAliases>  
        
          <!-- 配置多个数据库连接环境 -->  
          <environments default="development">  
              <environment id="development">  
                  <!-- 配置事务管理器 -->  
                  <transactionManager type="JDBC"/>  
                  <!-- 配置数据源 -->  
                  <dataSource type="POOLED">  
                      <property name="driver" value="${jdbc.driver}"/>  
                      <property name="url" value="${jdbc.url}"/>  
                      <property name="username" value="${jdbc.username}"/>  
                      <property name="password" value="${jdbc.password}"/>  
                  </dataSource>  
              </environment>  
              <!-- 可以根据需要添加其他环境,如test环境 -->  
              <environment id="test">  
                  <transactionManager type="JDBC"/>  
                  <dataSource type="POOLED">  
                      <property name="driver" value="com.mysql.cj.jdbc.Driver"/>  
                      <property name="url" value="jdbc:mysql://localhost:3306/test?serverTimezone=UTC"/>  
                      <property name="username" value="root"/>  
                      <property name="password" value="123456"/>  
                  </dataSource>  
              </environment>  
          </environments>  
        
          <!-- 配置映射文件 -->  
          <mappers>  
              <!-- 根据需求引入映射文件 -->  
              <mapper resource="mappers/UserMapper.xml"/>  
              <!-- 或者通过包扫描引入映射文件 -->  
              <package name="com.example.mapper"/>  
          </mappers>  
        
      </configuration>

      由于mapper.xml文件对应具体的数据库操作业务,这里不在提供具体的mapper配置文件,在后期的文章中会提出。

四、SSM框架的整合示例
  1. 新建基于Maven的Web工程
    • 填写GroupId和ArtifactId。
    • 配置Maven,设置国内镜像以加速下载。
  2. 添加Maven依赖
    • 在pom.xml文件中添加SSM框架所需的JAR包依赖。
  3. 配置Spring
    • 在resources目录下新建Spring配置文件(如spring-mybatis.xml),配置数据库连接池、SqlSessionFactory对象等。
  4. 配置SpringMVC
    • 在web.xml文件中配置DispatcherServlet。
    • 在SpringMVC配置文件中配置处理器映射器、处理器适配器、视图解析器等。
  5. 配置MyBatis
    • 在resources目录下新建MyBatis配置文件(如mybatis-config.xml),配置全局设置。
    • 在Mapper文件中配置SQL语句映射。
  6. 编写实体类、Controller和Mapper接口
    • 在src/main/java目录下新建entity包,编写实体类。
    • 在Controller包中编写Controller类,处理用户请求。
    • 在Mapper包中编写Mapper接口,定义数据库操作方法。
  7. 运行项目
    • 将项目部署到自己的服务器或Tomcat上。(部署到远程服务器可在公网中进行访问,如果没有服务器可以点击这里)
    • 通过浏览器访问项目,验证SSM框架的整合效果。
五、总结

SSM框架是Java Web开发中常用的组合,通过整合Spring、SpringMVC和MyBatis三个技术框架的优势,实现了高效、灵活、可扩展的Web应用程序开发。本文详细介绍了SSM框架的组成部分、作用、特点以及如何在项目中应用和配置SSM框架,希望对读者有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值