springbootweb案例,出现访问 http://localhost:8080/list 一直处于浏览器运转阶段

让我检查一下修改后的代码是否正确应用,以及是否还有其他问题。

**已查看文件** *UserDaoImpl.java*

我看到代码还没有修改!第 27 行仍然是 `System.in`,这就是问题所在。

**请按照以下步骤操作:**

1. 修改 UserDaoImpl.java

将第 27 行的 `System.in` 改为 `in`:

```java

// ... existing code ...

public class UserDaoImpl implements UserDao {

@Override

public List<String> findAll() {

InputStream in = this.getClass().getClassLoader().getResourceAsStream("user.txt");

// 之前代码自动生成了System.in,会等待控制台输入,如果没有输入,就会一直等待

ArrayList<String> lines = IoUtil.readLines(in, StandardCharsets.UTF_8, new ArrayList<>());

return lines;

}

}

```

**关键修改:第 27 行从 `System.in` 改为 `in`**

2. 同时修改 UserController.java

移除手动创建对象的代码,让 Spring 自动注入:

```java

package com.itheima.controller;

import com.itheima.pojo.User;

import com.itheima.service.UserService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController

public class UserController {

@Autowired

private UserService userService;

@RequestMapping("/list")

public List<User> list() throws Exception {

List<User> userList = userService.findAll();

return userList;

}

}

```

3. 为 UserServiceImpl 添加 @Service 注解

```java

package com.itheima.service.impl;

import com.itheima.dao.UserDao;

import com.itheima.dao.impl.UserDaoImpl;

import com.itheima.pojo.User;

import com.itheima.service.UserService;

import org.springframework.stereotype.Service;

import java.time.LocalDateTime;

import java.time.format.DateTimeFormatter;

import java.util.List;

import java.util.stream.Collectors;

@Service

public class UserServiceImpl implements UserService {

private UserDao userDao = new UserDaoImpl();

@Override

public List<User> findAll() {

List<String> lines = userDao.findAll();

List<User> userList = lines.stream().map(line -> {

String\[\] parts = line.split(",");

Integer id = Integer.parseInt(parts0);

String username = parts1;

String password = parts2;

String name = parts3;

Integer age = Integer.parseInt(parts4);

LocalDateTime updateTime = LocalDateTime.parse(parts5, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

return new User(id, username, password, name, age, updateTime);

}).collect(Collectors.toList());

return userList;

}

}

```

4. 重启应用

修改完成后:

  1. **停止**当前运行的应用

  2. **重新编译**项目(IDEA 中点击 Build → Rebuild Project)

  3. **重新启动** SpringBootWeb01Application

  4. 访问 `http://localhost:8080/list\`


**问题原因总结:**

  • `System.in` 是标准输入流,会一直等待控制台输入,导致请求阻塞

  • 应该使用 `in`(文件输入流)来读取 user.txt 文件的内容

修改后就能正常访问了!

相关推荐
唐青枫15 小时前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
一个做软件开发的牛马16 小时前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户37215742613516 小时前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java
用户37215742613516 小时前
Java 打印 Word 文档:从基础打印到高级设置
java
用户3521802454751 天前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程
东坡白菜1 天前
破局全栈:一个前端开发的Java入门实战记录(1)
java·全栈
唐青枫1 天前
Java Tomcat 实战指南:从 Servlet 容器到 Spring Boot 部署
java
wsaaaqqq1 天前
roudan:自由选择实体、灵活操作数据、快速写入数据库的 Java 框架
java
霜落长河2 天前
抛弃TCP改用UDP,HTTP3怎么了?
http
plainGeekDev2 天前
null 判断 → Kotlin 可空类型
android·java·kotlin