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

java, servlets

Solution

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:

- Create a `ServletContextListener`

- register it in web.xml with `<listener><listener-class></listener-class></listener>`

- on `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()

Problem

I am creating a simple web application. I need to get reference to ServletContext object in that class. How can i get it?

Original source