如何使用spark java从表单中获取数据?

时间:2015-03-28 00:01:55

标签: java post spark-java

我对所有这些事情都很陌生,但希望你们能帮我理解它是如何运作的。 我有一个带字段的表格。我如何从客户端获取数据?正在寻找一些信息,但无法找到。

<form action="Dispatcher" method="post">
    <fieldset>
        <p>Name</p>
        <input type="text" name="userName" required="true">

        <p>Email</p>
        <input type="text" name="userEmail" required="true">
        <input type="submit" value="submit">
    </fieldset>
</form>

4 个答案:

答案 0 :(得分:4)

仅仅为了记录,我遇到了类似的问题,这就是我如何解决它。

由于它是一个多部分请求,您必须指定

MultipartConfigElement multipartConfigElement = new MultipartConfigElement(path);

req.raw().setAttribute("org.eclipse.jetty.multipartConfig", multipartConfigElement);

您可以在SparkJava: Upload file did't work in Spark java framework

找到详细信息

一旦正确完成,你应该能够像提到Stephan那样access the data using query params

答案 1 :(得分:3)

我认为您需要使用request.params("userName"),它会为您提供名称为userName

提交的参数列表

答案 2 :(得分:0)

正如Java doc所说,

  

如果参数数据是在请求正文中发送的(例如HTTP POST请求中发生的情况),则直接通过getInputStream()或getReader()读取正文会干扰此方法的执行。

因此,request.queryParams("userName")在调用request.body()之后将无法工作(例如,用于记录)。我写了一个实用程序函数来获取参数。

public static String getParameter(String body, String param) {
    HashMap<String, String> params = new HashMap();
    for (String s : body.split("&")) {
        String[] kv = s.split("=");
        params.put(kv[0], kv[1]);
    }
    String encoded = params.get(param);
    return URLDecoder.decode(encoded, StandardCharsets.UTF_8);
}

答案 3 :(得分:-3)

我认为您最好使用像AngularJS或JQuery这样的js框架将表单数据转换为json,然后再将其发送到服务器。