当我在表单中输入值时,它会相应地通过if-else。
但是,当我通过URL传递参数时:
http://localhost:8080/sessiondemo/index.html?user=wronguser&pass=wrongpass
它没有经历任何事情。没有任何println正在执行(甚至不是用户/通过/结束)。它只是回到表格。
我可以知道为什么会这样吗?
<form action = "processlogin.cgi" method = "post">
<p>Username: <input type = "text" name = "user" size = "25"/></p>
<p>Password: <input type = "password" name = "pass" size = "25"/></p>
<input type = "submit" value = "Login"/>
</form>
@WebServlet("/processlogin.cgi")
public class ProcessLoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String user = request.getParameter("user");
String pass = request.getParameter("pass");
System.out.println("User: " + user);
System.out.println("Pass: " + pass);
if(UserManager.isValidUser(user, pass)) {
System.out.println("valid");
} else {
System.out.println("invalid")
}
System.out.println("end");
}
}
答案 0 :(得分:2)
您的servlet只处理POST请求。
输入类似
的网址时http://localhost:8080/sessiondemo/index.html?user=wronguser&pass=wrongpass
或将HTML表单中的方法设置为GET,您正在生成GET请求。
要处理GET请求,您还需要覆盖HttpServlet.doGet
或HttpServlet-service
。
您在doPost
方法中使用的代码适用于GET请求。
更新:
您的servlet已注册路径/processlogin.cgi
,因此要测试您需要输入的浏览器的GET调用
http://localhost:8080/sessiondemo/processlogin.cgi?user=wronguser&pass=wrongpass
答案 1 :(得分:2)
如果url参数在等式中并且你以这种形式startSPME()
检索它们,那么你应该在get / overriding get方法中工作,这就是你要尝试的请求类型产生
话虽如此,这里有更多的见解: