0

我有一个带有 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");
    }
}
4

1 回答 1

0

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

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

于 2013-03-19T22:49:43.997 回答