详解Spring Boot中Controller用法

发布时间 - 2026-01-11 01:13:16    点击率:

Controller

Controller是SpringBoot里最基本的组件,他的作用是把用户提交来的请求通过对URL的匹配,分配个不同的接收器,再进行处理,然后向用户返回结果。他的重点就在于如何从HTTP请求中获得信息,提取参数,并分发给不同的处理服务。

基本组成

一个最经典的Controller应该大概长这样:

package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
 * Created by myths on 5/16/17.
 */
@Controller
public class IndexController {
  @RequestMapping(value = {"index", "/"})
  public String index(Model model) {
    return "index";
  }
}

首先应该在类的开头,加上@Controller注解,告知Spring这是一个控制器。

然后在对应的处理函数前面加上@RequestMapping,告知这个函数需要相应的URL。

接着这个函数传入了一个Model类型的参数,这个参数主要是用于向模板传递数据。

该函数最后返回了一个叫”index”的字符串,表示将调用名为”index”的模板,具体名称取决于模板引擎,比如对于jsp他将访问”index.jsp”这个文件,对于thymeleaf,他将访问”index.html”这个文件。

上面的是最简单的用法,实际上有很多细节需要注意,下面就来一一解释。

ResponseBody

如果我们想返回纯字符串而不是渲染后的模板,那我们可以在需要返回字符串的函数前面加上@ResponseBody这个注解;
如果我们像对于整个类都返回字符串,我们也可以在这个类前面加上@ResponseBody注解,或者将@Controller注解换成@RestController,均可。

RequestMapping

基本用法

这个注解是用来告诉Spring,下面的这个函数或者类是用来映射到那个URL的,通常情况下有下面这些选项:

@RequestMapping(
    path = {"/test"},
    params = {"name","userId"},
    method = {RequestMethod.GET},
    consumes = {"text/plain", "application/*"},
    produces = "text/plain",
    headers = "content-type=text/*"
)

我们可以指定这个路径,参数,方法,头信息,来作为一个Controller的入口。当然,通常我们只需要指定path就行了。

作用对象

这个注解可以注解一个函数,也可以注解一个类。当注解一个类时,类中所有的方法都会在这个基础上再进行过滤:

@Controller
@RequestMapping("/path1")
public class TestController {
  @RequestMapping("/path2")
  @ResponseBody
  public String index() {
    return "ok";
  }
}

这个函数就能匹配”/path1/path1”这个地址。

缺省参数

当RequestMapping的参数是空的时候,他就表示匹配剩余所有的页面,实际上也就是匹配所有的404页面。

@Controller
public class IndexController {
  @RequestMapping
  public String index(Model model) {
    return "index";
  }
}

当RequestMapping不指定参数名时,默认就是path参数。

@Controller
public class IndexController {
  @RequestMapping("/index")
  public String index(Model model) {
    return "index";
  }
}

PathVariable

RequestMapping中的path也可以是一个未定的变量,比如下面的代码:

@Controller
public class TestController {
  @RequestMapping("/{variable}")
  @ResponseBody
  public String index(@PathVariable("variable")String variable) {
    return variable;
  }
}

通过花括号我们就可以指定这个变量,并且通过@PathVariable注解得到这个参数,非常方便。

RequestParam

RequestMapping也可以获取类似表单传回的信息形式,比如/index?name=XXX,这个name变量就可以通过RequestParam注解来获得:

@Controller
public class TestController {
  @RequestMapping("/index")
  @ResponseBody
  public String index(@RequestParam(value = "name",required = false,defaultValue = "233")String name) {
    return name;
  }
}

我们可以控制这个参数的名字,是否必须,以及设置默认值,来更好的进行匹配。

RequestBody

RequestBody用来获取Post信息的消息体,只要在参数中通过@RequestBody注解就能得到这个参数:

@Controller
public class TestController {
  @RequestMapping("/index")
  @ResponseBody
  public String index(@RequestBody String body) {
 //对body进行解析即可
    return "success";
  }
}

总结

上面这些大概就是Controller中最基本的用法了,十分的方便清楚。具体的细节可以参考源码中的注释,解释的也是十分详尽了。

以上所述是小编给大家介绍的Spring Boot中Controller用法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对网站的支持!


# spring  # boot  # controller  # 用法  # 在spring-boot工程中添加spring mvc拦截器  # spring-mvc/springboot使用MockMvc对controller进行测试  # SpringBoot集成SpringMVC的方法示例  # Springboot配置suffix指定mvc视图的后缀方法  # 我们可以  # 就能  # 他将  # 小编  # 就可以  # 的是  # 是一个  # 在这个  # 在此  # 有很多  # 他就  # 是用来  # 这是一个  # 给大家  # 均可  # 作为一个  # 只需要  # 就来  # 一个叫  # 表单 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 网站优化排名时,需要考虑哪些问题呢?  Angular 表单中正确绑定输入值以确保提交与验证正常工作  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  jQuery validate插件功能与用法详解  如何在IIS7上新建站点并设置安全权限?  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  如何在 React 中条件性地遍历数组并渲染元素  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  如何在香港服务器上快速搭建免备案网站?  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  Laravel如何记录自定义日志?(Log频道配置)  LinuxCD持续部署教程_自动发布与回滚机制  Python并发异常传播_错误处理解析【教程】  昵图网官网入口 昵图网素材平台官方入口  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  Linux安全能力提升路径_长期防护思维说明【指导】  java获取注册ip实例  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  javascript中的try catch异常捕获机制用法分析  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  Android okhttputils现在进度显示实例代码  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  如何在云主机上快速搭建网站?  如何撰写建站申请书?关键要点有哪些?  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  JavaScript如何实现错误处理_try...catch如何捕获异常?  Android利用动画实现背景逐渐变暗  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  如何在自有机房高效搭建专业网站?  教学论文网站制作软件有哪些,写论文用什么软件 ?  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  浅述节点的创建及常见功能的实现  如何用PHP快速搭建高效网站?分步指南  如何在新浪SAE免费搭建个人博客?  java中使用zxing批量生成二维码立牌  大型企业网站制作流程,做网站需要注册公司吗?  iOS正则表达式验证手机号、邮箱、身份证号等  如何用AI帮你把自己的生活经历写成一个有趣的故事?