servlet 是否支持 urls 如下:
/xyz/{value}/test
其中 value 可以替换为文本或数字。
如何在 web.xml 中映射它?
最佳答案
Servlet API 不支持使用 URL 模式通配符 *
在映射的中间。它只允许通配符 *
像这样映射到底/prefix/*
或者像这样在映射的开始 *.suffix
.
使用标准允许的 URL 模式语法,最好的办法是将其映射到 /xyz/*
并使用 HttpServletRequest#getPathInfo()
提取路径信息.
所以,给定一个 <url-pattern>/xyz/*</url-pattern>
,这是一个基本的启动示例,如何提取路径信息,省略了空检查和数组索引越界检查:
String pathInfo = request.getPathInfo(); // /{value}/test
String[] pathParts = pathInfo.split("/");
String part1 = pathParts[1]; // {value}
String part2 = pathParts[2]; // test
// ...
如果你想要更细粒度的控制,比如使用 Apache HTTPD 的 mod_rewrite
,那么你可以看看Tuckey's URL rewrite filter或 homegrow your own URL rewrite filter .
关于servlets - servlet和路径参数如/xyz/{value}/test,如何在web.xml中映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8715474/