Spring系中常见注解用法说明

@PathVariable与@RequestParm

在spring mvc中,有@requestparm, @requestbody和@pathvariable 三种注解来获得浏览器端的参数,其中@requestparm是取自url中“?”之后的a=b&c=d,@requestbody 来自于请求体,而@pathvariable 则是从网址中取得参数;

感谢评论区@comeoon的订正,浏览器的get/put/delete/post方法都可以使用上述参数,但是由于浏览器get方法不能提供body,所以RequestBody实际获取的是一个map,参数来自于url中“?”之后的参数(实际上是request parameters)

假设代码如下:

1
2
3
4
5
6
@Requestmapping(value="/{category}/{brand}/{id},method=RequestMethod.POST)
public void getbyid(@PathVariable("category") String category
@PathVariable("brand") String brand
@PathVariable("id") String id){
//具体代码略
}

@Controller与@RestController

@restcontroller为@controller和@responsebody的结合。在@controller注解中,返回的是字符串,或者是字符串匹配的模板名称,即直接渲染视图,与html页面配合使用的,在这种情况下,前后端的配合要求比较高,java后端的代码要结合html的情况进行渲染,使用model对象(或者modelandview)将user的属性渲染到页面。

1
2
3
4
5
6
7
8
@Controller
@RequestMapping(method = RequestMethod.GET, value = "/")
public String getuser(Model model) throws IOException {

model.addAttribute("name",bob);
model.addAttribute("sex",boy);
return "user";
}

前端取数据:

1
2
3
4
5
6
7
8
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div>
<p>"${name}"</p>
<p>"${sex}"</p>
</div>
</body>
</html>

而在@restcontroller中,返回的应该是一个对象,即return一个user对象,这时,在没有页面的情况下,也能看到返回的是一个user对象对应的json字符串,而前端的作用是利用返回的json进行解析渲染页面,java后端的代码比较自由。

1
2
3
4
5
6
7
8
@RestController
@RequestMapping(method = RequestMethod.GET, value = "/")
public User getuser( ) throws IOException {
User bob=new User();
bob.setName("bob");
bob.setSex("boy");
return bob;
}

Spring系中常见注解用法说明

https://eucham.me/2019/12/16/108e8f49b029.html

作者

遇寻

发布于

2019-12-16

更新于

2022-04-21

许可协议

评论