JSP / Servlet获取发布表单数据

时间:2012-03-12 23:56:19

标签: java html jsp servlets

我有一个从Map<创建的JSP。字符串,双> map可能在不同请求中具有不同的值。

JSP显示:

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

迭代地图的元素。在表单的底部,我有一个提交按钮,调用(POST)一个更新地图中所有值的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获取动态数据?

1 个答案:

答案 0 :(得分:1)

我不知道它是否更快或更好,但您可以将地图转换为JSON,然后将该字符串作为单个参数传递回您的servlet,而不必检索参数映射。然后在您的servlet中,您可以将参数字符串加载到JSON数组或其他内容中,然后遍历它。

我认为这是一种更好的方法的原因是因为您可以在将来向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");
        // ...
    }
相关问题