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. 日期格式必须匹配代码中的格式
相关推荐
咖啡教室9 小时前
每日一个计算机小知识:ICMP
后端·网络协议
张人玉9 小时前
网络通讯TCP和UDP的区别
网络协议·tcp/ip·udp
咖啡教室9 小时前
每日一个计算机小知识:IGMP
后端·网络协议
musenh9 小时前
servlet入门
servlet
打不了嗝 ᥬ᭄10 小时前
数据链路层
linux·网络·网络协议·http
小李独爱秋15 小时前
计算机网络经典问题透视:什么是NAPT?它有哪些特点?
网络·网络协议·计算机网络·网络安全·智能路由器
wukan88816 小时前
【SMTP】在线配置测试工具,如何配置接口?
git·网络协议·编辑器
Ronin30517 小时前
【Linux网络】应用层协议HTTP
linux·网络·http·应用层协议
早退的程序员18 小时前
记一次 Maven 3.8.3 无法下载 HTTP 仓库依赖的排查历程
java·http·maven
拾忆,想起20 小时前
超时重传 vs 快速重传:TCP双保险如何拯救网络丢包?
java·开发语言·网络·数据库·网络协议·tcp/ip·php