SSM框架是Java Web开发中常用的组合,尽管目前大部分企业基本已经不使用SSM,但SSM仍然是学习前后端分离以及微服务框架的基础,SSM由Spring、SpringMVC和MyBatis三个开源项目整合而成。小编将详细介绍SSM框架的组成部分、作用、特点以及如何在项目中应用和配置SSM框架。
一、SSM框架的组成部分
- Spring
- 核心功能:Spring是一个轻量级的应用框架,提供了丰富的特性和功能,包括IoC容器、AOP支持、事务管理等模块。
- IoC(控制反转):Spring的核心思想是IoC,即不再需要程序员去显式地
new
一个对象,而是让Spring框架帮你来完成这一切。通过IoC容器,开发者可以将对象的创建、组装和管理交给Spring来处理,大大简化了代码的编写和维护。 - AOP(面向切面编程):Spring提供了AOP的支持,可以在不修改原有代码的情况下,通过切面来添加和管理横切关注点,如日志记录、事务管理等。
- SpringMVC
- 基于MVC设计模式:SpringMVC是基于MVC(Model-View-Controller)设计模式的Web框架。它通过DispatcherServlet统一接收用户请求,并将请求分发给相应的处理器进行处理,最后将处理结果返回给用户。
- 核心组件:DispatcherServlet是SpringMVC的核心组件,它拦截所有请求并负责处理请求的分发工作。处理器映射器(Handler Mapping)将请求与对应的处理器(Controller)建立映射关系,并通过处理器适配器(HandlerAdapter)调用相应的处理器进行处理。
- MyBatis
- 持久层框架:MyBatis是一款轻量级的持久层框架,它通过SQL映射文件或注解来实现对象关系映射(ORM)。
- SQL映射:MyBatis提供了强大的SQL执行能力和灵活的事务管理机制,使得开发者可以更加高效地进行数据库操作。通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的SQL语句映射。
二、SSM框架的特点
- 高效:SSM框架整合了Spring、SpringMVC和MyBatis三个技术框架的优势,实现了高效、灵活的Web应用程序开发。
- 灵活:Spring的IoC和AOP功能,以及SpringMVC的灵活请求映射和视图渲染功能,使得SSM框架具有很高的灵活性。
- 可扩展:SSM框架的各个组件之间相互配合,提供了一套完整的解决方案,用于开发企业级的Java Web应用程序,具有良好的可扩展性。
三、SSM框架的配置与应用
- 项目搭建
- 使用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>
- 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>
- 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>
- 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框架的整合示例
- 新建基于Maven的Web工程
- 填写GroupId和ArtifactId。
- 配置Maven,设置国内镜像以加速下载。
- 添加Maven依赖
- 在pom.xml文件中添加SSM框架所需的JAR包依赖。
- 配置Spring
- 在resources目录下新建Spring配置文件(如spring-mybatis.xml),配置数据库连接池、SqlSessionFactory对象等。
- 配置SpringMVC
- 在web.xml文件中配置DispatcherServlet。
- 在SpringMVC配置文件中配置处理器映射器、处理器适配器、视图解析器等。
- 配置MyBatis
- 在resources目录下新建MyBatis配置文件(如mybatis-config.xml),配置全局设置。
- 在Mapper文件中配置SQL语句映射。
- 编写实体类、Controller和Mapper接口
- 在src/main/java目录下新建entity包,编写实体类。
- 在Controller包中编写Controller类,处理用户请求。
- 在Mapper包中编写Mapper接口,定义数据库操作方法。
- 运行项目
- 将项目部署到自己的服务器或Tomcat上。(部署到远程服务器可在公网中进行访问,如果没有服务器可以点击这里)
- 通过浏览器访问项目,验证SSM框架的整合效果。
五、总结
SSM框架是Java Web开发中常用的组合,通过整合Spring、SpringMVC和MyBatis三个技术框架的优势,实现了高效、灵活、可扩展的Web应用程序开发。本文详细介绍了SSM框架的组成部分、作用、特点以及如何在项目中应用和配置SSM框架,希望对读者有所帮助。