java - JSP/Servlet 获取表单数据

标签 java html jsp servlets

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

JSP 显示:

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

通过迭代 map 的元素。在表单的底部,我有一个提交按钮,用于调用 (POST) 更新 map 中所有值的 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 数组或其他内容中,然后迭代它。

我认为这是一个更好的方法的原因是因为这样您将来可以将更多参数传递给 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");
        // ...
    }

关于java - JSP/Servlet 获取表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9676500/

相关文章:

java - 屏幕关闭时的 Android 音量按钮监听器

java - 在 Mac 上使用 Java 播放声音

使用 onclick 调用 Javascript 函数

android:textview中的html,链接可点击

java - 特征脸的相关矩阵 - Java

java - 帮助将 Drawed Layout 转换为 MigLayout

html - CSS 定位 : bottom of box right on top of box with hidden overflow

php - 如何开发CRM系统

java - 使用 DashO 进行 war 混淆

java - 如何在Java中获取负载均衡器后面的节点服务器IP