繁体   English   中英

JSP / Servlet获取表单数据

[英]JSP/Servlet getting post form data

我有一个从Map <String,Double> map创建的JSP,该映射在不同请求上可能具有不同的值。

JSP显示:

key --> Mutable input field with value for that key

通过遍历地图元素。 在表单的底部,我有一个提交按钮,该按钮调用(POST)一个servlet,该servlet更新地图中的所有值。

由于不知道参数名称,我该如何从发布请求中获取参数的可变列表?

现在,我正在考虑执行以下操作(使用伪代码并忽略格式异常):

    Map params = request.getParameterMap();
    Set<Entry<String, Double>> set = params.entrySet();
    Iterator<Entry<String, Double>> it = set.iterator();

    while (it.hasNext()) {
        Entry<String, Double> e = it.next();
        if (map.containsKey(e.getKey()));
            map.put(e.getKey(), e.getValue());
    }

有没有更快或更佳的方法来从servlet中的jsp获取动态数据?

我不知道它是更快还是更好,但是您可以将映射转换为JSON,然后将该字符串作为单个参数传递回servlet,而不必检索参数映射。 然后,在您的Servlet中,您可以将参数字符串加载到JSON Array或其他内容中,然后对其进行迭代。

我认为这是一种更好的方法的原因是,这样您将来就可以将更多参数传递给servlet,而不必在while循环中放入条件以将其不视为Entry集。

    //Create array 
    Map map = new LinkedHashMap();
    JSONArray jArray = new JSONArray();

    map.put("id", "asdf");
    map.put("name", "bbbdasfadsbb");
    map.put("address", "sadfasdfasdf");
    map.put("phone", "asdfdsafsdf");
    map.put("details", "asdasdf");
    map.put("randomText", "sdafasdfs");

    jArray.put(map);

    //You can write this string out to a hidden field
    //called mapAsJSONArray
    String mapAsJSONArray = jArray.toJSONString();

    //.......
    //Then in your servlet....   
    String mapAsJSONArray = request.getParameter("mapAsJSONArray");
    JSONArray jsonArray = new JSONArray(mapAsJSONArray);

    for (int i = 0; i < jsonArray.length(); ++i) {
        JSONObject obj = jsonArray.getJSONObject(i);
        String id = obj.getString("id");
        // ...
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM