起因是我想要獲取一個相對路徑,需要用到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的引用。