gpt4 book ai didi

java - Servlet @WebServlet urlPatterns

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:14:18 24 4
gpt4 key购买 nike

这是一个简短的问题,但我找不到快速的答案。现在我有一个 Servlet BaseServlet,当用户请求以下任何 url 时:

host
host/
host/BaseServlet

它应该始终引用同一个 servlet 并重定向到主页。

当我设置

@WebServlet({"/BaseServlet", ""})

只有

host/
host/BaseServlet

作品

如果我设置

@WebServlet({"/BaseServlet", "", "/"})

BaseServlet 会在循环中不断被请求...

为什么?

编辑:BaseServlet 转发到隐藏在 WEB-INF 文件夹中的 index.html,仅此而已。

getServletContext().getRequestDispatcher("/WEB-INF/index.html").forward(request,response);

servlet 规范说“仅包含/字符的字符串表示应用程序的“默认”servlet。”所以我希望 BaseServlet 成为我的默认设置。为什么它不起作用?

最佳答案

  1. 如您在 Q 中所述,如果您需要以下内容:

    host/
    host/BaseServlet

    使用

    @WebServlet({"/BaseServlet", ""})
  2. 如果您想要以下内容:

    host

    将此添加到您的欢迎文件(您不能使用注释指定欢迎文件)

    <welcome-file-list>
    <welcome-file>/BaseServlet</welcome-file>
    </welcome-file-list>
  3. The servlet spec says "A string containing only the '/' character indicates the "default" servlet of the application."

    但是后面直接说了

    In this case the servlet path is the request URI minus the context path and the path info is null.

    换句话说,如果您的网址是

    host

    那么servlet路径就是

    "" (empty string)

    因此您将需要一个欢迎文件列表(但 webapp 目录中的 index.htm[l] 和 index.jsp,而不是 WEB-INF,被隐式包含为起始欢迎文件列表)

关于java - Servlet @WebServlet urlPatterns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16578694/

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