Java后端开发功能模块思路
文章目录
- 前言
- 一、查找接口及参数信息
- 1.1 找访问路径
- 1.2 参数及返回结果信息
- 1.3 编写功能模块函数
- 二、代码设计思路
- 三、总结
前言
对于正在学习Java后端开发的同学来说,对于Java后端功能模块的开发过程及思路要有一个整体清晰的流程。才能保证在开发过程中更加的顺畅。本文章只是以简单的登录模块开发为例,讲解在前端已经写好的前提下,我们怎样去写功能模块的代码。以及如何去编写以及编写的思路展开说明。使得在今后的模块开发中更加的顺畅。
一、查找接口及参数信息
这里正规开发的时候是有专门的接口文档的,但如果是对于自己练习项目的同学来说是没有接口文档的。我们就要学会在没有给接口文档的前提下也能通过代码找到对应的接口以及返回的参数。
接口文档如下图所示:

给出接口文档我们就不用去关注前端代码是如何编写的,只需要对照着文档写mapper、service、controller层代码即可,但对于大部分不是公司代码,只是自己学习的项目来说就没有这种接口文档。我们就需要去了解前端的代码,从前端的代码中找到对应的访问路径、请求的参数、还有返回的结果。
下面我们通过登录模块为例来做一下。
1.1 找访问路径
首先启动项目,打开前端的登录页面。
点击f12检查,点击登录按钮,找到网络—>全部—>请求网址。
如下图所示:我们可以看到请求的网址就是我们要编写的Mapping(“/”)里面要编写的内容。

1.2 参数及返回结果信息
请求的参数就是用户名和密码,但返回的结果我们需要看下如下图所示的内容:

可看到有code状态码、data数据、map、msg提示语。这些都是通过服务端返回的结果类里提前写好的类。代码如下所示:
import lombok.Data;
import java.util.HashMap;
import java.util.Map;/*** 通用返回结果的封装类* @param <T>*/
@Data
public class R<T> {private Integer code; //编码:1成功,0和其它数字为失败private String msg; //错误信息private T data; //数据private Map map = new HashMap(); //动态数据public static <T> R<T> success(T object) {R<T> r = new R<T>();r.data = object;r.code = 1;return r;}public static <T> R<T> error(String msg) {R r = new R();r.msg = msg;r.code = 0;return r;}public R<T> add(String key, Object value) {this.map.put(key, value);return this;}}
从代码中可看到,在我们编写功能模块时,return R.方法就可以了,是一种通用的返回数据类。
1.3 编写功能模块函数
- 通过上述的分析,我们可写出模块的基本结构,返回结果是R<泛型就是我们返回的员工信息>,第一个参数是request 到时候获取session时用到,如果登录成功就会将用户信息存到session,第二个参数是employee 前台传的json数据封装成员工对象,json转化需要用到下面代码中的@RequestBody注解
@PostMapping("/login")public R<Employee> login(HttpServletRequest request, @RequestBody Employee employee){//逻辑处理return R.success(emp);}
二、代码设计思路
当写好上述的内容后,就要开始编写函数内部的逻辑和实现的思路部分,在编写前我们都需要先列出来判断登录成功或者失败的逻辑是怎样的。步骤分为以下6个步骤。
//1.将页面提交的密码password进行md5加密处理
//2.根据页面提交的用户名username查询数据库
//3、如果没有查询到则返回登录失败结果
//4.密码比对,如果不一致则返回登录失败结果
//5.查看员工状态,如果为已禁用状态,则返回员工已禁用
//6.登录成功,将员工id存入Session并返回登录成功结果
然后我们根据思路编写代码:
@PostMapping("/login")public R<Employee> login(HttpServletRequest request, @RequestBody Employee employee){//1.将页面提交的密码password进行md5加密处理String password=employee.getPassword();password = DigestUtils.md5DigestAsHex(password.getBytes());//2.根据页面提交的用户名username查询数据库LambdaQueryWrapper<Employee> queryWrapper=new LambdaQueryWrapper<>();queryWrapper.eq(Employee::getUsername,employee.getUsername());Employee emp = employeeService.getOne(queryWrapper);//3、如果没有查询到则返回登录失败结果if(emp == null){return R.error("用户名不存在");}//4.密码比对,如果不一致则返回登录失败结果if(!emp.getPassword().equals(password)){return R.error("密码错误");}//5.查看员工状态,如果为已禁用状态,则返回员工已禁用if(emp.getStatus() == 0){return R.error("账号已禁用");}//6.登录成功,将员工id存入Session并返回登录成功结果request.getSession().setAttribute("employee",emp.getId());return R.success(emp);}
这样就将登录功能模块的设计完成了。
三、总结
总结下来开发模块的流程及分为三部分,
一是找接口文档对应的内容,看返回值,传入的参数、请求的路径。
二是设计思路编写,将设计的思路写成注释,代表着每一步将要编写的代码。
三是开始编写每一步的代码。
本次的内容适合于学习完SpringBoot、MP,在做项目的同学去查看了解。对于后端的同学来说,前端的代码不要求会写,但是必须要理解代码的含义,这样找这些代码的跳转,模块的联系将更加的顺畅,有利用开发。
当然了,有接口文档的话开发起来就会更加容易,如果是在学习阶段,建议后端的同学还是要将前端的知识点也学学。
相关文章:
Java后端开发功能模块思路
文章目录前言一、查找接口及参数信息1.1 找访问路径1.2 参数及返回结果信息1.3 编写功能模块函数二、代码设计思路三、总结前言 对于正在学习Java后端开发的同学来说,对于Java后端功能模块的开发过程及思路要有一个整体清晰的流程。才能保证在开发过程中更加的顺畅…...
CAPL(vTESTStudio) - DoIP - TCP发送_05
TCP发送 参数定义 版本号:02 FD or 01 FE or 其他任意值数据类型:00 05 or 00 06 or 80 01 or其他任意值数据长度:想要发送的任意长度...
使用IntelliJ IDEA搭建datax-web开发环境
记录:372场景:使用IntelliJ IDEA搭建datax-web开发环境,以及datax-web基本使用。版本:JDK 1.8Python 2.7.5datax-web开源地址:https://github.com/WeiYe-Jing/datax-web1.配置Maven环境1.1安装目录目录:D:\…...
[SSD固态硬盘技术 14] GC垃圾回收太重要了
今天介绍臭名昭著的垃圾收集 过程(或“GC”),maybe 这是对JAVA 工程师而言。当遇到GC导致速度降低时候, 他们真的想跳脚。 我想到我的小孩打疫苗,哭的哇哇叫, 在他的眼里疫苗应该也是讨厌的吧, 但事实真的如此吗? 但首先,让我们考虑一下如果根本没有 GC,闪存系统会发…...
lamada表达式、stream、collect整理
lamada表达式格式 格式:( parameter-list ) -> { expression-or-statements } 实例:简化匿名内部类的写法 原本写法: public class LamadaTest { public static void main(String[] args) { new Thread(new Runnable() { …...
Nacos 入门微服务项目实战
Nacos 核心源码精讲 - IT贱男 - 掘金小册全方位源码精讲,深度剖析 Nacos 注册中心和配置中心的核心思想。「Nacos 核心源码精讲」由IT贱男撰写,375人购买https://s.juejin.cn/ds/BuC3Vs9/ Hi,大家好,欢迎大家来学习《Nacos 核心源…...
【c++】类和对象:让你明白“面向一个对象有多重要”:构造函数,析构函数,拷贝构造函数的深入学习
文章目录 什么是面向对象?一:类是什么? 1.类的访问限定符 2.封装 3.类的实例化 4.this指针二:类的6个默认成员函数 1.构造函数 2.析构函数 3.拷贝构造函数什么是面向对象? c语言是面向…...
职场IT老手教你3步教你玩转可视化大屏设计,让领导眼前一亮!
我是制造企业的IT中心的研发人员,平常工作就是配合业务部门出出报表,选型一些商业软件,并在内部负责实施运维。最近领导出去参观了一些数字化转型比较领先的工厂和制造企业,回来就甩给我几张图,问能不能我们也做几个这…...
【光伏功率预测】基于EMD-PCA-LSTM的光伏功率预测模型(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
大数据Kylin(二):Kylin安装使用
文章目录 Kylin安装使用 一、Kylin安装要求 二、Kylin安装 1、Kylin安装前环境准备...
我们的微服务中为什么需要网关?
说起 Spring Cloud Gateway 的使用场景,我相信很多小伙伴都能够脱口而出认证二字,确实,在网关中完成认证操作,确实是 Gateway 的重要使用场景之一,然而并不是唯一的使用场景。在微服务中使用网关的好处可太多了&#x…...
互联网医院源码 线上问诊 智慧医院源码 C#源码
互联网医院平台源码 智慧医院管理系统源码 开发环境:ASP.NET C# VS2019 SQL2008 依托于实体医院利用互联网技术对接院内业务信息系统,向患者提供基于线上问诊、预约挂号、缴费结算、医患互动、诊后随访、健康科普和复诊等全面的医疗健康互联网服务。…...
基于昇腾计算语言AscendCL开发AI推理应用
01 初始AscendCL AscendCL(Ascend Computing Language,昇腾计算语言)是昇腾计算开放编程框架,是对底层昇腾计算服务接口的封装,它提供运行时资源(例如设备、内存等)管理、模型加载与执行、算子…...
JS document.write()换行
换行效果: 通过传递多个参数,即可实现换行效果: document.write("<br>",ar) 效果: 示例源码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&quo…...
Java高级-集合-Collection部分
本篇讲解java集合 集合 集合框架的概述 集合、数组都是对多个数据进行存储操作的结构,简称Java容器。 说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt,.jpg,.avi,数据库中…...
Android性能优化:getResources()与Binder交火导致的界面卡顿优化
欢迎:https://juejin.cn/post/7198430801851531324/ 欢迎:https://nasdaqgodzilla.github.io/2023/02/10/Android%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96%EF%BC%9AgetResources-%E4%B8%8EBinder%E4%BA%A4%E7%81%AB%E5%AF%BC%E8%87%B4%E7%9A%84%E7%95%8C%E…...
常见的内存操作函数
👦个人主页:Weraphael ✍🏻作者简介:目前是C语言学习者 ✈️专栏:C语言航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&a…...
python关键字
文章目录1 and、or、not2 if、elif、else3 for、while4 True、False5 continue、break6 pass7 try、except、finally、raise8 import、from、as9 def、return10 class11 lambda12 del13 global、nonlocal14 in、is15 None16 assert17 with18 yield1 and、or、not and、or、not…...
C语言 | 预处理知识详解 #预处理指令有哪些?他们如何使用?宏和函数有哪些区别?...#
文章目录前言预定义符号介绍预处理指令#define#define替换规则预处理指令 #undef宏和函数的对比宏和函数的对比图命名约定命令行定义条件编译预处理指令 #include嵌套文件包含其他预处理指令写在最后前言 上篇文章介绍了一个程序运行的 编译与链接 ,其中编译阶段有个…...
如何实现LFU缓存(最近最少频率使用)
目录 1.什么是LFU缓存? 2.LFU的使用场景有哪些? 3.LFU缓存的实现方式有哪些? 4.put/get 函数实现具体功能 1.什么是LFU缓存? LFU缓存是一个具有指定大小的缓存,随着添加元素的增加,达到容量的上限&…...
FOC算法避坑指南:克拉克变换的‘等幅值’与‘等功率’到底怎么选?基于STM32的实测对比
FOC算法避坑指南:克拉克变换的‘等幅值’与‘等功率’到底怎么选?基于STM32的实测对比 在STM32平台上实现磁场定向控制(FOC)时,克拉克变换系数的选择往往让工程师陷入两难:究竟该用2/3(等幅值&…...
Qwen3.5-27BGPU算力优化实践:FP16量化+梯度检查点+内存映射技术
Qwen3.5-27B GPU算力优化实践:FP16量化梯度检查点内存映射技术 1. 引言 在部署大型视觉多模态模型Qwen3.5-27B时,GPU显存和计算效率是两大关键挑战。本文将分享我们在4张RTX 4090 D 24GB显卡环境下,通过FP16量化、梯度检查点和内存映射三项…...
Trae平台实战:我如何教会一个AI智能体应对动态网页和反爬虫?
Trae平台实战:动态网页抓取与反爬策略的智能应对之道 在数据驱动的商业环境中,网页抓取技术已成为企业获取竞争优势的关键能力。然而,随着网站防护技术的升级,传统爬虫在面对动态加载内容和复杂反爬机制时往往力不从心。本文将分享…...
AI神器10秒搞定网申,求职效率翻倍
投简历填表单填到崩溃?这个AI神器帮你10秒搞定网申,海投效率直接拉满! 秋招春招跑过招聘季的朋友,一定都懂这种窒息感: 好不容易筛好了目标公司,点开招聘官网,迎面而来就是几十项的简历表单。姓名、电话、邮箱、教育经历从高中填到大学、实习经历要写清每段的起止时间…...
MangoHud与Vulkan视频编码协议:AV1监控完全指南
MangoHud与Vulkan视频编码协议:AV1监控完全指南 【免费下载链接】MangoHud A Vulkan and OpenGL overlay for monitoring FPS, temperatures, CPU/GPU load and more. Discord: https://discordapp.com/invite/Gj5YmBb 项目地址: https://gitcode.com/gh_mirrors/…...
Charticulator:颠覆式图表构建引擎如何让数据工作者实现零代码可视化创新
Charticulator:颠覆式图表构建引擎如何让数据工作者实现零代码可视化创新 【免费下载链接】charticulator Interactive Layout-Aware Construction of Bespoke Charts 项目地址: https://gitcode.com/gh_mirrors/ch/charticulator 数据可视化领域长期面临着模…...
Iceoryx(冰羚):无锁队列与并发控制的设计与实现3(源码解析)
接上篇设计4: 索引管理层( MpmcIndexQueue / CyclicIndex)Subscriber存储数据使用的是queue,是为了保证数据的读取顺序。MpmcLockFreeQueue 为了满足多个进程同时写的情况,采用了索引数据分离的方案(底层的索引实现为 …...
AutoHotkey实战:5分钟搞定Mac/Windows跨平台快捷键统一(附完整脚本)
AutoHotkey实战:5分钟搞定Mac/Windows跨平台快捷键统一(附完整脚本) 对于频繁切换Mac和Windows双系统的开发者来说,最令人抓狂的莫过于两种操作系统下完全不同的快捷键体系。特别是Cmd/Ctrl键位的混乱,常常让人在复制粘…...
CasRel开源镜像部署教程:适配低显存(12GB)GPU的轻量级方案
CasRel开源镜像部署教程:适配低显存(12GB)GPU的轻量级方案 1. 前言:为什么选择这个方案 如果你正在处理文本数据,想要自动提取人物、地点、事件之间的关系,那么关系抽取技术就是你需要的工具。CasRel作为…...
保姆级教程:用命令行实时监控瑞芯微RK3588的CPU/GPU/NPU负载与温度
嵌入式开发实战:构建RK3588芯片全维度性能监控系统 在边缘计算和AI推理场景中,RK3588作为一款高性能SoC,其复杂的多核架构(包括6核CPU、Mali-G610 GPU和6TOPS NPU)对系统监控提出了更高要求。本文将手把手教你搭建一个…...
