JavaWeb--ServletContext
https://www.jianshu.com/p/31d27181d542
起因是我想要获取一个相对路径,需要用到servletContext的getRealPath()方法,于是上网搜索,找到两种方法来获取ServletContext.
方法1:第一种方法是这样的:
ServletActionContext.getServletContext();
或者ServletContext servletContext= req.getServletContext();其中req是一个HttpServletRequest对象。
上述两种方法第一种局限于Struts中使用,且两种方法只有在发生web请求的时候才能获取到ServletContext对象。
方法2:WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();
ServletContext servletContext = webApplicationContext.getServletContext();
这种方法通过spring容器来获取servletContext对象,是可以获取到的。其实是因为web项目在启动的时候,将WebApplicationContext作为属性注入到ServletContext的同时,也保留了对ServletContext的引用。
ServletContext、HttpSession、HttpServletRequest三者域属性空间范围对比
https://blog.csdn.net/w_linux/article/details/79770990
request < session < sevelet
所以 知道了 request 就可以获取他所属的 session ,同样 session 可以获取他所在的 sevelet。
所以,怎样获取request是很关键的。之前有一篇就是说这个的。
(获取httpservletRequest对象)
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
.getRequestAttributes()).getRequest();
网上说的基本都是这一种方法。这句代码比较重要