我有一个像这样的简单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。
如何禁用它?
答案 0 :(得分:1)
而不是包含您的HTML,而不是重定向到您的login.html
考虑使用
response.sendRedirect("login.html");
而不是rd.include()
重定向有一个很好的副作用,重新加载页面将重新加载login.html而不是再次触发你的servlet。
答案 1 :(得分:0)
如果您想留在同一页面上,请将action
属性留空form
标记
<form action="" method="post">
但是,您必须确保Servlet
将收到您的form
。 LoginServlet
将不再收到表单请求,它将使用您当前位置的URL发送给Servlet mappend。因此,您必须让Servlet接收此信息。