如何在简单的类文件中获取ServletContext对象?

时间:2010-04-28 11:12:53

标签: java servlets

我正在创建一个简单的Web应用程序。我需要在该类中引用ServletContext对象。我怎么能得到它?

2 个答案:

答案 0 :(得分:15)

最好将它作为参数传递给对象的构造函数,或者使用setter方法设置它。

实际上,您可以获取与对象相关的context属性,并仅通过constructor / setter传递它。例如:

YourClass obj = 
    new YourClass((AnotherClass) servletContext.getAttribute("yourAttribute"));

更糟糕,更复杂的选择是:

  1. 创建ServletContextListener
  2. 使用<listener><listener-class></listener-class></listener>
  3. 在web.xml中注册
  4. on contextInitialized(..)从事件中获取ServletContext并将其存储在单例中 - 一个静态字段。
  5. 或者,您可以使用ServletRequestListener对每个请求执行此操作,并将其存储在ThreadLocal中。

    然后你可以通过调用你的singleton / threadlocal持有者来获得这个值:

    ServletContextHolder.getCurrentServletContext()
    

答案 1 :(得分:0)

我有这个问题,但是因为我从JSP调用了类,所以我只是传递了HttpServletRequest&#34;请求&#34;从JSP引用到类并在类中调用:

String appPath = request.getServletContext().getRealPath("");