我使用的是 Tomcat 6,它使用 Servlet 2.5。 Servlet 3.0 的 ServletRequest
API 中提供了一个方法,它提供与 ServletRequest
关联的 ServletContext
对象的句柄。使用 Servlet 2.5 API 时,有没有办法从 ServletRequest
获取 ServletContext
对象?
请您参考如下方法:
您可以通过 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();
// ...
}