可以在任意位置调用下面的代码获取当前的request
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
HttpSession session = request.getSession();
//应用程序在电脑上的真实的硬盘路径
session.getServletContext().getRealPath("/");
//应用程序的访问路径,http://xxxx.xx/这种
request.getScheme()+"://"+request.getServerName()+":" +request.getServerPort()+request.getContextPath();
注:当前请求的request是从抽象类FrameworkServlet
的processRequest
方法中放进去的
其实从spring mvc中,也可以使用依赖注入的方式获取当前请求的request,比如下面的代码
@Autowired
private HttpServletRequest request;
这样每次在方法中使用request,都会获取到当前请求的request,这是使用ObjectFactory实现的,具体实现在
WebApplicationContextUtils.registerWebApplicationScopes(beanFactory, this.servletContext)
这个位置