如何将url模式结尾的.jsp映射到servlet



我想将一个过去直接指向JSP的URL映射到servlet,但是我目前的努力——将以下URL模式映射到我的servlet……

<url-pattern>/folder/myoldjsp.jsp</url-pattern>

失败,导致JSP处理错误返回给客户端。如何将以.jsp结尾的URL映射到servlet?

如果您的servlet没有依次将请求转发给相关的JSP,则应该可以正常工作。这将导致无限调度循环,因为servlet本身将在RequestDispatcher#forward()调用上再次执行。

如果由于某种原因不能重命名目标JSP文件,那么您最好的选择是将servlet映射到不同的URL模式(如/foo)上,并创建映射到/folder/*(或与请求URL最接近的任何匹配)上的过滤器,这反过来确定HttpServletRequest#getRequestURI()是否以/myoldjsp.jsp结束,然后将请求转发给servlet。

if (((HttpServletRequest) request).getRequestURI().endsWith("/myoldjsp.jsp")) {
    request.getRequestDispatcher("/foo").forward(request, response);
} else {
    chain.doFilter(request, response);
}

默认情况下,不会对转发的请求调用过滤器。如果需要,您可以将JSP文件名配置为过滤器<init-param>

最新更新