Search code examples
servletswildcardurl-patternpathinfo

Wildcard path mapping /A/* should return 404 when path info is absent like /A


I am new in Servlets. I am trying to map a URL using the wildcard (*), but it's not working the way i expected.

Here is my servlet class.

@WebServlet(urlPatterns = {"/A/*"})
public class TestServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().write("Working...");
    }
}

The above servlet is working for both example.com/A and example.com/A/car. I want to work the servlet only for the the second option which is example.com/A/whatEver. How can i do that ?

In simple: I just want to work the servlet if there's anything after example.com/A.

Any help will greatly appreciated.


Solution

  • Just invoke HttpServletResponse#sendError() with SC_NOT_FOUND (404) when HttpServletRequest#getPathInfo() is null or empty or equals to /.

    @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)
    }