Зачем мне нужен HttpSession для получения ServletContext? - PullRequest
5 голосов
/ 21 октября 2011

В API сервлетов Java единственный способ получить ServletContext - это экземпляр HttpSession ( Javadoc ).

Что делать, если я не хочусоздать сеанс и нужен только контекст сервлета?Другими словами, почему в классе HttpServletRequest нет метода getServletContext()?

EDIT

Я знаю, что могу получить ServletContext из сервлетасам, так как он получает его во время своей инициализации.Однако я не могу получить его только из HttpServletRequest, даже если он связан с сервлетом.Так что, если у меня есть запрос, но нет ссылки на какой-либо сервлет?

Ответы [ 3 ]

8 голосов
/ 21 октября 2011

getServletContext() является частью GenericServlet, который является родительским классом для HttpServlet, поэтому вы должны иметь возможность вызывать его в своей реализации сервлета.

Редактировать:

HttpServletRequest наследует getServletContext() от ServletRequest, начиная с servlet 3.0 , так что, похоже, вам придется передавать контекст вместе собъекты запроса и ответа, если вам нужно использовать версию до 3.0.

3 голосов
/ 21 октября 2011

Просто у каждого объекта, работающего с запросами (серверы, фильтры, страницы), есть свой getServletContext (или init())

1 голос
/ 21 октября 2011

В вашем классе сервлетов есть метод getServletContext (), вам не нужно переходить к запросу.

Это имеет смысл, сам сервлет имеет контекст, предоставленный контейнером, он не зависит от какого-либо конкретного запроса.

...