gpt4 book ai didi

java - 使用/* servlet 映射将 jsp 的内容包含在 servlet 中

转载 作者:太空宇宙 更新时间:2023-11-04 13:03:24 26 4
gpt4 key购买 nike

这与 question 几乎相同但该解决方案不适用于我的 servlet 映射。

假设我有一个映射到 /* 的 servlet,因此所有请求都会分派(dispatch)到该 servlet。现在,对于某些请求,我想包含 JSP 页面 WEB-INF/mypage.jsp
规范的解决方案是使用 RequestDispatcher 并包含 JSP 页面:

@WebServlet(value = "/*")
public class MyServlet extends HttpServlet
{
private RequestDispatcher dispatcher_;

public void init() throws ServletException {
dispatcher_ = getServletContext().getRequestDispatcher("/WEB-INF/mypage.jsp");
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
// include the jsp page for some requests
dispatcher_.include(request, response);
}
}

不幸的是,由于 JSP servlet 的映射 /* 优先于映射 *.jsp,因此调度会路由到 MyServlet,从而导致无限递归

请注意,如果 servlet 被映射为默认 servlet(使用映射 /),则不会发生此调度问题。不幸的是,在我的特殊情况下,我无法使用默认的 servlet 映射。

那么还有其他方法可以将 JSP 页面包含在用 /* 映射的 servlet 中吗?

最佳答案

  1. 以“/”字符开头并以“/*”后缀结尾的字符串用于路径映射。
  2. 以“*”开头的字符串。前缀用作扩展映射。
  3. 仅包含“/”字符的字符串表示应用程序的“默认”servlet。在本例中,servlet 路径是请求 URI 减去上下文路径,并且路径信息为 null。
  4. 所有其他字符串仅用于精确匹配。

关于java - 使用/* servlet 映射将 jsp 的内容包含在 servlet 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34719857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com