Подтвердить что ты не робот

Как получить сервлет-контекст из ServletRequest в Servlet 2.5?

Я использую Tomcat 6, который использует Servlet 2.5. Существует метод, предоставляемый в Servlet 3.0 в API ServletRequest, который предоставляет дескриптор объекта ServletContext, связанного с ServletRequest. Есть ли способ получить объект ServletContext из ServletRequest при использовании Servlet 2.5 API?

4b9b3361

Ответ 1

Вы можете получить его HttpSession#getServletContext().

ServletContext context = request.getSession().getServletContext();

Это может, однако, необоснованно создавать сеанс, когда это нежелательно.

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

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    ServletContext context = getServletContext();
    // ...
}

Или, когда вы уже сидите в экземпляре интерфейса Filter, просто используйте FilterConfig#getServletContext().

private FilterConfig config;

@Override
public void init(FilterConfig config) {
    this.config = config;
}

@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
    ServletContext context = config.getServletContext();
    // ...
}