在 Java 中接收 HTTP 请求,常见做法取决于你是写服务端还是接收别人主动发来的请求。下面按最常见场景给你一个清晰总结。
@RestController
public class TestController {
// 接收 GET 请求
@GetMapping("/hello")
public String hello() {
return "Hello HTTP";
}
// 接收 POST 请求(接收 JSON)
@PostMapping("/user")
public String user(@RequestBody User user) {
return "接收到用户:" + user.getName();
}
}
public class User {
private String name;
// getter / setter
}
✅ 支持:
启动后访问:
http://localhost:8080/hello
@Controller
public class DemoController {
@RequestMapping("/test")
@ResponseBody
public String test(HttpServletRequest request) {
String param = request.getParameter("a");
return "param = " + param;
}
}
@WebServlet("/demo")
public class DemoServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
String name = req.getParameter("name");
resp.getWriter().write("Hello " + name);
}
}
适合:
ServerSocket serverSocket = new ServerSocket(8080);
Socket socket = serverSocket.accept();
⚠️ 需要自己解析 HTTP 协议,非常麻烦。
如果你是被动接收别人发来的 HTTP 请求,那你一定是服务端(上面已经讲完)。
如果你是主动接收 HTTP 响应,那是发送请求,例如:
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.build();
HttpResponse<String> response =
client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
| 方式 | 推荐度 | 场景 |
|---|---|---|
| Spring Boot | ⭐⭐⭐⭐⭐ | 企业开发 |
| Spring MVC | ⭐⭐⭐⭐ | 传统 Web |
| Servlet | ⭐⭐⭐ | 基础学习 |
| ServerSocket | ⭐ | 学习 HTTP |
为了给你更精准的示例,可以告诉我:
我可以直接给你可运行代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。