我想将一个过去直接指向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>
。