传递给URL的参数不起作用

时间:2016-02-08 14:28:12

标签: java servlets

当我在表单中输入值时,它会相应地通过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");
    }
}

2 个答案:

答案 0 :(得分:2)

您的servlet只处理POST请求。

输入类似

的网址时
http://localhost:8080/sessiondemo/index.html?user=wronguser&pass=wrongpass

或将HTML表单中的方法设置为GET,您正在生成GET请求。

要处理GET请求,您还需要覆盖HttpServlet.doGetHttpServlet-service

您在doPost方法中使用的代码适用于GET请求。

更新:

您的servlet已注册路径/processlogin.cgi,因此要测试您需要输入的浏览器的GET调用

http://localhost:8080/sessiondemo/processlogin.cgi?user=wronguser&pass=wrongpass

答案 1 :(得分:2)

如果url参数在等式中并且你以这种形式startSPME()检索它们,那么你应该在get / overriding get方法中工作,这就是你要尝试的请求类型产生

话虽如此,这里有更多的见解:

How are parameters sent in an HTTP POST request?