这是一个快速的问题,但我找不到快速的答案。
现在我有一个Servlet BaseServlet,
当用户请求以下任何网址时:
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成为我的默认设置。为什么不起作用?
最佳答案
host/
host/BaseServlet
用
@WebServlet({"/BaseServlet", ""})
host
将此添加到您的欢迎文件中(您不能使用批注指定欢迎文件)
<welcome-file-list>
<welcome-file>/BaseServlet</welcome-file>
</welcome-file-list>
但事后直接说
换句话说,如果您的网址是
host
那么servlet路径将是
"" (empty string)
因此,您将需要一个欢迎文件列表(但作为初始欢迎文件列表隐式包含了webapp目录中的index.htm [l]和index.jsp而不是WEB-INF)
关于java - Servlet @WebServlet urlPatterns,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16578694/