【Spring】SSM框架整合Spring和SpringMVC

news2024/12/28 19:45:38

目录

1.项目结构

2.项目的pom.xml文件

3.spring.xml和springMVC配置文件

4.database.properties和mybatis.xml配置文件

5. 代码编写

6.测试整合结果


1.项目结构

首先创建一个名为ssm_pro的Mavew项目,然后再在主目录和资源目录下,创建如下所示的结构。任务是:通过ssm框架查询出所有的图书信息。

2.项目的pom.xml文件

其次导入本次项目需要的依赖在pom.xml中,其中大概有几个方面的依赖,分别是:

  1. mybatis的相关依赖
  2. spring框架有关的依赖
  3. spring和mybatis整合的依赖
  4. springMVC的依赖
  5. 数据库的依赖
  6. 还有一些工具类的依赖,比如lombok,junit等
<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.its</groupId>
  <artifactId>ssm_pro</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>ssm_pro Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <!--01 mybatis相关依赖  -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.16</version>
    </dependency>
    <!--02 spring相关依赖  -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>5.3.26</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>5.3.26</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.3.26</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>5.3.26</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>5.3.26</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>5.3.26</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.3.26</version>
    </dependency>
    <!-- 03 spring和mybatis整合包  -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>2.0.6</version>
    </dependency>
    <!--04 springMvc依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.3.26</version>
    </dependency>
    <!--05  数据库相关  -->
    <dependency>
      <groupId>com.mysql</groupId>
      <artifactId>mysql-connector-j</artifactId>
      <version>8.0.33</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-dbcp2</artifactId>
      <version>2.1.1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-pool2</artifactId>
      <version>2.4.2</version>
    </dependency>
    <!--06 工具类  -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.24</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>RELEASE</version>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
  </dependencies>

  <build>
    <finalName>ssm_pro</finalName>
  </build>
</project>

3.spring.xml和springMVC配置文件

mybatis和spring的整合,主要是将mybatis的配置信息整合到spring的配置信息中,下面是spring的配置信息,spring.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:aop="http://www.springframework.org/schema/aop"
       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/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd">
    <!--01 开启注解扫描,用于扫描com.its下的所有类,用于IOC的管理-->
    <context:component-scan base-package="com.its"/>
    <!--02 数据源,这里是用于连接数据库,是原来mybatis配置文件的内容,在这里配置-->
    <!--context标签用于引入外部的database.xml文件。-->
    <context:property-placeholder location="classpath:database.properties"/>
    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <!--连接池信息-->
        <property name="maxIdle" value="100"/>
    </bean>
    <!--03 事务相关配置-->
    <bean id="transactionManger" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <!--开启事务注解-->
    <tx:annotation-driven transaction-manager="transactionManger"/>
    <!--04 Mybatis基础配置-->
    <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--数据源-->
        <property name="dataSource" ref="dataSource"/>
        <!--自动扫描mapper.xml文件,然后映射com/its/mapper下的所有xml文件,
        不用像以前那样一个一个配置映射-->
        <property name="mapperLocations" value="classpath:com/its/mapper/*xml"/>
        <!--别名,这里是映射的实体类-->
        <property name="typeAliasesPackage" value="com.its.pojo"/>
        <!--引入mybatis.xml文件-->
        <property name="configLocation" value="classpath:mybatis.xml"/>
    </bean>
<!--    05 Mapper代理开发,使用spring自动映射Mybatis的接口并装配-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.its.mapper"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"/>
    </bean>
</beans>

由于还要使用springMVC的功能,所以需要springMVC的配置文件,如下

<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">
    <!--  扫描  -->
    <context:component-scan base-package="com.its.controller"/>
</beans>

4.database.properties和mybatis.xml配置文件

在spring.xml中又引入database.propertiesmybatis.xml配置文件,配置文件内容分别如下

jdbc.driver = com.mysql.cj.jdbc.Driver
jdbc.url = jdbc:mysql:///demo_test
jdbc.username = root
jdbc.password = root
<?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"/>
    </settings>
</configuration>

mapper层接口的映射文件BooksMapper.xml文件如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.its.mapper.BooksMapper">

    <select id="selectAllBooks" resultType="com.its.pojo.Books">
        select * from demo_test.books
    </select>
</mapper>

5. 代码编写

1.数据库表如下

2.Controller层的BooksController类的的代码如下

package com.its.controller;

import com.its.pojo.Books;
import com.its.service.BooksService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

@Controller
@RequestMapping("/books")
public class BooksController {
    @Autowired
    BooksService booksService;
    @RequestMapping("/list")
    public void getAllBooks(){
        List<Books> list = booksService.getAllBooks();
        list.forEach(System.out::println);
    }
}

3.service层的BookService接口和BookServiceImp代码如下

package com.its.service;

import com.its.pojo.Books;

import java.util.List;

public interface BooksService {
    List<Books> getAllBooks();
}
package com.its.service.Impl;

import com.its.mapper.BooksMapper;
import com.its.pojo.Books;
import com.its.service.BooksService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class BooksServiceImpl implements BooksService {
    @Autowired
    BooksMapper booksMapper;

    @Override
    public List<Books> getAllBooks() {
        return booksMapper.selectAllBooks();
    }
}

4..mapper层下的BooksMapper类的代码如下

package com.its.mapper;

import com.its.pojo.Books;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface BooksMapper {

    List<Books> selectAllBooks();
}

5.用于查询数据户的映射文件BooksMapper.xml文件代码如下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.its.mapper.BooksMapper">

    <select id="selectAllBooks" resultType="com.its.pojo.Books">
        select * from demo_test.books
    </select>
</mapper>

6.测试整合结果

(1)先编写mybatis和spring整合的测试代码,如下

package com.its;

import com.its.controller.BooksController;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring.xml"})
public class Test01 {
    @Autowired
    private BooksController booksController;
    @Test
    public void test(){
        booksController.getAllBooks();
    }
}

结果输出了所有的图书信息,mybatis和spring整合测试成功。

(2)再测试springMVC是否整合成功,这里首先要配置一下tomacat服务器,再在空着层提供相应的访问路径,如果服务器启动成功,再地址栏输入访问地址后,控制台依然能够打印出相同的结果,则springMVC整合成功!

配置tomacat

启动tomacat,在地址栏输入http://localhost:8080/books/list,控制台显示所有图书,springMVC整合成功。

总结:mybatis整合spring和springMVC主要有以下几个步骤

  1. 设置项目结构分为,主文件下controller,service,mapper,pojo几个包。
  2. 资源目录下,设置同包同名的sql映射文件,编写spring.xml,mybatis.xml,database.properties,springMvc.xml配置文件
  3. 编写各个层代码。
  4. 执行测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1973364.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5.2-软件工程基础知识-软件过程模型

软件过程模型 瀑布模型瀑布模型变种-V模型演化模型-原型模型增量模型演化模型-螺旋模型喷泉模型基于构件的开发模型形式化方法模型统一过程模型敏捷方法极限编程其他方法 软件过程模型概述练习题 瀑布模型 瀑布模型(SDLC):瀑布模型是一个经典的生命周期模型&#xff0c;一般将软…

SpringBoot中如何正确使用Redis(详细介绍,原理讲解,企业版)

1.引入Redis依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency> 2.配置Redis的连接信息(application.yml) 实际开发中有两个一个是开发环境applicati…

VBA字典与数组第十七讲:工作表数组大小的扩展及意义

《VBA数组与字典方案》教程&#xff08;10144533&#xff09;是我推出的第三套教程&#xff0c;目前已经是第二版修订了。这套教程定位于中级&#xff0c;字典是VBA的精华&#xff0c;我要求学员必学。7.1.3.9教程和手册掌握后&#xff0c;可以解决大多数工作中遇到的实际问题。…

JAVA(IO流)7.31

ok了家人们今天还是学习IO流&#xff0c; 一.打印流【了解】 1.1 打印流的概述 我们平时使用的System语句就是调用了print()方法和println()方法。 这两个方法都来自于 java.io.PrintStream 类。 作用&#xff1a; 该类能够方便地打印各种数据类型的值&#xff0c;写入数据后…

谷粒商城实战笔记-115-全文检索-ElasticSearch-进阶-bool复合查询

文章目录 1&#xff0c;must2&#xff0c;must not3&#xff0c;should 1&#xff0c;must {"query": {"bool": {"must": [{"match": {"gender": "M"}},{"match": {"address": "mill&q…

java代码审计-SQL的注入

0x01 前言 Java里面常见的数据库连接方式有三种&#xff0c;分别是JDBC&#xff0c;Mybatis&#xff0c;和Hibernate。 0x02 JDBC注入场景 很早之前的Javaweb都是用JDBC的方式连接数据库然后去实现dao接口再调service业务层去实现功能代码JDBC连接代码 WebServlet("/d…

科技云报道:大模型引领技术浪潮,AI安全治理面临“大考”

科技云报道原创。 从文生文到文生图&#xff0c;再到文生视频&#xff0c;近年来&#xff0c;以ChatGPT、Sora等为代表的大模型引领了全球人工智能技术与产业的新一轮浪潮。2024年更是被业内称为大模型应用爆发元年。 年初&#xff0c;Sora横空出世验证了Scalling Law在视频生…

计算机的错误计算(五十)

摘要 扩展了计算机的错误计算&#xff08;四十九&#xff09;中的代码。同时发现&#xff0c;误差也“扩展”了。 下面是代码&#xff1a; import torch# 设置随机种子 torch.manual_seed(0)# 创建张量并移动到GPU W1 torch.randn(5, 3) * 10 W1 W1.to(cuda) X1 torch.ran…

高级宏定义

平时常说的 C 语言三大预处理功能是什么&#xff1f;&#xff08;吹牛谈资&#xff0c;不能不知&#xff09; 答&#xff1a;宏定义&#xff1b;文件包含&#xff1b;条件编译。 说到底&#xff0c;宏定义的实质是什么&#xff1f; 答&#xff1a;替换。 关于宏定义有一点…

CSS技巧专栏:一日一例 18 -纯CSS实现背景浮光掠影的按钮特效

CSS技巧专栏:一日一例 18 -纯CSS实现背景浮光掠影的按钮特效 先发图,再说话: 案例图片 案例分析 按钮是好几种颜色的背景色组成的,使用css的话,应该会有几个不同颜色的层,在按钮后面移动。每个层互相叠加,大概还会用到图片混合模式产生了更多的叠加的颜色,然后边缘过…

云计算实训20——mysql数据库安装及应用(增、删、改、查)

一、mysql安装基本步骤 1.下载安装包 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar 2.解压 tar -xf mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar 3.卸载mariadb yum -y remove mariadb 查看解压后的包 [rootmysq…

二叉树遍历算法的应用

1、二叉树的创建 2、二叉树的复制 3、二叉树的深度 4、计算结点总个数

jsp 自定义taglib

一、简介 我们在javaWeb开发中&#xff0c;经常会用到jsp的taglib标签&#xff0c;有时候并不能满足我们的实际需要&#xff0c;这就需要我们自定义taglib标签&#xff0c; 二、开发步骤 1、编写control方法&#xff0c;继承BodyTagSupport 2、定义zdytaglib.tld标签文件 3、…

AI Agent 如何入门?来看看这本新书!!!

半个月前&#xff0c;粗心的我细心地发现&#xff0c;有一本关于 Agent 的书籍&#xff0c;作者还是熟悉的咖哥&#xff08;黄佳老师&#xff0c;当年拜读过他的《零基础学机器学习》&#xff09;。 而在昨天&#xff0c;我终于收到了&#xff01;立刻花了半个小时品读起来~觉…

LeetCode 572.另一棵树的子树 C写法

LeetCode 572.另一棵树的子树 C写法 思路&#x1f9d0;&#xff1a; 可以用上判断两棵树是否相同的方法&#xff0c;root的每个结点都去与subroot进行该方法的比较&#xff0c;如果有一轮比较成功就表示root包含subroot。 代码&#x1f50e;&#xff1a; bool isSameTree(struc…

【时时三省】(C语言基础)函数的声明和定义

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ——csdn时时三省 函数声明 1.告诉编译器有一个函数叫什么&#xff0c;参数是什么&#xff0c;返回类型是什么。但是具体是不是存在&#xff0c;无关紧要。 2.函数的声明一般出现在函数的使用之前。要满足先声…

视频监控汇聚平台LntonCVS安防管理平台构建互联网视频监控安全管理系统方案

随着互联网和人工智能技术的发展&#xff0c;我们致力于建设一种云端平台&#xff0c;统一整合各类二三类视频资源&#xff0c;实现对网络工程最后100米、10米甚至1米的全域覆盖。 依托互联网与VPN网络&#xff0c;我们提供了一种视频监控安全管理系统方案&#xff0c;集成了大…

SpringSecurity+Mysql数据库实现用户安全登录认证

Spring Security 是一个提供身份认证、授权和防范常见攻击的安全权限框架。无论是对命令式&#xff0c;还是响应式web应用程序都完美支持&#xff0c;现在主要用作保护基于 Spring 框架的应用程序的事实标准。相对于shiro来说&#xff0c;SpringSecurity功能更加复杂而且更加强…

深入浅出:可视化理解揭示决策树与梯度提升背后的数学原理

决策树是一种非参数的监督学习算法&#xff0c;可用于分类和回归。它使用类似树的结构来表示决策及其潜在结果。决策树易于理解和解释&#xff0c;并且可以轻松地进行可视化。但是当决策树模型变得过于复杂时&#xff0c;它不能很好地从训练数据中泛化&#xff0c;会导致过拟合…

64、ELK记录nginx、httpd、mysqld日志

logstash收集服务日志文件 一、logstash收集appache日志文件&#xff0c;转发到elasticsearch 1、建立在elk1、2、3搭建好elk架构基础之上192.168.168.61 es1 2/4g192.168.168.62 es2 2/4g192.168.168.63 logstash kibana nginx/http 4/8g三台开启服务systemctl s…