Java servletRequest.setAttribute在doFilter()中是否是线程安全的?
My filter的doFilter在验证用户后执行此操作-Java servletRequest.setAttribute在doFilter()中是否是线程安全的?,java,spring,spring-mvc,servlets,thread-safety,Java,Spring,Spring Mvc,Servlets,Thread Safety,My filter的doFilter在验证用户后执行此操作- servletRequest.setAttribute("user", "someUserName"); 我有一个这样的控制器- @Controller public class SomeController { @RequestMapping(value = "/someURI", method = RequestMethod.GET) @ResponseBody public String someMe
servletRequest.setAttribute("user", "someUserName");
我有一个这样的控制器-
@Controller
public class SomeController {
@RequestMapping(value = "/someURI", method = RequestMethod.GET)
@ResponseBody
public String someMethod(HttpServletRequest httpServletRequest) {
String name = httpServletRequest.getAttribute("user").toString();
System.out.println(name);
return "hello!";
}
}
我的问题是-是否可以保证在我设置用户的位置处理doFilter()
的线程将与调用someMethod
的线程相同?换句话说,这里是否存在安全风险?我担心的是,如果存在线程安全缺陷,则以下行-
httpServletRequest.getAttribute("user")
可能返回不正确的结果Servlet请求
和响应
对象将为每个新的请求
和响应
重新创建,因此就其性质而言,它们是线程安全的。
在上面的代码中,每个请求
都会调用过滤器,而且由于doFilter
使用响应对象(它是线程安全的)来实现其目标,因此过滤器也是线程安全的 Servletrequest
和response
对象会为每个新的请求
和response
重新创建,因此它们本质上是线程安全的。
在上面的代码中,每个请求
都会调用过滤器,而且由于doFilter
使用响应对象(它是线程安全的)来实现其目标,因此过滤器也是线程安全的