为什么URL正在改变

时间:2015-12-06 16:34:20

标签: java java-ee

我有一个像这样的简单servlet:

@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private final String userID = "root";
    private final String password = "root";

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
            RequestDispatcher rd = getServletContext().getRequestDispatcher("/login.html");
            rd.include(request, response);
    }
}

我也有login.html

<!DOCTYPE html>
<html>
<head>
<meta charset="US-ASCII">
<title>Login Page</title>
</head>
<body>
    <form action="LoginServlet" method="post">
    Username: <input type="text" name="user">
    <br>
    Password: <input type="password" name="pwd">
    <br>
    <input type="submit" value="Login">
    </form>
</body>
</html>

在浏览器中,我启动了我的应用http://localhost:8080/LoginCookie/,浏览器显示了login.html。然后我点击&#34;登录&#34;按钮和网址正在更改为http://localhost:8080/LoginCookie/LoginServlet

如何禁用它?

2 个答案:

答案 0 :(得分:1)

而不是包含您的HTML,而不是重定向到您的login.html

考虑使用

response.sendRedirect("login.html");

而不是rd.include()

重定向有一个很好的副作用,重新加载页面将重新加载login.html而不是再次触发你的servlet。

答案 1 :(得分:0)

如果您想留在同一页面上,请将action属性留空form标记

<form action="" method="post">

但是,您必须确保Servlet将收到您的formLoginServlet将不再收到表单请求,它将使用您当前位置的URL发送给Servlet mappend。因此,您必须让Servlet接收此信息。