springboot控制层的部分语法

news/2025/2/8 12:49:45/文章来源:https://www.cnblogs.com/rglwx/p/18704027

在Spring Boot中,控制层(Controller)是MVC架构中的重要组成部分,主要用于处理用户的HTTP请求,并将请求转发到业务层(Service)进行处理。以下是Spring Boot控制层中常用的语法和相关注解:

  1. @Controller 和 @RestController
    @Controller:用于定义一个普通的控制器类,通常用于返回视图页面(如HTML页面)。在使用@Controller时,需要配合Model或ModelAndView来返回视图。
    java复制
    @Controller
    public class MyController {
    @RequestMapping("/hello")
    public String hello(Model model) {
    model.addAttribute("message", "Hello, World!");
    return "hello"; // 返回视图名称
    }
    }
    @RestController:用于定义一个返回JSON或XML数据的控制器类。它是一个组合注解,相当于@Controller + @ResponseBody,通常用于构建RESTful API。
    java复制
    @RestController
    public class MyRestController {
    @RequestMapping("/hello")
    public String hello() {
    return "Hello, World!";
    }
    }
  2. @RequestMapping
    用于定义请求的映射规则,可以指定请求的URL路径、请求方法(GET、POST、PUT、DELETE等)、请求头、请求参数等。
    java复制
    @RequestMapping(value = "/user", method = RequestMethod.GET)
    public String getUser() {
    return "User Data";
    }
    常用的快捷注解:
    @GetMapping:等同于@RequestMapping(method = RequestMethod.GET)。
    java复制
    @GetMapping("/user")
    public String getUser() {
    return "User Data";
    }
    @PostMapping:等同于@RequestMapping(method = RequestMethod.POST)。
    java复制
    @PostMapping("/user")
    public String createUser() {
    return "User Created";
    }
    @PutMapping:等同于@RequestMapping(method = RequestMethod.PUT)。
    java复制
    @PutMapping("/user")
    public String updateUser() {
    return "User Updated";
    }
    @DeleteMapping:等同于@RequestMapping(method = RequestMethod.DELETE)。
    java复制
    @DeleteMapping("/user")
    public String deleteUser() {
    return "User Deleted";
    }
  3. @RequestParam
    用于绑定请求参数到方法的参数上。
    java复制
    @GetMapping("/user")
    public String getUser(@RequestParam String name, @RequestParam int age) {
    return "Name: " + name + ", Age: " + age;
    }
    如果参数是可选的,可以设置required = false,并提供默认值:
    java复制
    @GetMapping("/user")
    public String getUser(@RequestParam(required = false, defaultValue = "Guest") String name) {
    return "Name: " + name;
    }
  4. @PathVariable
    用于绑定URL中的占位符到方法的参数上。
    java复制
    @GetMapping("/user/{id}")
    public String getUserById(@PathVariable("id") int userId) {
    return "User ID: " + userId;
    }
  5. @RequestBody
    用于接收请求体中的JSON或XML数据,并将其自动转换为Java对象。
    java复制
    @PostMapping("/user")
    public String createUser(@RequestBody User user) {
    return "User Name: " + user.getName() + ", Age: " + user.getAge();
    }
  6. @ResponseBody
    用于将方法的返回值直接作为响应体返回给客户端。通常与@Controller一起使用。
    java复制
    @Controller
    public class MyController {
    @RequestMapping("/hello")
    @ResponseBody
    public String hello() {
    return "Hello, World!";
    }
    }
  7. @RequestHeader
    用于获取请求头中的信息。
    java复制
    @GetMapping("/user")
    public String getUser(@RequestHeader("User-Agent") String userAgent) {
    return "User Agent: " + userAgent;
    }
  8. @RequestPart
    用于接收Multipart请求中的文件或数据。
    java复制
    @PostMapping("/upload")
    public String uploadFile(@RequestPart("file") MultipartFile file) {
    return "File uploaded: " + file.getOriginalFilename();
    }
  9. @ResponseStatus
    用于指定方法的HTTP状态码。
    java复制
    @GetMapping("/error")
    @ResponseStatus(HttpStatus.NOT_FOUND)
    public String handleError() {
    return "Error Page";
    }
  10. @ExceptionHandler
    用于定义全局异常处理器,捕获并处理特定类型的异常。
    java复制
    @ControllerAdvice
    public class GlobalExceptionHandler {
    @ExceptionHandler(Exception.class)
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public String handleException(Exception e) {
    return "Error: " + e.getMessage();
    }
    }
    这些注解和语法是Spring Boot控制层开发中常用的工具,通过合理使用它们,可以方便地处理各种HTTP请求和响应。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/880783.html

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

相关文章

前端开发的未来:可视化编程时代来临

在数字化转型的浪潮中,前端开发领域正在经历一场深刻的变革。可视化编程这一曾经被视为"玩具"的开发方式,正以惊人的速度崛起,成为前端开发的主流趋势。在这场变革中,Joker可视化编程平台凭借其创新的设计理念和强大的技术实力,正引领着这场前端开发的革命。 J…

【deepseek】完全离线部署deepseek并建立本地知识库应用电子数据取证领域

之前小谢推出一篇部署本地大模型教程,但需要网络环境 AI机器人本地免费部署(部署Llama 3.1详细教程) 还是比较受到读者的欢迎,但应读者要求:需要这个模型能够训练,能够结合电子数据取证方向且行业内有些数据是不对外公开的,又因为有些机子是没办法连接外网的。 所以完全…

[知识管理/技术调研] 开源的Markdown笔记APP

开源Markdown笔记APP 以下是一些开源的Markdown笔记应用,适合不同平台和需求:Joplin / Obsidian / Standard Notes / Mark Text / Zettlr / Notable / Boostnote / Logseq / Typora / VNote1. Joplin平台: Windows, macOS, Linux, iOS, Android 特点:支持端到端加密 可同步到…

使用 clang-format 为 Keil 配置格式化代码功能

安装 clang-format clang-format 是 LLVM 项目的一部分,因此首先需要安装 LLVM。官网下载速度较慢,可以去清华源下载: 最新版下载链接:LLVM-binary 根据操作系统下载对应的版本,如果是 Windows 点击 LLVM-xxxx-win64.exe 即可下载,其中 xxxx 是版本号,此链接保证为最新版…

P10507 Georgia and Bob 题解

P10507 Georgia and Bob 题解 题目链接 题目大意 一个一行的棋盘,棋盘上有 \(n\) 个棋子,两人轮流选择一枚棋子向左移动若干格(会被其他棋子阻拦),询问谁必赢。 解题思路 显然为博弈论。注意到对于两个相邻(指棋子,不是位置)的棋子,若先手移动了左边的棋子若干格,后手…

货梯人形识别摄像机

货梯人形识别摄像机广泛应用于各类商业建筑、物流中心、大型工厂及购物中心等场所。用于实时监测货梯,提高作业效率和安全性。此外,在大型活动现场,如展览会或会议中心,该技术也可用于控制客流量,保障活动顺利进行。随着科技的发展,未来的货梯人形识别摄像机将越来越智能…

CTFShow-Web164-165:图片二次渲染绕过

CTFShow-Web164-165:图片二次渲染绕过 这两题都是图片二次渲染绕过类型,Web164是png,Web165是jpg 常见的二次渲染绕过可以参考:https://j7ur8.github.io/WebBook/PHP/二次渲染绕过.html 🛠️ Web164 WriteUp运行脚本覆盖掉原来图片的内容,制作图片码 from PIL import Im…

Volcano v1.11发布,显著提升AI训练与推理任务的性能

本次更新聚焦AI与大数据的核心需求,推出网络拓扑感知调度、多集群AI作业调度等重磅特性,显著提升AI训练与推理任务的性能。摘要:本次更新聚焦AI与大数据的核心需求,推出网络拓扑感知调度、多集群AI作业调度等重磅特性,显著提升AI训练与推理任务的性能。本文分享自华为云社…

FreeBSD安装FAMP环境

相比于Linux,FreeBSD少了很多面板和一键脚本,自己折腾了一下,记录一下。 配置:VPS一台系统:FreeBSD 14.1SSH工具:MobaXterm 1.更新系统pkg update && pkg upgrade -y 2.安装Apache搜索最新版Apachepkg search apache安装最新版Apachepkg install -y apache24设置…

本地部署 DeepSeek-R1-内部知识库

本地部署 DeepSeek-R1-内部知识库本地部署 DeepSeek-R1-内部知识库环境准备1. 确认系统要求2. 安装 Homebrew一. 安装ollama和启动服务1.1 安装 ollama1.2 启动服务1.3 拉取模型并运行二.运行DeepSeek-R1-集成web页面2.1 运行模型2.2 安装Openweb-UI 界面环境准备 1. 确认系统要…

vscode编写javascript代码时ctrl和f12等快捷键失效

提供一种可能性,由于vscode内置扩展@builtin typescript-language-features被关闭导致无法上下文感知跳转。将其重新启用即可

allegro每次保存时都说提示覆盖原图

保存文件时提示,一般新装的软件才会有这个提示 我们改下设置就不会再弹出这个提示了 Setuo-User Preferences,然后在工具栏搜索Savedb点击搜素,如下图复选框里打勾就行