SSM框架集成与使用

一、SSM 框架简介

SSM 框架是由 Spring、Spring MVC 和 MyBatis 三个开源框架整合而成的 Java EE 企业级应用开发框架,常用于构建 Web 应用程序。每个框架在整体架构中都承担着重要的角色:

  • Spring 框架:是一个轻量级的控制反转(Inversion of Control,简称 IoC)和面向切面编程(Aspect Oriented Programming,简称 AOP)的容器框架。它通过 IoC 容器来管理对象的创建、依赖注入等,使得代码的耦合度降低,便于维护和扩展。同时,AOP 可以在不修改原有代码的基础上对横切关注点(如日志记录、事务管理等)进行统一处理。

  • Spring MVC 框架:是 Spring 框架的一个衍生,专门用于构建 Web 应用的 MVC(Model-View-Controller)架构。它能够清晰地分离业务逻辑、视图展示和用户请求处理,提高代码的可读性和可维护性。其中,Model 用于封装业务数据,View 负责展示数据给用户,Controller 则处理用户的请求并调用相应的业务逻辑来更新 Model 和选择合适的 View。

  • MyBatis 框架:是一个优秀的持久层框架,它简化了数据库访问层的代码编写。MyBatis 采用 XML 配置文件或者注解的方式来映射 Java 对象和数据库表之间的关系,能够方便地执行 SQL 语句,实现对数据库的增删改查操作,并且支持动态 SQL,可以根据不同的业务需求灵活生成 SQL 语句。

二、SSM 框架的集成步骤

以下是一般情况下 SSM 框架的集成步骤:

1. 创建项目并导入相关依赖

  • 首先创建一个 Maven 项目(以 Maven 为例,也可以使用 Gradle 等其他构建工具)。
  • 在项目的 pom.xml 文件中添加 Spring、Spring MVC 和 MyBatis 以及它们相关的依赖。例如:

xml

<!-- Spring核心依赖 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>具体版本号</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>具体版本号</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>具体版本号</version>
</dependency>

<!-- Spring MVC依赖 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>具体版本号</version>
</dependency>

<!-- MyBatis依赖 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>具体版本号</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>具体版本号</version>
</dependency>

<!-- 数据库连接相关依赖,以MySQL为例 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>具体版本号</version>
</dependency>

<!-- 其他可能需要的依赖,如日志记录等 -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>具体版本号</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>具体版本号</version>
</dependency>

注意要根据实际情况选择合适的版本号,不同版本可能会有兼容性问题。

2. 配置 Spring 框架

  • 创建 Spring 的配置文件(通常为 application.xml 或 applicationContext.xml 等),在其中配置 Spring 的核心组件,如 IoC 容器、数据源等。

  • 例如,配置数据源(以使用 DruckerDataSource 为例,也可以使用其他数据源):

xml

复制

<?xml version="1.2" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/beans/xmlns:xsi="http://www.w3.org/2014/xsi:xsi:fn:validate">
    <bean id="dataSource" class="com.alibaba.drucker.DruckerDataSource">
        <property name="url" value="jdbc:mysql://localhost:3306/your_database_name?useSSL=false&charset=utf8">
        <property name="username" value="your_username">
        <property name="password" value="your_password">
    </bean>
</beans>

这里需要将 your_database_nameyour_username 和 your_password 替换为实际的数据库名称、用户名和密码。

  • 还可以在配置文件中配置其他 Spring 组件,如事务管理、AOP 等,根据项目需求而定。

3. 配置 Spring MVC 框架

  • 创建 Spring MVC 的配置文件(通常为 spring-mvc.xml)。

  • 在其中配置 Spring MVC 的核心组件,如视图解析器、扫描控制器的包路径等。

  • 例如,配置视图解析器(以使用 InternalResourceViewResolver 为例)

xml

复制

<?xml version="1.2" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/beans/xmlns:xsi="http://www.w3.org/2014/xsi:xsi:fn:validate">
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/">
        <property name="suffix" value=".jsp">
    </bean>
</beans>

这里设置了视图的前缀和后缀,以便根据控制器返回的视图名称正确拼接出实际的视图文件路径。

  • 同时,在配置文件中要设置扫描控制器的包路径,例如:

xml

复制

<context:component-scan base-package="com.yourcompany.controller">

这里的 com.yourcompany.controller 要替换为实际存放控制器的包路径。

4. 配置 MyBatis 框架

  • 创建 MyBatis 的配置文件(通常为 mybatis-config.xml)。

  • 在其中配置 MyBatis 的核心组件,如数据源、映射器接口的扫描等。

  • 例如,配置数据源(这里可以复用 Spring 配置的数据源):

xml

复制

<?xml version="1.2" encoding="UTF-8"?>
<configuration>
    <environments>
        <environment id="development">
            <transactionManager type="JDBC">
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cdriver:mysql-connector-java">
                <property name="url" value="jdbc:mysql://localhost:3306/your_database_name?useSSL=false&charset=utf8">
                <property name="username" value="your_username">
                <property name="password" value="your_password">
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com.yourcompany.mapper.UserMapper.xml">
    </mappers>
</configuration>

这里同样要将 your_database_nameyour_username 和 your_password 替换为实际的情况。并且 com.yourcompany.mapper.UserMapper.xml 要替换为实际的映射器接口对应的 XML 文件路径。

  • 另外,在 Java 项目中,还需要在 Spring 的配置文件中配置 MyBatis 与 Spring 的整合,例如:

xml

复制

<?xml version="1.2" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/beans/xmlns:xsi="http://www.w3.org/2014/xsi:xsi:fn:validate">
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" value="dataSource">
        <property name="configLocation" value="classpath:mybatis-config.xml">
    </bean>
    <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg ref="sqlSessionFactory">
    </bean>
</beans>

5. 编写代码实现业务逻辑

  • 在对应的包下编写实体类(与数据库表对应)、映射器接口(用于定义数据库操作方法)、控制器类(用于处理用户请求)等。

  • 例如,编写一个简单的实体类:

java

复制

package com.yourcompany.entity;

import java.io.Serializable;

public class User implements Serializable {
    private String name;
    private int age;
    // 省略getter和setter方法
}

  • 编写映射器接口:

java

复制

package com.yourcompany.mapper;

import com.yourcompany.entity.User;
import org.mybatis.spring.annotation.Mapper;

@Mapper
public interface UserMapper {
    public User findUserById(int id);
    // 省略其他数据库操作方法
}

  • 编写控制器类:

java

复制

package com.yourcompany.controller;

import com.yourcompany.entity.User;
import com.yourcompany.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Autowired
private UserMapper userMapper;

public class UserController {
    public ModelAndView getUserById(int id) {
        User user = userMapper.findUserById(id);
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("user.jsp");
        modelAndView.addObject("user", user);
        return modelAndView;
    }
}

这里只是一个简单的示例,实际项目中会根据具体业务需求编写更为复杂的代码。

三、SSM 框架的使用

1. 启动应用程序

  • 当完成上述集成和代码编写后,可以通过在项目的主类(通常是包含 main 方法的类)中启动应用程序。

  • 例如,在一个基于 Spring Boot 的 SSM 应用(如果采用了 Spring Boot 来简化启动过程),可以在主类中这样启动:

java

复制

package com.yourcompany;

import org.springframework.boot.SpringBootApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class YourApplicationMainClass {
    public static void main(String[] args) {
        SpringBootApplication.run(YourApplicationMainClass, args);
    }
}

如果不是基于 Spring Boot,可能需要通过其他方式启动,比如配置 Tomcat 服务器等,具体取决于项目的构建方式。

2. 处理用户请求

  • 当应用程序启动后,用户可以通过浏览器或其他客户端发送请求。

  • 以刚才编写的 UserController 为例,当用户发送一个请求来获取某个用户的信息(假设请求路径为 /user/getUserById?id=1),UserController 会接收到这个请求,然后通过调用 UserMapper 的 findUserById 方法从数据库中获取用户信息,再将获取到的信息添加到 ModelAndView 中,并返回一个视图名称(这里是 user.jsp),以便 Spring MVC 根据视图解析器的配置找到实际的视图文件并展示给用户。

3. 数据库操作

  • MyBatis 框架负责执行数据库的操作。

  • 例如,在 UserMapper 接口中定义的 findUserById 方法,其对应的 XML 映射文件(假设为 com.yourcompany.mapper.UserMapper.xml)中可能会有如下的 SQL 语句映射:

xml

复制

<?xml version="1.2" encoding="UTF-8"?>
<mapper namespace="com.yourcompany.mapper.UserMapper">
    <select id="findUserById" resultType="com.yourcompany.entity.User">
        SELECT * FROM users WHERE id = #{id}
    </select>
</mapper>

当 UserMapper 调用 findUserById 方法时,MyBatis 会根据这个映射文件中的 SQL 语句从数据库中查询出符合条件的用户信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值