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



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

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

最新更新