如何从Servlet 2.5中的ServletRequest获取Servlet上下文?

时间:2012-05-16 15:18:03

标签: servlets

我使用的是使用Servlet 2.5的Tomcat 6。 Servlet 3.0中的ServletRequest API中提供了一种方法,该方法提供了与ServletContext相关联的ServletRequest对象的句柄。有没有办法在使用Servlet 2.5 API时从ServletContext获取ServletRequest对象?

1 个答案:

答案 0 :(得分:80)

您可以通过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();
    // ...
}