17

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

<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

5 回答 5

19

我遇到了同样的问题。我曾经queryParams解决它:

request.queryParams("userName")
于 2015-09-10T01:02:50.783 回答
4

只是为了记录,我遇到了类似的问题,这就是我解决它的方法。

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

MultipartConfigElement multipartConfigElement = new MultipartConfigElement(path);

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

你可以在这里找到详细信息SparkJava: Upload file did not work in Spark java framework

正确完成此操作后,您应该能够使用Stephan 提到的查询参数访问数据。

于 2016-06-24T01:20:01.010 回答
3

我认为您需要使用request.params("userName")which 将为您提供带有名称的参数列表userName

于 2015-03-28T00:31:09.833 回答
1

正如Java 文档所说,

如果参数数据是在请求正文中发送的,例如发生在 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);
}
于 2019-10-21T04:34:06.017 回答
-3

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

于 2015-12-18T00:02:08.023 回答