javax.servlet.http.HttpServletResponse;API导入报错解决方案与Postman上传下载文件验证
1. 主要错误:缺少
Servlet API 依赖
错误信息显示 javax.servlet.http
包不存在。这是因为你的项目缺少 Servlet API 依赖。
解决方案:
如果你使用的是 Maven,在 pom.xml
中添加:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
如果你使用的是 Gradle,在 build.gradle
中添加:
implementation 'org.springframework.boot:spring-boot-starter-web'
2. 缺少的导入
在你的 CsvController.java
文件顶部添加缺少的导入:
import java.util.Map;
import java.util.HashMap;
3. 完整的修复后的导入部分应该是:
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
:
// 将这行
import javax.servlet.http.HttpServletResponse;// 改为
import jakarta.servlet.http.HttpServletResponse;
5. 验证步骤
- 添加依赖后,刷新/重新加载你的项目
- 如果使用 IntelliJ IDEA,点击 Maven/Gradle 工具窗口的刷新按钮
- 重新构建项目
1. 准备测试 CSV 文件
首先创建一个测试用的 CSV 文件(例如:test_users.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:设置请求体
- 选择 Body 标签
- 选择 form-data 选项
- 添加一个键值对:
- Key:
file
(注意要与代码中的@RequestParam("file")
保持一致) - 在 Key 右侧的下拉菜单中选择 File(而不是 Text)
- Value:点击 “Select Files” 选择你准备好的 CSV 文件
- Key:
步骤 3:发送请求
点击 “Send” 按钮发送请求
3. 预期响应
成功导入后,你应该收到类似这样的响应:
{"code": 200,"message": "成功","data": {"successCount": 3,"errorCount": 0,"errors": []}
}
4. 测试不同场景
测试场景 1:正常导入
使用上面的标准 CSV 文件
测试场景 2:更新现有用户
创建一个包含已存在用户名的 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:
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
预期响应会包含错误信息:
{"code": 200,"message": "成功","data": {"successCount": 0,"errorCount": 2,"errors": ["第2行:For input string: \"abc\"","第3行:字段不足"]}
}
5. Postman 截图说明
在 Postman 中应该是这样的:
POST http://localhost:8080/api/csv/importBody:
[x] form-dataKEY VALUEfile [Select Files] test_users.csv
6. 注意事项
- 确保文件编码是 UTF-8
- CSV 文件的第一行必须是表头(会被跳过)
- 用户名字段用于判断是更新还是新增
- 状态和分数字段必须是数字
- 日期格式必须匹配代码中的格式