当前位置: 首页 > news >正文

11. 实现业务功能--获取用户信息

目录

1. 实现 Controller

2. 单体测试

3. 修复返回值存在的缺陷

3.1 用户的隐私数据:密码的密文和盐不能显示

3.2 将值为 null 的字段可以进行过滤

3.3 时间的格式需要进行处理,如 yyyy-mmmm-ddd  HH:mm:ss

3.4 data 属性没有返回 

4. 实现前端页面

5. 根据用户的 ID 获取用户信息

5.1 创建 Service 接口

5.2 实现 Service 接口

5.3 编写测试方法

5.4 实现 Controller

 5.5 单体测试


1. 实现 Controller

@ApiOperation("获取用户信息")@ResponseBody@GetMapping("/info")public AppResult<User> getUserInfo (HttpServletRequest request) {// 获取session对象HttpSession session = request.getSession(false);// 判断 session 是否有效if (session == null || session.getAttribute(AppConfig.SESSION_USER_KEY) == null) {return AppResult.failed("用户未登录");}// 退出成功响应User user = (User) session.getAttribute(AppConfig.SESSION_USER_KEY);return AppResult.success(user);}

2. 单体测试

先进行登录: 

 获取信息:

3. 修复返回值存在的缺陷

我们可以看到在返回的结果存在的问题:

3.1 用户的隐私数据:密码的密文和盐不能显示

        在 JSON 序列化的时候把相应的字段排除掉。 在对应的字段加上如下图所示的注解:

 重新运行后,可以看到已经成功将隐私字段进行了排除显示:

3.2 将值为 null 的字段可以进行过滤

添加以下配置: 

重新运行后: 

3.3 时间的格式需要进行处理,如 yyyy-mmmm-ddd  HH:mm:ss

添加以下配置:  

重新运行后: 

3.4 data 属性没有返回 

但是此时由于设置了不为 null 时才参与 JSON 初始化,导致了 data 属性没有返回:

 通过添加注解: @JsonInclude(JsonInclude.Include.ALWAYS) 可以解决上述问题。

测试:

4. 实现前端页面

    //========================= 获取用户信息 =======================// 成功后,手动设置用户信息// $('#index_nav_avatar').css('background-image', 'url(' + user.avatarUrl + ')');$.ajax({type : 'GET',url : 'user/info',// 成功回调success : function(respData) {// ⽤状态码判断是否成功if (respData.code == 0) {// 成功// 获取用户信息let user = respData.data;// 设置用户头像的默认值if(!user.avatarUrl){user.avatarUrl = avatarUrl;}// 设置用户头像$('#index_nav_avatar').css('background-image', 'url(' + user.avatarUrl + ')');// 设置昵称$('#index_nav_nickname').html(user.nickname);// 设置用户组let subName = user.isAdmin == 1 ? '管理员' : '普通用户';$('#index_nav_name_sub').html(subName);} else {// 失败$.toast({heading : '警告',text : respData.message,icon : 'Warning'});}},// 失败(HTTP)error: function() {$.toast({heading : '错误',text : '出错了,请联系管理员',icon : 'error'});}});

最终的运行结果如图所示: 


5. 根据用户的 ID 获取用户信息

用户提交请求,服务器根据是否传入 Id 参数决定返回哪个用户的详情。
1. 没有用户 Id,从 session 中取出当前登录的用户信息
2. 传入用户 Id,从数据库中查询(根据 id 去查)

参数要求:

参数名描述类型默认值条件
id用户 IDlong可以为空

5.1 创建 Service 接口

    /*** 根据用户 Id查询用户信息* @param Id* @return User*/User selectById(Long Id);

5.2 实现 Service 接口

@Overridepublic User selectById(Long id) {// 非空检验if(id == null || id < 0){// 打印日志log.warn(ResultCode.FAILED_PARAMS_VALIDATE.toString());// 抛出异常throw new ApplicationException(AppResult.failed(ResultCode.FAILED_PARAMS_VALIDATE));}// 使用 DAO 查询User user = userMapper.selectByPrimaryKey(id);return user;}

5.3 编写测试方法

@Testvoid selectById() throws JsonProcessingException {User user = userService.selectById(1l);System.out.println(objectMapper.writeValueAsString(user));user = userService.selectById(2l);System.out.println(objectMapper.writeValueAsString(user));user = userService.selectById(8l);System.out.println(objectMapper.writeValueAsString(user));}

测试通过: 

5.4 实现 Controller

@ApiOperation("获取用户信息")@ResponseBody@GetMapping("/info")public AppResult<User> getUserInfo (HttpServletRequest request,@ApiParam("⽤⼾Id") @RequestParam(value = "id", required = false) Long id) {// 定义返回的 User 对象User user;// 根据用户传入的 Id 值,获取 User 对象的方式if(id == null){// 获取session对象HttpSession session = request.getSession(false);// 退出成功响应user = (User) session.getAttribute(AppConfig.SESSION_USER_KEY);}else{// 从数据库中查询user = userService.selectById(id);}// 返回结果return AppResult.success(user);}

 5.5 单体测试

登录后,输入要查询的 Id(主键):

登录后,未输入 Id 查询时返回登录信息: 

 

 

相关文章:

11. 实现业务功能--获取用户信息

目录 1. 实现 Controller 2. 单体测试 3. 修复返回值存在的缺陷 3.1 用户的隐私数据&#xff1a;密码的密文和盐不能显示 3.2 将值为 null 的字段可以进行过滤 3.3 时间的格式需要进行处理&#xff0c;如 yyyy-mmmm-ddd HH:mm:ss 3.4 data 属性没有返回 4. 实现前端页…...

HTTPS

HTTPS是什么 HTTPS 属于应用层协议&#xff0c;其原理是通过SSL/TLS协议在HTTP和TCP之间插入一层安全机制。通过SSL/TLS握手过程&#xff0c;客户端和服务器协商出一个对称密钥&#xff0c;用于后续的数据加密和解密&#xff0c;从而保证数据的机密性和完整性。 为什么会需要…...

spring详解

spring是于2003年兴起的一款轻量级的&#xff0c;非侵入式的IOC和AOP的一站式的java开发框架&#xff0c;为简化企业级应用开发而生。 轻量级的&#xff1a;指的是spring核心功能的jar包不大。 非侵入式的&#xff1a;业务代码不需要继承或实现spring中任何的类或接口 IOC&…...

香港服务器备案会通过吗?

​  对于企业或个人来说&#xff0c;合规备案是网络运营的基本要求&#xff0c;也是保护自身权益的重要举措。以下内容围绕备案展开话题&#xff0c;希望为您解开疑惑。 香港服务器备案会通过吗? 目前&#xff0c;香港服务器无法备案&#xff0c;这是由于国内管理规定的限制…...

乐鑫推出 ESP ZeroCode 控制台

乐鑫科技 ESP ZeroCode 控制台是一个网页应用&#xff0c;用户只需点击鼠标&#xff0c;描述想要创建的产品类型、功能及其硬件配置&#xff0c;即可按照自身需求&#xff0c;快速生成符合 Matter 认证的固件&#xff0c;并在硬件上进行试用。试用过程中&#xff0c;如有任何不…...

从NLP到聊天机器人

一、说明 今天&#xff0c;当打电话给银行或其他公司时&#xff0c;听到电话另一端的机器人向你打招呼是很常见的&#xff1a;“你好&#xff0c;我是你的数字助理。请问你的问题。是的&#xff0c;机器人现在不仅可以说人类语言&#xff0c;还可以用人类语言与用户互动。这是由…...

相关搜索引擎常用搜索语法(Google hacking语法和FOFA语法)

一&#xff1a;Google Hack语法 Google Hacking原指利用Google搜索引擎搜索信息来进行入侵的技术和行为&#xff0c;现指利用各种搜索引擎并使用一些高级的搜索语法来搜索信息。既利用搜索引擎强大的搜索功能&#xff0c;在在浩瀚的互联网中搜索到我们需要的信息。 &#xff0…...

Mysql查询

第三章&#xff1a;select 语句 SELECT employees.employee_id,employees.department_id FROM employees WHERE employees.employee_id176; DESC departments;SELECT * FROM departments;第四章&#xff1a;运算符使用 SELECT employees.last_name,employees.salary FROM em…...

解决http下navigator.clipboard为undefined问题

开发环境下使用navigator.clipboard进行复制操作&#xff0c;打包部署到服务器上后&#xff0c;发现该功能显示为undefined&#xff1b;查相关资料后&#xff0c;发现clipboard只有在安全域名下才可以访问(https、localhost)&#xff0c;在http域名下只能得到undefined&#xf…...

mysql之host is blocked问题

程序上线一段时间之后&#xff0c;更新程序总是遇到这个问题 每次都是重启几次程序&#xff0c;或者执行 flush hosts; 毕竟指标不治本&#xff0c;抽出时间决定分析一下问题&#xff0c;查阅了几篇博客。&#xff08;感谢这几位大佬&#xff09; https://blog.51cto.com/u_…...

每日一题:2337 移动片段得到字符串

给你两个字符串 start 和 target &#xff0c;长度均为 n 。每个字符串 仅 由字符 L、R 和 _ 组成&#xff0c;其中&#xff1a; 字符 L 和 R 表示片段&#xff0c;其中片段 L 只有在其左侧直接存在一个 空位 时才能向 左 移动&#xff0c;而片段 R 只有在其右侧直接存在一个 …...

嵌入式设备的 Json 库基本使用

大家好&#xff0c;今天给介绍一款基于 C 语言的轻量级的 Json 库 – cJson。可用于资源受限的嵌入式设备中。 cJSON 是一个超轻巧&#xff0c;携带方便&#xff0c;单文件&#xff0c;简单的可以作为 ANSI-C 标准的 JSON 解析器。 cJSON 是一个开源项目&#xff0c;github 下…...

GEEMAP 中如何拉伸图像

图像拉伸是最基础的图像增强显示处理方法&#xff0c;主要用来改善图像显示的对比度&#xff0c;地物提取流程中往往首先要对图像进行拉伸处理。图像拉伸主要有三种方式&#xff1a;线性拉伸、直方图均衡化拉伸和直方图归一化拉伸。 GEE 中使用 .sldStyle() 的方法来进行图像的…...

软件测试学术顶会——ISSTA 2023 论文(网络安全方向)清单、摘要与总结

总结 本次会议涵盖的安全研究主题广泛,包括源代码分析、二进制代码分析、恶意软件检测、漏洞检测、模糊测试、程序验证等。一些热门的研究方向包括:基于机器学习的漏洞检测、大型语言模型在软件安全中的应用、区块链智能合约安全分析。这些方向都在最近几年持续发展。一些较冷门…...

基于YOLOv8模型和PCB电子线路板缺陷目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要&#xff1a;基于YOLOv8模型PCB电子线路板缺陷目标检测系统可用于日常生活中检测与定位PCB线路板瑕疵&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检…...

centos安装mysql8

检查是否有mariadb rpm -qa|grep mariadb rpm -e --nodeps mariadb-server安装mysql-8.0.31-el7-x86_64.tar.gz包 安装mysql-8.0.31-el7-x86_64.tar.gz包 cd datatar -xvf mysql-8.0.31-el7-x86_64.tar.gzmv mysql-8.0.31-el7-x86_64 mysql 依赖安装 报错解决&#xff0c;安…...

【Apollo】阿波罗自动驾驶技术:引领汽车行业革新

前言 Apollo (阿波罗)是一个开放的、完整的、安全的平台&#xff0c;将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统&#xff0c;快速搭建一套属于自己的自动驾驶系统。 开放能力、共享资源、加速创新、持续共赢是 Apollo 开放平台的口号。百度把自己所拥有的强大、…...

一文看懂!数据管道和数据流在数据分析中的作用

当我们谈论数据分析时&#xff0c;我们通常会想到一系列的步骤&#xff0c;包括数据收集、数据清洗、数据分析和数据可视化等。然而&#xff0c;在这些步骤中&#xff0c;有两个非常重要的概念&#xff1a;数据管道和数据流。这两个概念在数据分析过程中起着至关重要的作用。本…...

Linux系统下检验Tensorflow 2.xx版本和1.xx版本是否安装成功

目录 版本问题Tensorflow 1.xx的测试代码&#xff1a;Tensorflow 2.xx的测试代码&#xff1a;Tensorflow 2.6版本实际的测验结果 总结 版本问题 查询资料发现&#xff0c;多数检验Tensorflow是否安装成功的方法&#xff0c;多数方法都是1.xx版本的&#xff0c;直接使用1.xx版本…...

暑期高铁站大量遗失物品,FindMy帮助寻找

近日&#xff0c;一女子在上海坐高铁时&#xff0c;将户口本、房产证遗落安检处的新闻引起网友的关注。然后业内人士表示&#xff1a;常事&#xff0c;车站什么都能捡到。 据中国铁路透露&#xff0c;暑运期间&#xff0c;上海虹桥站客流增加&#xff0c;日均发送旅客20多万人…...

可编程逻辑器件(PLD/CPLD/FPGA)核心原理、选型指南与EDA设计实战

1. 项目概述&#xff1a;从怀旧到硬核&#xff0c;聊聊可编程逻辑的“前世今生”那天在网上闲逛&#xff0c;本想找点微马赛克艺术&#xff08;Micromosaic&#xff09;的制作视频&#xff0c;结果算法一个拐弯&#xff0c;把我带回了上世纪七八十年代的《大青蛙布偶秀》&#…...

Hermes Agent项目中集成Taotoken自定义供应商教程

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Hermes Agent项目中集成Taotoken自定义供应商教程 对于使用Hermes Agent框架的开发者而言&#xff0c;直接调用单一模型服务商有时…...

从高通苹果专利战看芯片产业博弈:技术、商业与供应链的纠缠

1. 从一场专利诉讼看移动通信产业的权力游戏最近翻看一些老资料&#xff0c;看到一篇2017年关于高通、苹果和三星的行业评论&#xff0c;感触颇深。那会儿高通刚对苹果发起新一轮专利诉讼&#xff0c;要求禁售部分iPhone&#xff1b;三星则靠着存储芯片的行情&#xff0c;眼看要…...

在Nodejs后端服务中集成Taotoken调用大模型API

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在Nodejs后端服务中集成Taotoken调用大模型API 对于Node.js后端开发者而言&#xff0c;将大模型能力集成到服务中已成为构建智能应…...

从雨篷结构事故处理谈幕墙钢结构的概念设计

从雨篷结构事故处理谈幕墙钢结构的概念设计 雨篷结构设计是幕墙钢结构设计最重要内容。但由于雨篷静定结构体系的先天不足,外加设计师理论认识水平与设计经验的限制、施工时的不当行为,经常造成工程事故。这些设计缺陷和工程事故的发生,多是由于对雨篷进行概念设计时认知不…...

Windows平台即时通讯消息保留技术深度解析:RevokeMsgPatcher企业级解决方案完全手册

Windows平台即时通讯消息保留技术深度解析&#xff1a;RevokeMsgPatcher企业级解决方案完全手册 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁&#xff08;我已经看到了&#xff0c;撤回也没用了&#xff09; …...

PiliPlus:用Flutter重新定义你的B站观影体验

PiliPlus&#xff1a;用Flutter重新定义你的B站观影体验 【免费下载链接】PiliPlus PiliPlus 项目地址: https://gitcode.com/gh_mirrors/pi/PiliPlus 在众多视频平台中&#xff0c;B站以其独特的社区文化和丰富内容生态深受用户喜爱。然而&#xff0c;官方客户端的一些…...

计算机视觉十年演进:从手工特征到工业落地实战

1. 计算机视觉的十年跃迁&#xff1a;从手工特征到端到端理解2012年&#xff0c;AlexNet在ImageNet大赛上以15.3%的错误率碾压第二名10.8个百分点&#xff0c;整个计算机视觉领域像被按下了快进键。那会儿我在实验室调试SIFT特征匹配&#xff0c;光是调一个尺度参数就要跑三小时…...

ThunderAI:开源本地AI助手桌面应用部署与核心架构解析

1. 项目概述&#xff1a;一个开源的AI助手桌面应用 最近在GitHub上闲逛&#xff0c;发现了一个挺有意思的项目&#xff0c;叫“ThunderAI”。这名字听起来就挺带劲&#xff0c;对吧&#xff1f;点进去一看&#xff0c;是个用Python写的桌面应用程序&#xff0c;核心功能是把几个…...

3步诊断Reloaded-II模组依赖无限下载循环:新手友好修复指南

3步诊断Reloaded-II模组依赖无限下载循环&#xff1a;新手友好修复指南 【免费下载链接】Reloaded-II Universal .NET Core Powered Modding Framework for any Native Game X86, X64. 项目地址: https://gitcode.com/gh_mirrors/re/Reloaded-II 如果你在使用Reloaded-I…...