【问题标题】:How can I map a url-pattern ending .jsp to a servlet?如何将 .jsp 结尾的 url 模式映射到 servlet?
【发布时间】:2011-11-09 12:24:50
【问题描述】:

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

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

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

【问题讨论】:

  • 您应该发布 web.xml 文件的其余部分以提供更多上下文。你的servlet被调用了吗?您使用的是哪个 servlet 引擎?

标签: java jsp servlets url-pattern


【解决方案1】:

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

如果由于某种原因不能重命名目标 JSP 文件,那么最好的办法是将 servlet 映射到不同的 URL 模式,例如 /foo 并创建一个映射到 /folder/*filter(或任何匹配的请求 URL(s)最接近的),然后确定 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>

【讨论】:

    猜你喜欢
    • 2015-07-17
    • 2011-05-12
    • 2017-03-27
    • 2011-02-24
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    相关资源
    最近更新 更多