I am creating a simple web application. I need to get reference to ServletContext object in that class. How can i get it?
You'd better pass it as argument to the constructor of your object, or set it using a setter method.
In fact, you may obtain the context attribute that is relevant to your object and pass only it via constructor/setter. For example:
YourClass obj =
new YourClass((AnotherClass) servletContext.getAttribute("yourAttribute"));
A much worse and more complication option is to:
ServletContextListener
<listener><listener-class></listener-class></listener>
contextInitialized(..)
get the ServletContext
from the event and store it in a singleton - a static field somehwere.Alternatively, you can do this on each request, using a ServletRequestListener
and store it in a ThreadLocal
instead.
Then you can obtain the value via calling your singleton/threadlocal holder like this:
ServletContextHolder.getCurrentServletContext()
I had this issue, but since I had called the class from a JSP, I simply passed the HttpServletRequest "request" reference from the JSP to the class and made the call in the class to:
String appPath = request.getServletContext().getRealPath("");