【问题标题】:How to get data from POST-form with spark java?如何使用 spark java 从 POST-form 获取数据?
【发布时间】:2015-11-18 11:36:48
【问题描述】:

我对所有这些东西都很陌生,但希望你们能帮助我了解它是如何工作的。我得到了一个带有 field 的表格。我如何从客户端获取数据?正在寻找一些信息,但找不到。

<form action="/login" method="POST">
    <fieldset>
        <legend>MemberId</legend>
        <div class="form-group">
            <div class="row colbox">
                <div class="col-lg-4 col-sm-4">
                    <label for="txt_memberid" class="control-label">MemberId</label>
                </div>
                <div class="col-lg-8 col-sm-8">
                    <input class="form-control" id="txt_memberid" name="txt_memberid" placeholder="MemberId" type="text" value="" />
                    <span class="text-danger"></span>
                </div>
            </div>
        </div>

        <legend>Login</legend>
        <div class="form-group">
            <div class="row colbox">
                <div class="col-lg-4 col-sm-4">
                    <label for="txt_username" class="control-label">Username</label>
                </div>
                <div class="col-lg-8 col-sm-8">
                    <input class="form-control" id="txt_username" name="txt_username" placeholder="Username" type="text" value="" />
                    <span class="text-danger"></span>
                </div>
            </div>
        </div>

        <div class="form-group">
            <div class="row colbox">
                <div class="col-lg-4 col-sm-4">
                    <label for="txt_password" class="control-label">Password</label>
                </div>
                <div class="col-lg-8 col-sm-8">
                    <input class="form-control" id="txt_password" name="txt_password" placeholder="Password" type="password" value="" />
                    <span class="text-danger"></span>
                </div>
            </div>
        </div>

        <div class="form-group">
            <div class="col-lg-12 col-sm-12 text-center">
                <input id="btn_login" name="btn_login" type="submit" class="btn btn-default" value="Login" />
                <input id="btn_cancel" name="btn_cancel" type="reset" class="btn btn-default" value="Cancel" />
            </div>
        </div>
    </fieldset>

    get("/login", (request, response) -> {
        ConsoleLog.consoleLog(log, request);
        HashMap model = new HashMap();
        model.put("content", new VelocityTemplateEngine().render(new ModelAndView(new HashMap(),"templates/form_login.vtl")));
        return new ModelAndView(model, "templates/base.vtl");
    }, new VelocityTemplateEngine());

    post("/login", (request, response) -> {
        ConsoleLog.consoleLog(log, request);
        Integer memberId = -1;
        String username = "";
        String password = "";
        try {
            username = request.queryParams("txt_username");
            password = request.queryParams("txt_password");
            memberId = new Integer(request.queryParams("txt_memberid"));
        } catch (Exception e) {}
        log.info("MemberId="+memberId+" UserName="+username+" Password="+password);
        if (new MemberDAO().isAuth(new Auth(username,password,memberId))) {
            request.session(true);
            request.session().attribute("txt_memberid", memberId);
            request.session().attribute("txt_username", username);
        }
        return "process";
    });

如果我发送表单 (method=get) - 一切正常 request.queryParams(XXXX) 如果我发送表单(method=post) - 在 request.queryParams - 什么都没有

也许有人知道我应该在 POST 请求中做什么?

【问题讨论】:

    标签: spark-java


    【解决方案1】:

    可能有很多问题。 Java 代码、HTML 标记或其他任何内容中可能存在错误。在不知道任何其他信息的情况下,最好的办法是尝试试错法来调试问题所在。

    但是,在尝试之前,您可以做的第一件事就是打印出表单的 post 发送给您的确切内容:

    post("/login", (request, response) -> {
        System.out.println(request.body());
        ...
    

    如果它什么也没打印出来,那么客户端什么也没给你发送,所以问题就在视图中。

    如果它打印出一个字符串,例如txt_username=john&amp;txt_password=pass,那么客户端正在向您发送数据,所以您真正需要做的就是从中提取数据使用request object's methods provided by Spark。因此,要进行调试,请使用上述试错法:

    post("/login", (request, response) -> {
        System.out.println(request.contentType()); // What type of data am I sending?
        System.out.println(request.params()); // What are the params sent?
        System.out.println(request.raw()); // What's the raw data sent?
        // etc ...
    

    【讨论】:

      猜你喜欢
      • 2021-08-07
      • 2015-10-18
      • 2015-06-01
      • 1970-01-01
      • 2017-06-15
      • 2019-03-14
      • 2018-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多