SSM框架

SSM 框架是 Java Web 开发中广泛使用的经典组合,由 SpringSpring MVCMyBatis 三个开源框架整合而成,适用于构建中大型企业级应用。

1. SSM框架组成

框架作用核心特性
Spring管理业务层(Service)和持久层(DAO)的对象依赖关系(IoC)和事务(AOP)依赖注入(DI)、面向对象编程(AOP)、声明式事务管理、模块化设计
Spring MVC处理Web层的请求分发、视图渲染、遵循MVC设计模式基于注解的控制器(@Controller)、灵活的路由配置(@RequestMapping)等
MyBatis负责数据持久化,简化数据库操作(SQL映射)XML/注解配置SQL、动态SQL、结果集映射、与Spring无缝集成

2. SSM框架工作流程

  1. 用户请求 → 由DispatcherServlet(Spring MVC前端控制器)接收
  2. 请求分发 → 根据@RequestMapping找到对应的Controller
  3. 业务处理 → Controller调用Service层(Spring管理的业务逻辑)
  4. 数据操作 → Service层通过DAO/Mapper接口(MyBatis实现)访问数据库
  5. 返回结果 → Controller将处理结果封装为ModelAndView或JSON,渲染视图(JSP/HTML)返回客户端

3. 三层结构(表现层、业务层、持久层)

3.1 表现层(Web层)

  • 对应框架Spring MVC
  • 核心作用:处理用户请求和响应,控制页面跳转和数据交互。
  • 关键组件
    • Controller:接收 HTTP 请求,解析参数,调用业务层处理,返回视图或数据。
    • View(视图层):渲染页面(如 JSP、HTML等)。
    • DispatcherServlet:Spring MVC 的前端控制器,负责请求分发。

3.2 业务层(Service层)

  • 对应框架Spring
  • 核心作用:实现业务逻辑,处理事务管理,协调多个数据操作(如数据库和缓存)。
  • 关键组件
    • Service 接口与实现类:定义业务方法,调用持久层完成数据操作。
    • 事务管理:通过 @Transactional 注解实现声明式事务(如回滚、传播行为)。

3.3 持久层(DAO/Mapper层)

  • 对应框架MyBatis
  • 核心作用:直接操作数据库,执行 SQL 语句,完成数据的增删改查(CRUD)。
  • 关键组件
    • Mapper 接口与 XML 文件:定义数据库操作方法,通过 MyBatis 动态代理实现。
    • 实体类(POJO):映射数据库表结构(如 User 类对应 user 表)。

4. SSM整合

项目根目录:

ssm-project/
├── src/
│   ├── main/
│   │   ├── java/          # 核心Java源代码
│   │   ├── resources/     # 配置文件及资源
│   │   └── webapp/        # Web应用资源
│   └── test/              # 单元测试代码
├── pom.xml                # Maven项目配置

4.1 src/main/jave目录:

存放Java业务代码,按分层架构组织。

com.example.ssm
├── controller/    # Spring MVC控制器(处理HTTP请求)
├── service/       # 业务逻辑层接口
│   └── impl/     # 业务逻辑层实现类
├── dao/           # 数据访问层接口(MyBatis Mapper接口)
├── entity/        # 实体类(对应数据库表)
├── dto/           # 数据传输对象(Data Transfer Object)
├── util/          # 工具类(如日期处理、字符串处理)
└── config/        # Java配置类(替代XML配置,可选)
  • Controller:接收请求参数,调用Service层返回结果,转发视图。

  • Service:实现业务逻辑,处理事务管理(通过Spring声明式事务)。

  • Dao/Mapper:定义数据库操作接口,由MyBatis动态代理实现。

4.2 src/main/resources目录:

存放配置文件和非Java资源。

resources/
├── spring/             # Spring核心配置
│   ├── applicationContext.xml       # Spring主配置(数据源、事务等)
│   └── spring-mvc.xml  # Spring MVC配置(拦截器、视图解析器等)
├── mybatis/            # MyBatis配置
│   ├── mybatis-config.xml # MyBatis全局配置(可选)
│   └── mapper/         # MyBatis XML映射文件(SQL语句)
├── db.properties       # 数据库连接配置
└── log4j2.xml          # 日志配置文件
  • Spring配置:定义数据源DataSource、事务管理器TransactionManager、组件扫描等。

  • MyBatis配置:配置SqlSessionFactory,指定Mapper XML文件位置。

  • 属性文件:解耦数据库连接信息,便于环境切换。

4.3 src/main/webapp目录:

Web应用根目录,存放静态资源和WEB-INF配置。

webapp/
├── WEB-INF/
│   ├── web.xml         # 部署描述符(配置DispatcherServlet)
│   └── views/          # 视图文件(JSP/Thymeleaf等)
├── static/             # 静态资源(CSS/JS/图片)
└── index.jsp           # 默认首页
  • web.xml:配置Spring MVC的前端控制器DispatcherServlet,指定Spring配置文件位置。

  • 视图层:JSP或其他模板引擎文件,由视图解析器定位。

  • 静态资源:通过<mvc:resources/>配置直接访问。

4.4 src/test目录:

存放单元测试代码和测试资源。

  • JUnit测试:对Service、DAO层进行单元测试,使用@ContextConfiguration加载Spring配置。

  • 测试资源:可单独配置测试数据库(如H2内存数据库)。

4.5 POM.XML文件:

Maven项目核心配置,管理依赖和构建流程。

<dependencies>
    <!-- Spring Core -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.10</version>
    </dependency>
    
    <!-- Spring MVC -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.10</version>
    </dependency>
    
    <!-- MyBatis -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.7</version>
    </dependency>
    
    <!-- MyBatis-Spring整合包 -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>2.0.6</version>
    </dependency>
    
    <!-- 数据库驱动(如MySQL) -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.25</version>
    </dependency>
    
    <!-- 数据源(如C3P0) -->
    <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.0.2</version>
    </dependency>
    
    <!-- JSTL支持 -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
</dependencies>

4.6 关键整合点

  1. Spring与MyBatis整合:
    • 配置SqlSessionFactoryBean,注入数据源和Mapper XML路径。

    • 使用MapperScannerConfigurer自动扫描DAO接口生成代理类。

  2. Spring MVC配置:
    • 启用注解驱动<mvc:annotation-driven/>

    • 配置视图解析器InternalResourceViewResolver

  3. 事务管理:
    • applicationContext.xml中配置DataSourceTransactionManager,通过@Transactional注解管理事务。

5. 常见问题

❓ Service 层和 DAO 层都要写接口吗?
  • 最佳方法:Service 层建议写接口(方便后续扩展或 AOP 代理),DAO 层可省略接口(MyBatis Mapper 接口已由框架动态代理实现)。
❓ 实体类(如 User)属于哪一层?
  • Model 层:贯穿所有层,但不归属任何框架。DTO(数据传输对象)和 VO(视图对象)可根据场景补充。
❓ 如何避免跨层调用?
  • 禁止 Controller 直接调用 Mapper,必须通过 Service 层协调(确保事务和逻辑完整性)。

结束啦,去继续学习SpringBoot了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值