You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JSP页面重载后Java JSONArray重复添加元素问题排查

问题原因与解决方案

核心问题

你的JSONArray array是全局/类成员变量,而非每次请求时创建的局部变量。当页面重载发起新请求时,程序没有清空旧数组,而是直接在原有数据的基础上追加新查询到的内容,导致数据重复累加。

修复方案

将JSONArray的声明移到查询方法内部,确保每次请求都创建一个全新的数组实例,避免复用旧数据:

// 每次调用方法时,新建JSONArray实例
JSONArray array = new JSONArray();

// 执行数据库查询及循环
try (ResultSet rs = ...) {
    while (rs.next()) {
        JSONObject record = new JSONObject();
        record.put("eventName", rs.getInt("id"));
        record.put("calendar", rs.getString("tool"));
        record.put("color", color);
        record.put("eventTime", rs.getString("datestart").replace("T", " "));
        array.add(record);
    }
}

关键说明

如果array是类的成员变量(比如DAO类的属性),在Web应用中DAO实例通常是单例模式,会被多个请求复用,旧数据不会自动清空。改成方法内的局部变量后,每次请求都会重新初始化数组,自然不会出现重复追加的问题。

额外检查点

  • 确认是否存在缓存逻辑错误,比如误将新旧数组合并后返回
  • 排查前端是否发起了重复请求,但从现象看后端数组复用的可能性更高

内容的提问来源于stack exchange,提问作者Ionut Apostu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 19:57:40