Servlet 仅针对默认切换情况调用

Servlet is invoked only for the default switch case

这里,当 url 模式是“/Login/new”时,servlet 不会被调用,我通过打印到 console.It 来验证它仅适用于“/Login”的默认情况“

@WebServlet("/Login")
public class UserServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    private UserDAO userDAO;
    
    public void init()
    {
        userDAO = new UserDAO();
    }
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        System.out.println("Servlet invoked !!");
        String action = request.getServletPath();
        System.out.println(action);
        switch(action)
        {
        case "/new":
            showNewForm(request,response);
            break;  
        case "/insert":
            insertUser(request, response);
            break;
        case "/update":
            updateUser(request, response);
            break;
        case "/delete":
            deleteUser(request, response);
            break;
        case "/edit":
            showEditForm(request, response);
            break;
        case "/login":
            RequestDispatcher dispatcher= request.getRequestDispatcher("/login.jsp");
            dispatcher.forward(request, response);
            
            
            
        default:
            //listUser(request,response);
            showLogin(request,response);
            break;
        
        
        }

“/Login”的输出:[

“/Login/new”的输出:

期望的输出是“/new”案例中的函数应该是called.What我错过了吗?

更新路径如下

@WebServlet("/Login/*")

,并尝试检查您是否正在检索 URL 路径的最后一部分以及后面的小写字母

String action = request.getRequestURI();
action = action.substring(action.lastIndexOf("/")).toLowerCase();