Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why do I need an HttpSession to get the ServletContext?

In the Java Servlet API, the only way to get the ServletContext is through an instance of HttpSession (Javadoc).

What if I don't want to create a session and only need the servlet context? In other words, why is there no getServletContext() method in the HttpServletRequest class?

EDIT

I know I can get the ServletContext from the servlet itself, since it receives it during its initialization. However, I cannot get it from a HttpServletRequest alone, even though it's linked to a servlet. So what if I have a request, but no reference to any servlet?

like image 823
Laurent Pireyn Avatar asked Oct 21 '11 08:10

Laurent Pireyn


2 Answers

getServletContext() is part of GenericServlet which is the parent class for HttpServlet so you should be able to call it in your servlet implementation.

Edit:

HttpServletRequest inherits getServletContext() from ServletRequest since servlet 3.0, so it looks like you will have to pass a context along with the request and response objects if you have to use a version prior to 3.0.

like image 162
rsp Avatar answered Nov 02 '22 23:11

rsp


It's just that every entity working with requests (servers, filters, pages) has its own getServletContext (or init())

like image 42
alf Avatar answered Nov 02 '22 22:11

alf