我最近开始用java编程,并且已经尝试了一些JSP开发。我正在尝试创建一个使用POST方法将数据传输到servlet的登录页面。这是我的代码:
<form method="POST" name ="loginForm" action="userAuth">
<input type="hidden" name="userAction" value="login">
Username: <input type="text" name="txtUsername"> <br>
Password : <input type="password" name="txtPassword">
<br><input type="submit" value="Login">
</form>
以上代码来自初始登录页面。
以下代码来自userAuth.java文件。
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
String userAction = request.getParameter("userAction");
if (userAction.equals("Login")) {
String userName = request.getParameter("txtUsername");
String passWord = request.getParameter("txtPassword");
if (userName.equals("hello") && passWord.equals("hello")) {
response.sendRedirect("Homepage.jsp");
}
}
}
我遇到的问题是,当我输入正确的用户名和密码时,不会执行doPost方法,因此不会发生任何重定向。而只执行ProcessRequest方法,只显示初始模板到Web浏览器。
提前谢谢。
P.S我正在使用Apache Tomcat 8.0.27.0
答案 0 :(得分:2)
我已经解决了这个问题......
问题在于以下一行
<input type="hidden" name="userAction" value="**login**">
以及第二个块中的后续处理:
if (userAction.equals("**Login**")) {}
登录值没有大写的L。
刚改变了这一点。
答案 1 :(得分:0)
processRequest()方法有什么作用?如果按照您的说法执行,则服务器会向客户端发出响应,而剩余的代码块不会执行。你试过没有这个功能吗?
答案 2 :(得分:0)
隐藏流程请求方法。
像这样:
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//processRequest(request, response);
String userAction = request.getParameter("userAction");
if (userAction.equals("Login")) {
String userName = request.getParameter("txtUsername");
String passWord = request.getParameter("txtPassword");
}
}