如何实现返回含userName的String ArrayList且响应码为200?
如何实现返回包含userName的String类型ArrayList且响应状态码为200
没问题,我来给你详细拆解这个需求的实现方案,下面以最常用的Spring Boot框架为例(这是后端开发中最普遍的场景),同时也补充原生Servlet的实现方式供你参考:
1. Spring Boot 实现方案(推荐)
1.1 准备依赖
首先确保你的Spring Boot项目引入了spring-boot-starter-web依赖,它会帮我们自动处理HTTP请求和响应的序列化/反序列化:
<!-- Maven pom.xml 中的依赖配置 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
1.2 编写控制器接口
创建一个RestController,直接返回ArrayList<String>即可——Spring Boot默认会把这个列表序列化为JSON格式,并且默认返回200状态码,完全符合你的需求:
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; @RestController public class UserNameController { @GetMapping("/get-usernames") public List<String> getUserNameList() { // 这里可以替换为从数据库/缓存获取真实数据的逻辑 ArrayList<String> userNameList = new ArrayList<>(); userNameList.add("john_doe"); userNameList.add("jane_smith"); userNameList.add("bob_johnson"); // 直接返回列表,Spring自动处理响应 return userNameList; } }
1.3 显式指定200状态码(可选)
虽然默认就是200,但如果你想显式声明状态码(增强代码可读性),可以添加@ResponseStatus注解:
import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; @RestController public class UserNameController { @GetMapping("/get-usernames") @ResponseStatus(HttpStatus.OK) // 显式指定200 OK状态码 public List<String> getUserNameList() { ArrayList<String> userNameList = new ArrayList<>(); userNameList.add("john_doe"); userNameList.add("jane_smith"); userNameList.add("bob_johnson"); return userNameList; } }
1.4 验证效果
启动项目后,访问http://localhost:8080/get-usernames,你会得到类似如下的JSON响应,同时响应状态码为200:
["john_doe","jane_smith","bob_johnson"]
2. 原生Servlet 实现方案
如果你的项目没有使用Spring Boot这类框架,用原生Servlet也能轻松实现:
import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; import com.fasterxml.jackson.databind.ObjectMapper; @WebServlet("/get-usernames") public class UserNameServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 1. 设置响应状态码为200 response.setStatus(HttpServletResponse.SC_OK); // 2. 设置响应内容类型为JSON,编码为UTF-8 response.setContentType("application/json;charset=UTF-8"); // 3. 构造用户名列表 ArrayList<String> userNameList = new ArrayList<>(); userNameList.add("john_doe"); userNameList.add("jane_smith"); userNameList.add("bob_johnson"); // 4. 使用Jackson将列表转为JSON并写入响应流 ObjectMapper objectMapper = new ObjectMapper(); objectMapper.writeValue(response.getWriter(), userNameList); } }
注意:这里需要引入Jackson的依赖来实现对象到JSON的转换,Maven依赖如下:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.15.2</version> </dependency>
内容的提问来源于stack exchange,提问作者Techguy
相关产品推荐
相关产品推荐

