我正在创建一个简单的Web应用程序。我需要在该类中引用ServletContext对象。我怎么能得到它?
答案 0 :(得分:15)
最好将它作为参数传递给对象的构造函数,或者使用setter方法设置它。
实际上,您可以获取与对象相关的context属性,并仅通过constructor / setter传递它。例如:
YourClass obj =
new YourClass((AnotherClass) servletContext.getAttribute("yourAttribute"));
更糟糕,更复杂的选择是:
ServletContextListener
<listener><listener-class></listener-class></listener>
contextInitialized(..)
从事件中获取ServletContext
并将其存储在单例中 - 一个静态字段。或者,您可以使用ServletRequestListener
对每个请求执行此操作,并将其存储在ThreadLocal
中。
然后你可以通过调用你的singleton / threadlocal持有者来获得这个值:
ServletContextHolder.getCurrentServletContext()
答案 1 :(得分:0)
我有这个问题,但是因为我从JSP调用了类,所以我只是传递了HttpServletRequest&#34;请求&#34;从JSP引用到类并在类中调用:
String appPath = request.getServletContext().getRealPath("");