Java 登录后的URL映射

Java 登录后的URL映射,java,jsp,servlets,Java,Jsp,Servlets,我有一个URL映射为“/login”的登录servlet,它管理用户输入和登录过程。但是,当用户登录时,网站会指向URL: http://localhost:8080/pilot_1/Login 而不是 http://localhost:8080/pilot_1/checklistallitem 值得一提的是,第一个URL工作正常,它显示了所有数据,但我不确定为什么URL没有按预期显示。下面是我的登录Servlet的doPost方法 protected void doPost(HttpSer

我有一个URL映射为“/login”的登录servlet,它管理用户输入和登录过程。但是,当用户登录时,网站会指向URL:

http://localhost:8080/pilot_1/Login
而不是

http://localhost:8080/pilot_1/checklistallitem
值得一提的是,第一个URL工作正常,它显示了所有数据,但我不确定为什么URL没有按预期显示。下面是我的登录Servlet的doPost方法

protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

    String username = req.getParameter("j_username");
    String password = req.getParameter("j_password");

    if (users.containsKey(username)){
        if ( users.get(username).equals(password)){
            req.getSession().setAttribute("active_window", "Checklist");
            req.getSession().setAttribute("current_team", "allteams");

            getServletContext().getRequestDispatcher("/checklistallteam").forward(req, resp);

        }else{
            JOptionPane.showMessageDialog(null, "Invalid ID or Password");
        }
    }else{
        JOptionPane.showMessageDialog(null, "Invalid ID or Password");
    }
}

这就是重定向和转发之间的区别。当您使用dispatcher转发请求时,解析和处理发生在服务器端,然后将最终响应返回给调用客户端。另一方面,当您发出重定向时,会有一个对客户端的中间响应,基本上告诉它-“调用另一个URL来完成请求”。作为一个副作用,客户端将知道新资源的URL,并将更新位置栏以反映它


因为转发是完全在服务器端处理的,所以客户端位置栏中的URL不会更改。

您将Swing与servlet混合在一起做什么?另外,查看OK也很有意义。谢谢然而,现在我面临着一个我非常困惑的问题。调用正确URL所需的URL是“localhost:8080/pilot\u 1/checklistalItem”。但是,当我使用resp.sendRedirect(“/checklistallteam”)时,我会被转发到URL“localhost:8080/checklistalItem”,当我使用resp.sendRedirect(“pilot_1/checklistallteam”)时,我会被转发到URL“localhost:8080/pilot_1/pilot_1/checklistalItem”@naddnan-使用第一种形式,不带前导正斜杠。谢谢。你的解释真的很有帮助。