java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Spring MVC处理HTTP请求

一文盘点Spring MVC中用于处理HTTP请求的常用注解

作者:Lyyaoo.

这篇文章主要为大家详细介绍了Spring MVC中用于处理HTTP请求的常用注解,包括@RequestMapping,@RequestController,@RequestParam等,希望对大家有所帮助

1.@RequestMapping

 @RequestMapping⽤来注册接⼝的路由映射,可以作用在类上,也可以作用在方法上,当标识⼀个类,设置映射请求的请求路径的初始信息,当标识⼀个⽅法,设置映射请求请求路径的具体信息。下面的代码表⽰服务收到请求时, 路径为 /hello 的请求就会调⽤ hello 这个⽅法的代码.

@RestController
public class UserController {
// 路由器规则注册
@RequestMapping("/hello")
	public String hello(){
		return "hello,Spring boot";
	}
}

 @RequestMapping ⽀持 get 请求和 post 请求 ,可以通过 method 进行指定,

@RestController
public class UserController {
// 路由器规则注册
@RequestMapping(value = "/hello",method= RequestMethod.POST)
	public String hello(){
		return "hello,Spring boot";
	}
}

2.@RequestController

 @RequestController是 Spring 中用来标记控制器类的注解,标注的类下的所有方法返回的数据直接写入HTTP响应体中,如下例子当浏览器访问 /hello 时,页面直接显示字符串Hello World,当访问 /user 时,Spring 会自动把 User 对象转换成 JSON 返回{“name”:“张三”,“age”:25}

@RestController
public class TestController {

    @RequestMapping("/hello")
    public String hello() {
        return "Hello World";
    }

    @RequestMapping("/user")
    public User getUser() {
        User user = new User("张三", 25);
        return user;  // 返回一个 Java 对象
    }
}

3.@RequestParam

 有时候,前端传递的参数 key 和我们后端接收的 key 可以不⼀致,⽐如前端传递了⼀个 time 给后端,⽽后端是使⽤ createtime 字段来接收的。此时可以通过@RequestParam来重命名前后端的参数值。

 例如,前端发来请求 GET /user?id=123,此时会从请求中找名为 id 的参数,把值赋给后面的 int userId 参数。

@RestController
public class UserController {
    @RequestMapping("/user")
    public String getUser(@RequestParam("id") int userId) {
        return "用户ID是:" + userId;
    }
}

使⽤ @RequestParam 进⾏参数重命名时, 参数就变成了必传参数,可以通过设置 @RequestParam 中的 required=false 来设置成非必传

@RequestParam(value = "name", required = false) String userName

 @RequestParam可以用来传递集合,默认情况下,请求中参数名相同的多个值,是封装到数组. 如果要封装到集合,要使⽤@RequestParam 绑定参数关系。

@RequestMapping("/test")
public String method6(@RequestParam List<String> listParam){
	return "size:"+listParam.size() + ",listParam:"+listParam;
}

4.@RequestBody

 @RequestBody是将 HTTP 请求体(Body)中的数据绑定到控制器方法参数的注解,当前端通过 POST、PUT 等请求发送一段 JSON(或 XML)数据时,@RequestBody 能帮你把这段数据自动转换成一个 Java 对象,方便后续的使用

{
    "name": "张三",
    "age": 25
}
@PostMapping("/user")
public String createUser(@RequestBody User user) {
    System.out.println(user.getName()); // 输出 "张三"
    return "success";
}

5.@PathVariable

 @PathVariable用来获取 URL 路径中的变量值的注解,例如使用浏览器发送请求 http://127.0.0.1:8080/param/m8/5/zhangsan,最终获取到 id 为 5 ,userName 为 zhangsan

@RequestMapping("/m8/{id}/{name}")
public String method8(@PathVariable Integer id, @PathVariable("name") String 
userName){
	return "解析参数id:"+id+",name:"+userName;
}

 同样可以进行重命名操作,下面的例子表示获取 @GetMapping(“/users/{id}”) 中 id 的值

@RestController
public class UserController {
    @GetMapping("/users/{id}")
    public String getUser(@PathVariable("id") int userId) {
        return "用户ID:" + userId;
    }
}

6.@RequestPart

 @RequestPart 用于处理 multipart/form-data 请求的注解。它可以把 multipart 请求中的某个特定部分(part)绑定到控制器方法的参数上,通常用于文件上传

@RequestMapping("/m9")
public String getfile(@RequestPart("file") MultipartFile file) throws IOException {
	//获取⽂件名称
	String fileName = file.getOriginalFilename();
	//⽂件上传到指定路径
	file.transferTo(new File("D:/temp/" + file.getOriginalFilename()));
	return "接收到⽂件名称为: "+fileName;
}

7.@CookieValue

 @CookieValue把请求中某个 Cookie 的值直接绑定到控制器方法的参数上,下面的例子能够指定获取 Cookie 中键为 bite 的字段值

@RequestMapping("/getCookie")
public String cookie(@CookieValue("bite") String bite) {
	return "bite:" + bite;
}

8.@SessionAttribute

 @SessionAttribute能从当前 HTTP Session 中获取某个属性的值,绑定到方法参数上,下面的例子就是从Session中获取属性名为 "username"的一系列属性,比如{id=1001, username=“zhangsan”}

@RequestMapping("/getSess2")
public String sess2(@SessionAttribute(value = "username",required = false)
User username) {
	return "username:"+user.getUsername();
}
@RequestMapping("/getSess2")
public String sess2(@SessionAttribute(value = "username",required = false)
String username) {
	return "username:"+ username;
}

到此这篇关于一文盘点Spring MVC中用于处理HTTP请求的常用注解的文章就介绍到这了,更多相关Spring MVC处理HTTP请求内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文