当前位置: 首页 > news >正文

springboot创建请求处理 - 指南

springboot创建请求处理

在这里插入图片描述

Spring Boot创建请求处理详细步骤

1. 创建Spring Boot项目

使用Spring Initializr创建基础项目:

  • 访问 https://start.spring.io
  • 选择:
    • Maven/Gradle
    • Java语言
    • Spring Boot版本(推荐3.x)
  • 添加依赖:
    Spring Web
    Spring Boot DevTools (可选)
2. 项目结构准备

创建标准目录:

src
├── main
│   ├── java
│   │   └── com.example.demo
│   │       ├── controller  // 控制器目录
│   │       ├── service     // 服务层目录
│   │       └── DemoApplication.java // 启动类
│   └── resources
│       └── application.properties
3. 创建控制器

controller包中创建请求处理类:

import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api")
public class DemoController
{
// GET请求处理
@GetMapping("/hello")
public String hello() {
return "Hello, Spring Boot!";
}
// POST请求处理
@PostMapping("/user")
public String createUser(@RequestBody User user) {
return "User created: " + user.getName();
}
// 带路径参数的处理
@GetMapping("/user/{id}")
public String getUser(@PathVariable Long id) {
return "User ID: " + id;
}
// 带查询参数的处理
@GetMapping("/search")
public String search(@RequestParam String keyword) {
return "Searching for: " + keyword;
}
}
// DTO类
class User
{
private String name;
private String email;
// getters/setters
}
4. 配置请求参数处理

常见参数处理方式:

// 路径变量
@GetMapping("/product/{id}")
public String getProduct(@PathVariable("id") String productId) {
...
}
// 请求参数
@GetMapping("/filter")
public String filter(@RequestParam("category") String cat) {
...
}
// 请求体
@PostMapping("/save")
public ResponseEntity<
?> saveData(@RequestBody DataDTO data) {
...
}
// 请求头
@GetMapping("/header")
public String getHeader(@RequestHeader("User-Agent") String agent) {
...
}
5. 配置全局异常处理

创建异常处理器:

@ControllerAdvice
public class GlobalExceptionHandler
{
@ExceptionHandler(Exception.class)
public ResponseEntity<
String> handleException(Exception e) {
return ResponseEntity.status(500).body("Error: " + e.getMessage());
}
@ExceptionHandler(ResourceNotFoundException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public ErrorResponse handleNotFound(ResourceNotFoundException ex) {
return new ErrorResponse(ex.getMessage(), 404);
}
}
6. 配置请求验证

在DTO中添加验证注解:

public class UserDTO
{
@NotBlank(message = "Name cannot be empty")
private String name;
@Email(message = "Invalid email format")
private String email;
}

在控制器中启用验证:

@PostMapping("/register")
public ResponseEntity<
?> registerUser(@Valid @RequestBody UserDTO user) {
// 处理逻辑
}
7. 配置静态资源处理

application.properties中添加:

# 静态资源路径
spring.web.resources.static-locations=classpath:/static/
# 文件上传限制
spring.servlet.multipart.max-file-size=10MB
8. 运行与测试
  1. 启动主类DemoApplication
  2. 测试接口:
    # GET测试
    curl http://localhost:8080/api/hello
    # POST测试
    curl -X POST -H "Content-Type: application/json" \
    -d '{"name":"John", "email":"john@example.com"}' \
    http://localhost:8080/api/user
9. 进阶配置

application.properties中添加常用配置:

# 修改端口
server.port=9090
# 上下文路径
server.servlet.context-path=/demo
# 开启HTTP/2
server.http2.enabled=true
# 跨域配置
spring.mvc.cors.allowed-origins=*
10. 使用Swagger文档化

添加依赖:

<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.3.0</version>
</dependency>
http://www.zskr.cn/news/8411.html

相关文章:

  • Mapper.xml与数据库进行映射的sql语言注意事项
  • 深入解析:人工智能学习:什么是LSTM模型
  • RabbitMQ 幂等性, 顺序性 和 消息积压 - 详解
  • resultMap和自定义映射结果形式(ResultMapManage)以及ResultMap Vs ResultType
  • 嵌入式设备不能正常上网问题
  • 2、论文固定模板(背景过度结尾)
  • gin: 静态文件
  • 详细介绍:【论文精读】基于YOLOv3算法的高速公路火灾检测
  • 产品设计
  • 实用指南:人工智能学习:Transformer结构中的编码器层(Encoder Layer)
  • Java03课前问题列表
  • PION 游击
  • 神经网络构成框架-理论学习 - 指南
  • Web3 开发者修炼全图谱:从 Web2 走向 Web3 的实用的系统性学习指南
  • Java 注解 - 实践
  • 安规对变压器的绝缘系统要求
  • 实用指南:GitHub 热榜项目 - 日榜(2025-09-09)
  • 1967
  • 地平线明年发布并争取量产舱驾一体芯片;比亚迪补强智舱团队,斑马智行原 CTO 加入
  • 在AI技术快速实现功能的时代,挖掘新需求成为关键突破点——某知名游戏资源分析工具需求洞察
  • 【光照】[漫反射]UnityURP兰伯特有光照衰减吗?
  • 手把手带你从零开始实现一个编译器
  • Python-Pathlib库
  • global 设置内核源码在线浏览
  • 牛客周赛 Round 108 CDEF题解
  • [LeetCode] 3484. Design Spreadsheet
  • Redis的使用问题
  • 设计模式(C++)详解—单例模式(2) - 指南
  • lc1032-字符流
  • C++小白修仙记_LeetCode刷题_哈希表