springboot创建请求处理 - 指南

news/2025/9/20 10:27:43/文章来源:https://www.cnblogs.com/wzzkaifa/p/19102066

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.mzph.cn/news/908257.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java开发生态的数智化升级:JBoltAI如何重塑企业AI应用架构

Java开发生态的数智化升级:JBoltAI如何重塑企业AI应用架构在国务院《关于深入实施"人工智能+"行动的意见》政策引导下,企业数字化智能化转型步伐加快。AI技术与业务场景的深度融合已成为企业创新的核心引擎…

【深度学习计算机视觉】05:多尺度目标检测 - 实践

【深度学习计算机视觉】05:多尺度目标检测 - 实践2025-09-20 10:24 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; displ…

Mapper.xml与数据库进行映射的sql语言注意事项

Mapper.xml与数据库进行映射的sql语言注意事项//错误 <update id="updateBatch" parameterType="java.util.List"><foreach collection="list" item="item" index=&…

深入解析:人工智能学习:什么是LSTM模型

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

直播软件搭建,如何实现伪分布式平台部署? - 云豹科技

直播软件搭建,如何实现伪分布式平台部署?大数据平台搭建合集–伪分布式平台部署0.更改主机名并配置hosts映射# 更改主机名 hostnamectl set-hostname master # 配置hosts映射 vi /etc/hosts [填当前机器真是ip] mast…

初步研究vivio的互传的备份数据格式

初步研究vivio的互传的备份数据格式一般来说最大的那个文件是apk, 下面是我的分析,先进入db文件夹,找到000003.log 形如下图的就是apk文件。重命名加上.apk就能单独提取,文件名是hash函数计算过的。 形如下图的就是…

完整教程:C#.NetCore NPOI 导出excel 单元格内容换行

完整教程:C#.NetCore NPOI 导出excel 单元格内容换行pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&qu…

resultMap和resultType

resultMap 和 resultType好的,这是一个非常核心的MyBatis面试题和日常开发中的关键知识点。resultMap 和 resultType 都用于指定SQL查询结果的返回类型,但它们的用法和能力有本质区别。 下面我用一个清晰的对比和示例…

RabbitMQ 幂等性, 顺序性 和 消息积压 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

直播软件怎么开发,自适应两栏布局方式 - 云豹科技

直播软件怎么开发,自适应两栏布局方式html结构<body><div class="wrapper"><div class="left"></div><div class="right"></div></div><…

基于SpringBoot的足球论坛系统+论文示例参考 - 指南

基于SpringBoot的足球论坛系统+论文示例参考 - 指南2025-09-20 10:01 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; disp…

resultMap和自定义映射结果形式(ResultMapManage)以及ResultMap Vs ResultType

resultMap和自定义映射结果形式(ResultMapManage)以及ResultMap Vs ResultType<resultMap id="ResultMapManage" type="com.javapandeng.po.Manage"><result property="id" …

嵌入式设备不能正常上网问题

问题描述 设置静态IP和默认网关,设备无法上网。尝试ping baidu.com 也无法ping通 解决方案 1.默认网关IP设置错了 默认网关IP = 路由器IP 当设备在当前的链路中找不到baidu的IP时,会把IP传输到路由器,路由器通过查找…

2、论文固定模板(背景过度结尾)

1、论文字数分配2、以上仅供参考,如有疑问,留言联系

go: 图片文件上传

一,代码 go //上传页面 func (ic *MediaController) Upload(c *gin.Context) {c.HTML(200, "upload.html", nil) }//接收上传,多张图片 func (ic *MediaController) Uploaded(c *gin.Context) {//得到form…

go: 生成缩略图

一,安装第三方库 $ go get -u github.com/disintegration/imaging go: downloading golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8 go: downloading golang.org/x/image v0.31.0 go: added github.com/disi…

git: 报错: fatal: 协议错误:错误的行长度字符串:This 或 fatal: protocol error: bad line length character: This

一,报错信息: fatal: 协议错误:错误的行长度字符串:This 或 fatal: protocol error: bad line length character: This 二,出现的原因: 我修改了git项目的remote地址,是因为gitolite服务换了一台服务器,报错的原…

jquery: Justified gallery

一,官网 官网: https://miromannino.github.io/Justified-Gallery/ github: https://github.com/miromannino/Justified-Gallery二,使用 引入: <link rel="stylesheet" href="/static/justified/j…

安装crmeb

一,官网: https://www.crmeb.com/xiazai 代码站: https://gitee.com/ZhongBangKeJi/CRMEB 安装参考文档地址: https://doc.crmeb.com/single_open/open_v54/20389 二,下载 用git命令下载 $ git clone https://gitee.…

gin: 打包模板文件、静态文件到二进制文件中

一,默认html模板不会打包到二进制文件中 如果二进制文件的当前目录下不包含html模板文件路径,会报错如下 $ ./mediabank [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middlew…