如何设置请求是否来自移动设备的标记,以便可以在该位置的任何位置使用该标记来处理特定请求。我一开始只能访问HttpServletRequest,而又不想将其传递给调用方法?
最佳答案
您可以使用包含ThreadLocal的Context对象以及静态访问方法来存储此类信息:
public class Context {
private ThreadLocal<Map<String, String>> ctx = new ThreadLocal<>();
// initialize it properly
public static void set(String key, String value) {
ctx.get().put(key, value);
}
public static String get(String key) {
return ctx.get().get(key);
}
}
@GetMapping(...)
public void handle(HttpServletrequest req) {
String agent = determineAgent(req);
Context.set("agent", agent);
}
现在,您可以通过
Context.get("agent")
从代码的任何位置访问上下文。重要说明:处理完每个请求后,请清洁ThreadLocal。当线程将处理另一个请求时,这些值将保持不变!
关于java - 存储请求标记并在以后针对特定请求使用它吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58623025/