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

最佳答案

您可以通过 HttpSession#getServletContext() 获得它。

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

但是,这可能会在不需要时不必要地创建 session 。

但是,当您已经坐在 HttpServlet 类的实例中时,只需使用继承的 GenericServlet#getServletContext() 方法。
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    ServletContext context = getServletContext();
    // ...
}

或者,当您已经坐在 Filter 接口(interface)的实例中时,只需使用 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();
    // ...
}

关于servlets - 如何从Servlet 2.5中的ServletRequest获取Servlet上下文?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10621580/

10-10 03:50