我使用的是使用Servlet 2.5的Tomcat 6。 Servlet 3.0中的ServletRequest
API中提供了一种方法,该方法提供了与ServletContext
相关联的ServletRequest
对象的句柄。有没有办法在使用Servlet 2.5 API时从ServletContext
获取ServletRequest
对象?
答案 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();
// ...
}