繁体   English   中英

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

[英]How do i get ServletContext object in a simple class file?

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

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

实际上,您可以获取与对象相关的上下文属性,并仅通过构造函数/ setter传递它。 例如:

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

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

  1. 创建一个ServletContextListener
  2. 使用<listener><listener-class></listener-class></listener>在web.xml中注册它
  3. on contextInitialized(..)从事件中获取ServletContext并将其存储在单例中 - 静态字段somehwere。

或者,您可以使用ServletRequestListener在每个请求上执行此操作,并将其存储在ThreadLocal

然后你可以通过调用你的singleton / threadlocal持有者获得这个值,如下所示:

ServletContextHolder.getCurrentServletContext()

我有这个问题,但是因为我从JSP调用了类,所以我只是将JSP中的HttpServletRequest“request”引用传递给了类,并在类中调用了:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM