Controller 是 Spring 中最基本的组件,主要是处理跟用户交互的,一般每个业务逻辑都会有一个 Controller,提供给用户 http 请求接口,用户请求接口进行数据访问。
掌握 Controller 的用法,一般掌握下面几个注解就差不多了,@Controller
,@RestController
,@RequestMapping
,@PathVariable
,@RequestParam
,@GetMapping
下面详细说下这些注解的用法:
-
@Controller
:标注 Controller 类,处理 http 请求 -
@RestController
:标注 Controller 类,spring 4 新加注解,相当于@Controller
+@ResponseBody
,主要是为了使 http 请求返回数据格式为 json 格式,正常情况下都是使用这个注解 -
@RequestMapping
:配置 url 映射,可以作用于类上,也可以在方法上
@RestController//处理http请求,返回json格式
@RequestMapping(value = "/users")//配置url,让该类下的所有接口url都映射在/users下
public class UserController {
@RequestMapping(value = "/myInfo", method = RequestMethod.GET)
public String say() {
return "我是张少林";
}
}
@RequestMapping
定义在类上,指定该类下的所有接口 url 映射在 /users
下,定义在方法上,指定 请求方法,可以指定GET
,POST
,DELETE
,PUT
四种标准的 Restful
api请求方法。
那么此时的接口 url 为:http://127.0.0.1:8080/users/myInfo
请求方法:GET
类上也可以不用配置 url
映射的。
@RestController//处理http请求,返回json格式
public class UserController {
@RequestMapping(value = "/myInfo", method = RequestMethod.GET)
public String say() {
return "我是张少林";
}
}
此时接口 url 为: http://127.0.0.1:8080/myInfo
请求方法:GET
结果:在浏览器上显示 我是张少林
-
@PathVariable
: 获取 url 中的数据,我们在 url 中拼接一个字符串{username}
,类似于地址占位符,由用户请求时添加,请求获取。注意注解中的参数必须与占位符参数一致
@RestController//处理http请求,返回json格式
@RequestMapping(value = "/users")//配置url,让该类下的所有接口url都映射在/users下
public class UserController {
@RequestMapping(value = "/myInfo/{username}", method = RequestMethod.GET)
public String say(@PathVariable("username") String username) {
return username;
}
}
此时接口 url 为:http://127.0.0.1:8080/users/myInfo/张少林
,请求方法 GET
结果:浏览器上显示 张少林
-
@RequestParam
:获取请求参数值,方法随意可以设置,但是通常需求都是使用POST
请求处理表单提交。
@RestController//处理http请求,返回json格式
@RequestMapping(value = "/users")//配置url,让该类下的所有接口url都映射在/users下
public class UserController {
@RequestMapping(value = "/myInfo", method = RequestMethod.POST)
public String say(@RequestParam(value = "username") String username, @RequestParam(value = "password") String password) {
return username + password;
}
}
此时 接口 url 为:http://127.0.0.1:8080/users/myInfo?username=张少林&password=123456
请求方法:POST
,注意拼接地址参数必须与注解参数一致
使用 postman 来测试接口,结果为,输出 张少林123456
这时候假如用户没有传参数,就会报404
错误。再添加两个设置 required = false
:是否必穿。defaultValue
:默认值
@RestController//处理http请求,返回json格式
@RequestMapping(value = "/users")//配置url,让该类下的所有接口url都映射在/users下
public class UserController {
@RequestMapping(value = "/myInfo", method = RequestMethod.POST)
public String say(@RequestParam(value = "username",required = false,defaultValue = "张少林") String username,
@RequestParam(value = "password",required = false,defaultValue = "123456") String password) {
return username + password;
}
}
试试不传参数,结果还是一样 ,输出 张少林123456
- 组合注解:
@GetMapping
,@PostMapping
,@PutMapping
等 由请求方法+Mapping
的组合注解等价于@RequestMapping
单独指定映射再指定请求方法。这种方式简化了我们的使用,通常都是直接使用组合注解,不需要再自己指定请求方法,毕竟程序猿都是比较懒的嘛~
例如:
@RequestMapping(value = "/myInfo", method = RequestMethod.POST)
可以简化为:
@PostMapping(value = "/myInfo")
声明:以上只是本人学习的一篇总结,若有不足之处还请在评论区指出
网友评论