SpringMVC上下文对象

SpringMVC上下文对象

在有些情况下,就算加了过滤器后我们现在还不能在 controller 层将 session 代码去掉!因为在实际业务中对用户对象操作是非常常见的,而我们的业务代码一般都写在 Service 业务层,那么我们 Service 层想要操作用户对象还得从 Controller 那传参过来,就像这样:

@GetMapping("api")
public String api(HttpSession session) {User user = (User) session.getAttribute("user");// 将用户对象传递给Service层userService.doSomething(user);return "成功返回数据";
}

每个接口都要这么写太麻烦了,有没有什么办法可以让我直接在 Service 层获取到用户对象呢?当然是可以的,我们可以通过 SpringMVC 提供的 RequestContextHolder 对象在程序任何地方获取到当前请求对象,从而获取我们保存在 HttpSession 中的用户对象。我们可以写一个上下文对象来实现该功能:

public class RequestContext {public static HttpServletRequest getCurrentRequest() {// 通过`RequestContextHolder`获取当前request请求对象return ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();}public static User getCurrentUser() {// 通过request对象获取session对象,再获取当前用户对象return (User)getCurrentRequest().getSession().getAttribute("user");}
}

然后我们在Service层直接调用我们写的方法就可以获取到用户对象啦:

public void doSomething() {User user = RequestContext.getCurrentUser();System.out.println("service层---当前登录用户对象:" + user);
}

我们再在Controller层直接调用Service:

@GetMapping("api")
public String api() {// 各种业务操作userService.doSomething();return "api成功返回数据";
}

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

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

相关文章

hcip-datacom英文词汇积累简述1

路由策略: routing policy 节点 : node 使配对: if match 应用: apply 许可: permit 拒绝: deny 访问控制列表: access control list ( ACL) 区域: area 邻居: peer 查看OSPF路由表: display ospf routing 查看全局路由表: display ip routing 路由 ID : router-id 设置OSPF路由…

企业安全体系建设的实践指南:策略制定与实施细节

在网络安全行业,安全Web漏洞挖掘工程师已经层出不穷,然而拥有甲方安全建设经验的工程师相对较为稀缺。在企业招聘安全工程师时,除了对安全漏洞挖掘能力的重视,更加关注是否具备甲方安全体系建设方面的思维。 本次分享聚焦于甲方安…

78: 计算生日是星期几(python)

收藏 难度:简单 标签:卓越班选拔 题目描述 编写一个程序,只要输入年月日,就能回答那天是星期几。 能被4整除但不能被100整除的,或者能被400整除的是闰年。 1、已知公元1年1月1日是星期一 2、算法:如果输…

PyCharm中配置PyQt5并添加外部工具

Qt Designer、PyUIC和PyRcc是Qt框架下的三个重要工具,总的来说,这三个工具各司其职,相辅相成,能显著提升Qt开发的速度与效率。 Qt Designer:是一个用于创建图形用户界面的工具,可轻松构建复杂的用户界面。…

面试智力题

面试智力题 二进位bit1. 题目:一千杯水,一杯水有毒,怎么用10只老鼠,把这杯水找出来(1)解法1:常规法(2)bit法(位数法) (3) 时间法三级目录 二进位b…

pygame的搭建

pygame的介绍与环境搭建 Pygame模块 安装 WindowsR打开命令窗口,输入: pip install pygame 或者安装指定版本 pip install pygame 2.3.0常用模块 在Pygame框架中有很多模块,官方网址pygame news 。 其中最常用模块的具体说明如下表所示…

Java 操作 Hadoop 集群之 HDFS 的应用案例详解

Java 操作 Hadoop 注意:本文内容基于 Hadoop 集群搭建完成基础上: Linux 系统 CentOS7 上搭建 Hadoop HDFS集群详细步骤 本文的内容是基于下面前提: Hadoop 集群搭建完成并能正常启动和访问Idea 和 Maven 分别安装完成需要有 JavaSE 基础和熟悉操作hadoop 的 hdfs dfs 命令…

【C语言基础】:自定义类型(二) -->联合和枚举

文章目录 一、联合体1.1 联合体类型的声明1.2 联合体的特点1.3 相同成员的结构体和联合体对比1.4 联合体大小的计算1.5 联合体练习 二、枚举类型2.1 枚举类型的声明2.2 枚举的优点 书山有路勤为径,学海无涯苦作舟。 创作不易,宝子们!如果这篇…

计算机网络: 点对点协议 PPP

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

单片机简介(一)

51单片机 一台能够运行的计算机需要CPU做运算和控制,RAM做数据存储,ROM做程序存储,还有输入/输出设备(串行口、并行输出口等),这些被分为若干块芯片,安装在主板(印刷线路板&#xf…

websocketpp上手笔记-Windows安装

WebSocketpp是什么 最近手上有一个c项目,需要用websocket从服务器端收内容。于是网上找了圈,发现WebSocketpp库可以做websocket的客户端。 WebSocketpp也叫WebSocket,github地址是:https://github.com/zaphoyd/websocketpp&…

vuepress-theme-hope 添加谷歌统计代码

最近做了个网站,从 cloudflare 来看访问量,过去 30 天访问量竟然有 1.32k 给我整懵逼了,我寻思不应该呀,毕竟这个网站内容还在慢慢补充中,也没告诉别人,怎么就这么多访问?搜索了下, cloudflare 还会把爬虫的请求也就算进来,所以数据相对来说就不是很准确 想到了把 Google An…

【C/C++】C语言实现顺序表

C语言实现顺序表 简单描述代码运行结果 简单描述 用codeblocks编译通过 源码参考连接 https://gitee.com/IUuaena/data-structures-c.git 代码 common.h #ifndef COMMON_H_INCLUDED #define COMMON_H_INCLUDED#define LIST_INIT_CAPACITY 100 //!< 线性表初始化长度 #def…

每日三个JAVA经典面试题(三十二)

1.Mybatis映射文件中&#xff0c;如果A标签通过include引用了B标签的内容&#xff0c;请问&#xff0c;B标签能否定义在A标签的后面&#xff0c;还是说必须定义在A标签的前面&#xff1f; Mybatis的映射文件中&#xff0c;当一个标签&#xff08;如A标签&#xff09;通过<i…

spring boot admin服务端配置邮件通知、钉钉通知

根据下面的可选项配置邮件 表格 6. 邮件提醒配置的可选项 属性名说明面若防治 spring.boot.admin.notify.mail.enabled 开启邮件提醒 true spring.boot.admin.notify.mail.ignore-changes 要忽略的状态变化&#xff0c;使用逗号分割。格式是: "<from-status>:&l…

远控桌面多任务并发文件保密传输

远程桌面文件传输是一个重要的功能&#xff0c;大多数远控都是用的桌面程序模式&#xff0c;利用系统自带复制粘贴拖拽文件拷贝功能&#xff0c;做一个ole调用对接&#xff0c;可以将很多控制权交给操作系统。 但我做的是浏览器版&#xff0c;浏览器是沙盒原理&#xff0c;为了…

【2024系统架构设计】案例分析- 5 Web应用

目录 一 基础知识 二 真题 一 基础知识 1 Web应用技术分类 大型网站系统架构的演化:高性能、高可用、可维护、应变、安全。 从架构来看:MVC,MVP,MVVM,REST,Webservice,微服务。

Intel FPGA (6):dac tlv5618a

Intel FPGA (6)&#xff1a;dac tlv5618a 前提摘要 个人说明&#xff1a; 限于时间紧迫以及作者水平有限&#xff0c;本文错误、疏漏之处恐不在少数&#xff0c;恳请读者批评指正。意见请留言或者发送邮件至&#xff1a;“Email:noahpanzzzgmail.com”。本博客的工程文件均存放…

Cesium 批量种树

1、准备树种建模 分各种级别建模LOD1-LODN 其中meta.json长这样&#xff1a; Gltf再3Dmax中导出Obj,再通过ObjToGltf的工具转换&#xff0c;参考 https://editor.csdn.net/md/?articleId96484597 2、准备shp点数据。&#xff08;shp中的点位就是种树的位置&#xff09; 3、准…

简单的HTML

1.HTML介绍 HTML(HyperText Markup Language,超文本标记语言)是用于创建网页的标准标记语言。它使用一系列的元素来描述网页的结构和内容,包括文本、图像、链接、表格等。 1.1HTML基础结构 HTML文件是一种纯文本文件,由一系列的元素构成。每个元素由一对尖括号<>包围,…