当缺少路径信息时,通配符路径映射/ A / *应返回404,如/ A.

时间:2015-08-15 06:02:33

标签: servlets wildcard url-pattern pathinfo

我是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。

任何帮助都将非常感谢。

1 个答案:

答案 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)
}