我想要一个将用于直接指向 JSP 的 URL 映射到 servlet,但我的努力到目前为止 - 将以下 url 模式映射到我的 servlet...
<url-pattern>/folder/myoldjsp.jsp</url-pattern>
失败,导致向客户端返回 JSP 处理错误。如何将 URL 结尾映射.jsp
到我的 servlet?
我想要一个将用于直接指向 JSP 的 URL 映射到 servlet,但我的努力到目前为止 - 将以下 url 模式映射到我的 servlet...
<url-pattern>/folder/myoldjsp.jsp</url-pattern>
失败,导致向客户端返回 JSP 处理错误。如何将 URL 结尾映射.jsp
到我的 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 文件名配置为 filter <init-param>
。