44

我正在使用使用 Servlet 2.5 的 Tomcat 6。Servlet 3.0 的ServletRequestAPI 中提供了一个方法,该方法为ServletContextServletRequest. 有没有办法在使用 Servlet 2.5 API 时获取ServletContext对象?ServletRequest

4

1 回答 1

83

您可以通过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();
    // ...
}
于 2012-05-16T16:45:38.110 回答