javax.servlet.http.HttpServletResponse;API导入报错解决方案

javax.servlet.http.HttpServletResponse;API导入报错解决方案与Postman上传下载文件验证

1. 主要错误:缺少

Servlet API 依赖

错误信息显示 javax.servlet.http 包不存在。这是因为你的项目缺少 Servlet API 依赖。

解决方案:

如果你使用的是 Maven ,在 pom.xml 中添加:

xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

如果你使用的是 Gradle ,在 build.gradle 中添加:

gradle 复制代码
implementation 'org.springframework.boot:spring-boot-starter-web'

2. 缺少的导入

在你的 CsvController.java 文件顶部添加缺少的导入:

java 复制代码
import java.util.Map;
import java.util.HashMap;

3. 完整的修复后的导入部分应该是:

java 复制代码
package com.example.usermanagement.controller;

import com.example.usermanagement.common.Result;
import com.example.usermanagement.entity.User;
import com.example.usermanagement.service.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.HashMap;

4. 如果你使用的是 Spring Boot 3.x

Spring Boot 3.x 使用 Jakarta EE 而不是 Java EE,所以需要将 javax 改为 jakarta

java 复制代码
// 将这行
import javax.servlet.http.HttpServletResponse;

// 改为
import jakarta.servlet.http.HttpServletResponse;

5. 验证步骤

  1. 添加依赖后,刷新/重新加载你的项目
  2. 如果使用 IntelliJ IDEA,点击 Maven/Gradle 工具窗口的刷新按钮
  3. 重新构建项目

1. 准备测试 CSV 文件

首先创建一个测试用的 CSV 文件(例如:test_users.csv),内容格式如下:

csv 复制代码
ID,用户名,密码,邮箱,手机号,状态,分数,创建时间,更新时间
1,testuser1,password123,test1@example.com,13800138001,1,85,2025-01-01 10:00:00,2025-01-01 10:00:00
2,testuser2,password456,test2@example.com,13800138002,1,90,2025-01-01 11:00:00,2025-01-01 11:00:00
3,newuser1,password789,new1@example.com,13800138003,1,75,2025-01-01 12:00:00,2025-01-01 12:00:00

2. Postman 设置步骤

步骤 1:创建新请求

  • 打开 Postman
  • 点击 "New" → "Request"
  • 设置请求方法为 POST
  • URL 设置为:http://localhost:8080/api/csv/import

步骤 2:设置请求体

  1. 选择 Body 标签
  2. 选择 form-data 选项
  3. 添加一个键值对:
    • Key:file(注意要与代码中的 @RequestParam("file") 保持一致)
    • 在 Key 右侧的下拉菜单中选择 File(而不是 Text)
    • Value:点击 "Select Files" 选择你准备好的 CSV 文件

步骤 3:发送请求

点击 "Send" 按钮发送请求

3. 预期响应

成功导入后,你应该收到类似这样的响应:

json 复制代码
{
    "code": 200,
    "message": "成功",
    "data": {
        "successCount": 3,
        "errorCount": 0,
        "errors": []
    }
}

4. 测试不同场景

测试场景 1:正常导入

使用上面的标准 CSV 文件

测试场景 2:更新现有用户

创建一个包含已存在用户名的 CSV:

csv 复制代码
ID,用户名,密码,邮箱,手机号,状态,分数,创建时间,更新时间
1,testuser1,newpassword,newemail@example.com,13900139001,1,95,2025-01-01 10:00:00,2025-01-01 10:00:00

测试场景 3:错误数据

测试包含错误数据的 CSV:

csv 复制代码
ID,用户名,密码,邮箱,手机号,状态,分数,创建时间,更新时间
1,testuser1,password123,test1@example.com,13800138001,1,abc,2025-01-01 10:00:00,2025-01-01 10:00:00
2,testuser2,password456,test2@example.com,13800138002

预期响应会包含错误信息:

json 复制代码
{
    "code": 200,
    "message": "成功",
    "data": {
        "successCount": 0,
        "errorCount": 2,
        "errors": [
            "第2行:For input string: \"abc\"",
            "第3行:字段不足"
        ]
    }
}

5. Postman 截图说明

在 Postman 中应该是这样的:

复制代码
POST  http://localhost:8080/api/csv/import

Body:
[x] form-data
    KEY         VALUE
    file        [Select Files] test_users.csv

6. 注意事项

  1. 确保文件编码是 UTF-8
  2. CSV 文件的第一行必须是表头(会被跳过)
  3. 用户名字段用于判断是更新还是新增
  4. 状态和分数字段必须是数字
  5. 日期格式必须匹配代码中的格式
相关推荐
sheepwjl27 分钟前
《嵌入式硬件(三):串口通信》
网络·嵌入式硬件·网络协议·串口通信
noravinsc28 分钟前
RPC和HTTP的区别?
网络协议·http·rpc
XMYX-04 小时前
解决 Apache/WAF SSL 证书链不完整导致的 PKIX path building failed 问题
网络协议·apache·ssl
XXYBMOOO4 小时前
Qt UDP 通信类详解与实现
开发语言·网络·c++·qt·网络协议·ui·udp
dog2504 小时前
乐观并发: TCP 与编程实践
网络·网络协议·tcp/ip
melonbo8 小时前
c++工程如何提供http服务接口
c++·http
计算机毕设定制辅导-无忧学长8 小时前
MQTT 认证与授权机制实践(二)
网络协议
Jayyih11 小时前
嵌入式系统学习Day30(udp)
网络协议·学习·udp
张3蜂11 小时前
CI/CD流水线驱动自动化流程深度解析:选型、竞品、成本与资源消耗
servlet·ci/cd·自动化
耐达讯通信技术11 小时前
耐达讯自动化RS485与Profinet双向奔赴,伺服驱动器连接“稳稳拿捏”
运维·人工智能·物联网·网络协议·自动化·信息与通信