前后端分离项目-Springboot 【后端框架搭建,SSM】

news2024/11/15 12:11:25

1.创建新项目

点击File->New->Project

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aEMoAfcN-1670854369079)(assets/image-20221130112135-8dt2gus.png)]

选择Spring Initializr

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-arNQquyF-1670854369080)(assets/image-20221130112115-fy1a14f.png)]

填写信息

  • 修改Group
  • 修改Artifact
  • 修改管理类型Maven(带有文件目录)
  • 修改Java version

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FKGzL7ZJ-1670854369080)(assets/image-20221130114025-30c0y4h.png)]

选择依赖

这里只需要选择Web->Spring Web即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QSCw8Zay-1670854369081)(assets/image-20221130112628-m2l6wa3.png)]

创建的文件目录如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YrCBcfaD-1670854369081)(assets/image-20221130114107-12mt62w.png)]

2.创建文件目录

  • controller:实现控制转发,基本参数校验,不复杂的简单业务处理

  • service:业务逻辑层

    • impl(实现层)
  • pojo(Plain Ordinary Java Object)

    据阿里嵩山版规范,POJO 专指只有 setter/getter/toString 的
    简单类

    • do(Data Object)——与数据库对应表(实体类),通过 DAO 层向上传输数据源对象

    • dto(Data Transfer Object)——数据传输对象,Service 或 Manager 向外传输的对象

      后端–>前端的数据

    • vo(View Object)——显示层对象,通常是 Web 向模板渲染引擎层传输的对象

      前端–>后端的数据

  • resources

    • mappers(存放sql语句)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-crkdW4tm-1670854369082)(assets/image-20221130115527-yyii1on.png)]

修改application为后缀为yml文件

由于默认创建spring-boot项目时,配置文件是application.properties,但是存在无法层叠进行配置,不友好——同一个类型配置无法合并

这里我都需要对DataSource 进行配置,在文件中显示效果是这样的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3F1laVSJ-1670854369082)(assets/image-20221130121047-oyrh2fq.png)]

没有层叠关系

因此,我们修改为application.yml

YAML特点

(1)使用缩进表示层级关系

(2)缩进时不允许使用Tab键,只允许使用空格

(3)缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

(4)大小写敏感

同样的设置,但是显示效果却很清晰

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-He7Jrwvj-1670854369082)(assets/image-20221130121240-bj44d4c.png)]

3.导入项目依赖

在项目根目录pom.xml->dependency中添加下列依赖

  • jdbc
  • mybatis
<!--jdbc启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!--mysql驱动包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--    mybatis   -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.0</version>
        </dependency>

4.配置mybatis

application.yaml中添加配置

配置数据源

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql:///数据库名称?useSSL=false&useUnicode=true&characterEncoding=utf8
    username: 数据库用户名
    password: 数据库密码

配置类型映射

这里特地配置驼峰转换——map-underscore-to-camel-case

mybatis:
  mapper-locations: classpath:mappers/*.xml
  type-aliases-package: com.leo.springbootbackend.pojo.do
  configuration:
    map-underscore-to-camel-case: true

5.创建service接口

在service下创建一个UserService接口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hvvVJjDu-1670854369082)(assets/image-20221212115202-zh8m0q4.png)]

创建实体类

service->impl,创建对应的实体类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zd7LvCp0-1670854369083)(assets/image-20221212115324-5c2656t.png)]

实现接口

public class UserServiceImpl implements UserService {
}

添加注解

@Service
public class UserServiceImpl implements UserService {
}

6.创建Dao接口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IvDcHXnj-1670854369083)(assets/image-20221212165202-nj5sk6u.png)]

添加注解

@Mapper
public interface UserDao {
}

7.创建controller

添加注解@RestController

这里注意要添加的注解是@RestController,而不是简单的@Controller

@RestController = @Controller + @ResponseBody

因为这里我们是需要将数据返回到页面上的,因此需要添加@ResponseBody

为了方便,就直接使用@RestController

@RestController

//@Controller
//@ResponseBody
public class UserController {
}

添加测试方法

@RestController
public class UserController {
    @GetMapping("/login")
    public String index(){
        return "login";
    }
}

现在我们直接访问,或者通过postman等其他方法进行请求。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oGu45EA2-1670854369086)(assets/image-20221212171648-tvwr46w.png)]

添加子路径——可选

因为当前我已经知道系统会有很多接口,较复杂,为统一管理,创建两级请求路径

@RestController
@RequestMapping("/user")
public class UserController {
    @GetMapping("/login")
    public String index(){
        return "login";
    }
}

这里我就创建了/user一次路径,也就是说需要请求接口时,需要带上前缀路径才能访问后续

按照原方式请求就报错了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mBrOROiM-1670854369086)(assets/image-20221212172404-m7f5qy1.png)]

添加/user

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SZFVCzDZ-1670854369087)(assets/image-20221212172442-5unejs0.png)]

8.测试整体系统(测试登录接口)

创建DO实体类

实体类与数据库列名相对应

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fr0XpyUs-1670854369087)(assets/image-20221212214740-4ff4rx2.png)]

    private Integer pkUserId;
    private String uNumber;
    private String uName;
    private String uPasswd;

对应的数据库列为

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3XagGWkt-1670854369088)(assets/image-20221212215005-3bda8qw.png)]

添加构造方法( 无参 + 有参)

实现UserDao

添加获取用户信息的接口

package com.leo.springbootbackend.dao;

import com.leo.springbootbackend.pojo.entity.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

@Mapper
public interface UserDao {
    UserInfo getUserInfo(@Param("userNumber") String userNumber , @Param("passwd") String passwd);
}

添加SQL语句

resources->mappers创建UserMapper.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="dao层对应包路径">
    <select
            id="getUserInfo"
            resultType="对应实体类路径"
    >
        select
            pk_user_id,
            u_number,
            u_name,
            u_passwd
        from user_info
        where u_number = #{userNumber} and u_passwd = #{passwd}
    </select>

</mapper>

添加UserService接口

UserService接口出定义方法

  • 返回类型——boolean
  • 传递参数
  • 方法名——login
 Boolean login(String userNumber , String passwd);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hFohtQoa-1670854369088)(assets/image-20221212220401-yzycezc.png)]

实现UserImpl接口

定义属性

使用注解@Resource将userDAO交给Spring进行管理

    @Autowired
    private UserDao userDao;

实现方法

这里只需要打印查询到的结果即可

@Override
    public Boolean login(String userNumber, String passwd) {
        System.out.println(userDao.getUserInfo(userNumber,passwd));
        return true;
    }

实现UserController逻辑

添加属性——UserService

    @Autowired
    private UserService userService;

实现方法

这里随便传入一个存在的用户即可——仅测试项目是否搭建成功

@PostMapping("/login")
    public String login(){
        userService.login("用户名","密码");
        return "测试成功"
    }

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cFq7LqE2-1670854369088)(assets/image-20221212220937-896fyoo.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hkZZArC5-1670854369089)(assets/image-20221212220949-a0eg661.png)]

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

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

相关文章

【深入浅出Spring原理及实战】「原理分析专题」从零开始教你SpringEL表达式使用和功能分析讲解指南(上篇)

Spring EL表达式语言,这种语言jsp中学到的el,但是在整个spring之中其表达式语言要更加的复杂,而且支持度更加的广泛,最重要的是他可以进行方法的调用,对象的实例化,集合操作等等,但是唯一的难点就是:代码太复杂了,表达式太复杂了。深刻领会,spring中针对于字符串的改进,程序员使…

基于jsp+mysql+ssm医院出车管理与绩效分配系统-计算机毕业设计

项目介绍 本毕业设计主要实现集人性化、高效率、便捷等优点于一身的出车管理系统与绩效分配系统&#xff0c;完成系统用户管理、车辆信息管理、调度员信息管理、驾驶员信息管理、救护员信息管理、科室人员管理、院领导信息管理、调度信息管理、出车统计等功能模块。系统通过浏…

Spring Cloud微服务之loadbalancer负载平衡

Spring Cloud微服务之loadbalancer负载平衡 小学时候&#xff0c;曾经做过这样的数学题。 说有一个水池子&#xff0c;上面有一个排水管&#xff0c;下面有一个进水管&#xff0c;开一个进水管&#xff0c;6个小时灌满水池&#xff0c;开一个排水管&#xff0c;10个小时放光整…

给博客网站添加loading加载中动画代码

只需添加几行代码&#xff0c;就可以加强浏览者的体验,不在等待页面加载时感到枯燥&#xff0c;从而关闭网页&#xff0c;很多网站都会制作一个“网页正在加载中”的提示效果或显示加载进程&#xff0c;加载完成后提示消失&#xff0c;大部分都应用在网站的首页。当然网上很多教…

02时间复杂度与空间复杂度

开始系统学习算法啦&#xff01;为后面力扣和蓝桥杯的刷题做准备&#xff01;这个专栏将记录自己学习算法是的笔记&#xff0c;包括概念&#xff0c;算法运行过程&#xff0c;以及代码实现&#xff0c;希望能给大家带来帮助&#xff0c;感兴趣的小伙伴欢迎评论区留言或者私信博…

如何将多个视频剪辑到一起?如何把两段视频合成一段

如何将多个视频剪辑到一起&#xff1f;那么如何拼接视频&#xff1f;接下来小编就带大家一起了解下有关视频拼接的几款工具推荐。 工具一&#xff1a;TS视频拼合工具 TS视频合并工具是一款轻便简单的视频合并工具&#xff0c;主要是用于合并TS视频文件的工具&#xff0c;当用…

【分享】本地js文件替换源网页js文件的方法

本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!本地js文件替换源网页js文件的方法 环境 win10Fiddlerchrome方法一:Fiddler抓包替换js文件 自动回复器–…

HashMap源码分析以及面试题

目录 5、HashMap源码分析 5.1、初始化容量 5.2、负载因子是多少&#xff1f; 5.3、负载因子可以大于或小于0.75吗&#xff1f; 5.4、扩容长度为多少&#xff1f; 5.5、下标是怎么计算的&#xff1f; 5.6、hash冲突&#xff0c;是怎么解决的&#xff1f; 5.7、什么时候…

[附源码]JAVA毕业设计英语课程学习网站(系统+LW)

[附源码]JAVA毕业设计英语课程学习网站&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术…

安装 NVSwitch GPU 服务器的 cuda 驱动版本、nvidia-docker 指南

一&#xff0c;安装 Cuda 驱动 可参考笔者之前写过的文章&#xff1a; 升级 GPU 服务器 cuda 驱动版本指南 如果出现如下报错&#xff0c;则需安装 gcc、kernel-devel&#xff0c;请参考下面第二步安装 gcc、kernel-devel。 二&#xff0c;安装 gcc、kernel-devel 1&#…

基于狮群算法优化的lssvm回归预测-附代码

基于狮群算法优化的lssvm回归预测 - 附代码 文章目录基于狮群算法优化的lssvm回归预测 - 附代码1.数据集2.lssvm模型3.基于狮群算法优化的LSSVM4.测试结果5.Matlab代码摘要&#xff1a;为了提高最小二乘支持向量机&#xff08;lssvm&#xff09;的回归预测准确率&#xff0c;对…

[附源码]计算机毕业设计高校车辆管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis MavenVue等等组成&#xff0c;B/S模式…

地表最强:免费文字转语音工具

0、前言 我们在刷短视频的时候&#xff0c;经常会听到一些AI合成声音&#xff0c;它们有各种音色、语调&#xff0c;甚至不同的情绪&#xff0c;听起来与人声无异&#xff0c;其实这些大都是利用微软Azure的文字转语音技术来实现的。 虽然国内也有很多配音工具&#xff0c;但…

【优化算法】粒子群优化算法

粒子群优化算法粒子群优化算法简介粒子群优化算法原理粒子群优化算法的数学描述粒子群优化算法框架PySwarms&#xff1a;Python中粒子群优化的研究工具包PySwarms快速使用示例&#xff1a;编写自己的优化循环相关资料粒子群优化算法简介 粒子群优化算法(Particle Swarm Optimi…

如何安然度过行业大萧条,听听10年测试老鸟的分析

国内的互联网行业发展较快&#xff0c;所以造成了技术研发类员工工作强度比较大&#xff0c;同时技术的快速更新又需要员工不断的学习新的技术。因此淘汰率也比较高&#xff0c;超过35岁的基层研发类员工&#xff0c;往往因为家庭原因、身体原因&#xff0c;比较难以跟得上工作…

Huawei Compute Architecture for Neural Networks - CANN

Huawei Compute Architecture for Neural Networks - CANN1. Technical support (技术支持) https://support.huawei.com/enterprise/en/index.html https://support.huawei.com/enterprise/zh/index.html Server - Intelligent Computing -> Ascend Computing (昇腾计算)…

ChatGPT简介与Q群机器人部署教程

最近OpenAi推出的ChatGPT火出NLP圈子&#xff0c;看到不少人说强人工智能已经出现&#xff0c;于是赶紧来体验感受一下。 ChatGPT简介 ChatGPT是一个基于GPT-3&#xff08;通用语言模型&#xff09;的聊天机器人。它的目的是能够通过自然语言交流与用户进行对话。它能够理解用…

Seq2Seq基本原理

Seq2Seq基本原理 encoder & decoder Seq2Seq结构用于多个输入和多个输出的模型&#xff0c;但是输入和输出的大小可能并不一致&#xff0c;其本质上也是RNN网络的一个扩展&#xff0c;常见的应用场景包括&#xff1a;机器翻译、语音识别、文本摘要等。 常见的seq2seq的输…

Linux源码下载

方法一、Git下载源码 1.1、进入Linux官网 通过任意浏览器访问&#xff1a;https://www.kernel.org/&#xff0c;界面如下 1.2、选择版本 点击某一个版本对应的browse&#xff0c;Linux版本分为&#xff1a;mainline&#xff08;主线版本&#xff09;、stable&#xff08;稳定版…

函数之公式求和

【问题描述】 编写一个按以下公式求和的函数&#xff0c; 其中 a 是一个 2 ~ 8 的数字。 例如&#xff0c;S(3,5)333333333333333。 在主函数中&#xff0c;由键盘输入a和n&#xff0c;输出 S(a-1,n-1)S(a,n)S(a1,n1) 的值。 例如输入&#xff1a;3 5 则输出&#xff1a…