控制器定义
控制器
springboot的控制器一般放在 com.company.demo.controller 包下,但它其实不依靠目录,而依靠注解。
也就是说你其实可以把类放在任意一个位置,只要加了注解,springboot启动时会扫描整个项目,从而知道这是一个你定义的控制器。
可用注解
注解 | 说明 |
---|---|
@Controller | 标记类为 MVC 控制器,通常用于传统 Web 视图 |
@RestController | 组合注解(@Controller + @ResponseBody),用于 RESTful API(直接返回 JSON/XML 数据,而非视图) |
例子
/**
* 控制器
*/
@Controller
public class IndexController {
@GetMapping("/about")
public String about(){
// 访问 127.0.0.1:8080/about
}
}
/**
* 控制器|设置路由前缀
* @Controller("/admin") 表示整个控制器通用路由前缀admin
* 类似 laravel 的 Route::prefix('admin')->group()
*/
@Controller("/admin")
public class UserController {
@GetMapping("/user/login")
public String login(){
// 访问 127.0.0.1:8080/admin/user/login
}
}
控制器相关注解汇总
注解 | 用途 |
---|---|
@Controller |
定义传统 Web 控制器(返回视图) |
@RestController |
定义 RESTful API 控制器(返回 JSON) |
@RequestMapping |
通用请求映射配置 |
@GetMapping 等 |
快捷定义 HTTP 方法映射 |
@PathVariable |
从 URL 路径中获取变量 |
@RequestParam |
从 URL 查询参数中获取值 |
@RequestBody |
绑定请求体数据到对象 |
@ResponseBody |
直接返回数据到响应体 |
@ExceptionHandler |
处理控制器内的异常 |
@ModelAttribute |
绑定表单数据到模型对象 |
@CrossOrigin |
配置跨域请求 |