当前位置:网站首页>Web开发小妙招:巧用ThreadLocal规避层层传值
Web开发小妙招:巧用ThreadLocal规避层层传值
2022-07-06 18:34:00 【InfoQ】
Web开发中的一点麻烦事
public class XXController() {
public void addUser() {
// 获取操作人
Integer opUserId = Integer.parseInt(getHeader("opUserId"));
// 获取其他参数...
service.addUser(...., opUserId);
renderAppMsg("添加用户成功");
}
}
public class XXService() {
public void addUser(String tel, String name, String password, Integer opUserId) {
checkTel(tel, opUserId);
checkName(name, opUserId);
checkPassword(password, opUserId);
}
public void checkTel(String tel, Integer opUserId) {
check(tel, opUserId);
}
publc void check(..., Integer opUserId) {
// ...
}
}
思考
在拦截器中使用ThreadLocal暂存请求参数
package com.holdoa.core.interceptor;
import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation;
import javax.servlet.http.HttpServletRequest;
public class RequestPool implements Interceptor {
public static ThreadLocal<HttpServletRequest> localRequest= new ThreadLocal<>();
@Override
public void intercept(Invocation inv) {
localRequest.set(inv.getController().getRequest());
inv.invoke();
localRequest.remove();
}
public static HttpServletRequest getRequest() {
return localRequest.get();
}
}
使用参数
String para = RequestPool.localRequest.get().getParameter("username");
边栏推荐
- npm install 编译时报“Cannot read properties of null (reading ‘pickAlgorithm‘)“
- ROS学习(24)plugin插件
- Flir Blackfly S USB3 工业相机:白平衡设置方法
- NPM install compilation times "cannot read properties of null (reading 'pickalgorithm')“
- 糊涂工具类(hutool)post请求设置body参数为json数据
- First experience of JSON learning - the third-party jar package realizes bean, list and map to create JSON format
- ROS学习(21)机器人SLAM功能包——orbslam的安装与测试
- Yiwen takes you into [memory leak]
- 一片叶子两三万?植物消费爆火背后的“阳谋”
- Set WordPress pseudo static connection (no pagoda)
猜你喜欢
ROS学习(十九)机器人SLAM功能包——cartographer
Integrated navigation: product description and interface description of zhonghaida inav2
一片葉子兩三萬?植物消費爆火背後的“陽謀”
ROS学习(22)TF变换
Livox激光雷达硬件时间同步---PPS方法
Vingt - trois mille feuilles? "Yang mou" derrière l'explosion de la consommation végétale
CISP-PTE实操练习讲解(二)
Flir Blackfly S 工业相机:配置多个摄像头进行同步拍摄
BigDecimal 的正确使用方式
Flir Blackfly S USB3 工业相机:计数器和定时器的使用方法
随机推荐
2022/0524/bookstrap
JVM memory model
Ds-5/rvds4.0 variable initialization error
Zabbix 5.0:通过LLD方式自动化监控阿里云RDS
ROS learning (XX) robot slam function package -- installation and testing of rgbdslam
Blackfly s usb3 industrial camera: buffer processing
Related programming problems of string
ROS学习(24)plugin插件
Flir Blackfly S USB3 工业相机:计数器和定时器的使用方法
AcWing 1140. Shortest network (minimum spanning tree)
ROS学习(十九)机器人SLAM功能包——cartographer
最近小程序开发记录
ROS learning (26) dynamic parameter configuration
【唯一】的“万字配图“ | 讲透【链式存储结构】是什么?
Scenario practice: quickly build wordpress blog system based on function calculation
Baidu flying general BMN timing action positioning framework | data preparation and training guide (Part 1)
sql中批量删除数据---实体中的集合
FLIR blackfly s industrial camera: explanation and configuration of color correction and code setting method
ROS learning (21) robot slam function package -- installation and testing of orbslam
FLIR blackfly s industrial camera: configure multiple cameras for synchronous shooting