我的servlet注释为:
@WebServlet (name="PageServlet", urlPatterns={"*.zt"})
zt
是我正在使用的文件扩展名。但是,如果我使用
@WebServlet (name="PageServlet", urlPatterns={"/*.zt"})
它与诸如
/app/index.zt
或/app/foo/test.zt
之类的URL不匹配...如何仅匹配根zt
下的/app/
文件? 最佳答案
Servlet容器使用路径映射或扩展映射。您不能将两者结合使用。参见Servlet规范的¶12.2:
路径映射使用以“ /”字符开头并以“ / *”后缀结尾的字符串。
以“ *”开头的字符串用作扩展名映射。
空字符串(“”)是一种特殊的网址格式,它精确地映射到
应用程序的上下文根,即形式为http://host:port/<context- root>/
的请求。在这种情况下,路径信息为“ /”,而servlet路径和上下文路径为空字符串(“”)。
仅包含“ /”字符的字符串表示应用程序的“默认” servlet。在这种情况下,Servlet路径是请求URI减去上下文路径,并且路径信息为null。
所有其他字符串仅用于完全匹配。