0

我想要一个将用于直接指向 JSP 的 URL 映射到 servlet,但我的努力到目前为止 - 将以下 url 模式映射到我的 servlet...

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

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

4

1 回答 1

2

如果您的 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>

于 2011-09-02T22:15:01.920 回答