我是Servlets的新手。我正在尝试使用通配符(*)映射网址,但它的工作方式与我的预期不符。
这是我的servlet类。
@WebServlet(urlPatterns = {"/A/*"})
public class TestServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().write("Working...");
}
}
上述servlet适用于 example.com/A 和 example.com/A/car 。 我想只为第二个选项 example.com/A/whatEver 使用servlet。我怎么能这样做?
简单地说:我只想在 example.com/A 之后的任何内容中使用servlet。
任何帮助都将非常感谢。
答案 0 :(得分:2)
当HttpServletResponse#sendError()
为空或SC_NOT_FOUND
(404)或HttpServletRequest#getPathInfo()
为/
时,只需使用empty调用equals。
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String pathInfo = request.getPathInfo();
if (pathInfo == null || pathInfo.isEmpty() || pathInfo.equals("/")) {
response.sendError(HttpServletResponse.SC_NOT_FOUND);
return;
}
// ... (continue)
}