[b]Springmvc中在controller注入request会有线程安全问题吗[/b]
1.通过@Autowire注入的HttpServletRequest只是一个“空壳”,真正的对象是在被访问到的时候才会从线程中取得的。
2.注入的request对象 是HttpServletRequest类的一个实例, 重复多次http请求,发现这个对象的id始终不变
3.但当我们获取设置里面的值时,会通过一个拦截器SpringExtUtil获取得到当前线程关联的 ”ServletRequestAttributes“对象,而获取到的。
4.所以这个是不会因为不同请求改变里面的值面引起线程安全问题的。
5.可以理解为每个请求的HttpServletRequest都是一个与线程关联的实例化。
参考原文:[url]https://my.oschina.net/sluggarddd/blog/678603?fromerr=XhvpvVTi[/url]
参考原文:[url]http://www.th7.cn/Program/java/201503/420240.shtml[/url]
public String other(Locale locale, Principal principal)
java.util.Locale:得到当前请求的本地化信息,默认等价于ServletRequest.getLocale(),如果配置LocaleResolver解析器则由它决定Locale,后续介绍;
java.security.Principal:该主体对象包含了验证通过的用户信息,等价于HttpServletRequest.getUserPrincipal()。
这些都是spring MVC实现的,自定义的参数要使用request的get参数方法才能得到
[url]http://jinnianshilongnian.iteye.com/blog/1698916[/url]
@Controller
public class AController{
@Autowire
HttpServletRequest request;
@RequestMapping("/test")
public Result test(){
System.out.println(request.toString());
request.getHeader("uid");
}
}
1.通过@Autowire注入的HttpServletRequest只是一个“空壳”,真正的对象是在被访问到的时候才会从线程中取得的。
2.注入的request对象 是HttpServletRequest类的一个实例, 重复多次http请求,发现这个对象的id始终不变
3.但当我们获取设置里面的值时,会通过一个拦截器SpringExtUtil获取得到当前线程关联的 ”ServletRequestAttributes“对象,而获取到的。
4.所以这个是不会因为不同请求改变里面的值面引起线程安全问题的。
5.可以理解为每个请求的HttpServletRequest都是一个与线程关联的实例化。
参考原文:[url]https://my.oschina.net/sluggarddd/blog/678603?fromerr=XhvpvVTi[/url]
参考原文:[url]http://www.th7.cn/Program/java/201503/420240.shtml[/url]
public String other(Locale locale, Principal principal)
java.util.Locale:得到当前请求的本地化信息,默认等价于ServletRequest.getLocale(),如果配置LocaleResolver解析器则由它决定Locale,后续介绍;
java.security.Principal:该主体对象包含了验证通过的用户信息,等价于HttpServletRequest.getUserPrincipal()。
这些都是spring MVC实现的,自定义的参数要使用request的get参数方法才能得到
[url]http://jinnianshilongnian.iteye.com/blog/1698916[/url]