SpringMVC主要注解区分(1)

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

springmvc中有很多注解,但是其中也有很多相似的注解。比如说@Controller和@RestController的区别,@RequestMapping 和 @GetMapping @PostMapping 区别,@RequestParam和@PathVariable注解的区别。今天我们就主要来区分一下这几组之间的区别,对于它们有一个透彻的认知。


叙述

============================================================

@Controller VS @RestController


解释说明

  • @Controller标识一个Spring类是Spring MVC controller处理器。控制器可以支持同时处理多个请求动作。

  • @RestController是@Controller和@ResponseBody的结合体,两个标注合并起来的作用。

相同点

Controller和RestController都是用来表示spring某个类的是否可以接收HTTP请求

不同点

  • @RestController注解,相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面

  • @Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面。若返回json等内容到页面,则需要加@ResponseBody注解

  • 使用@Controller 注解返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行

实例说明

假定一个user对象,对象有很多属性(name,sex,age,birth,address,tel)

在@controller注解中,返回的是字符串,或者是字符串匹配的模板名称,即直接渲染视图,与html页面配合使用的,

在这种情况下,前后端的配合要求比较高,java后端的代码要结合html的情况进行渲染,使用model对象(或者modelandview)的数据将填充user视图中的相关属性,然后展示到浏览器,这个过程也可以称为渲染;

java示例代码如下:

@Controller

@RequestMapping(method = RequestMethod.GET, value = “/”)

public String getuser(Model model) throws IOException {

model.addAttribute(“name”,bob);

model.addAttribute(“sex”,boy);

return “user”;//user是模板名

}

对应视图user.jsp中的html代码:

html xmlns:th=“http://www.thymeleaf.org”>

"${name}"

"${sex}"

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

java端代码:

@RestController

@RequestMapping(method = RequestMethod.GET, value = “/”)

public User getuser( ) throws IOException {

User bob=new User();

bob.setName(“bob”);

bob.setSex(“boy”);

return bob;

}

访问网址得到的是json字符串{“name”:”bob”,”sex”:”boy”},前端页面只需要处理这个字符串即可。


@RequestMapping VS @GetMapping @PostMapping


解释说明

Spring4.3中引进了{@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping} 来帮助简化常用的HTTP方法的映射 并更好地表达被注解方法的语义

相同点

@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。

@PostMapping是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。

不同点

最后

面试前一定少不了刷题,为了方便大家复习,我分享一波个人整理的面试大全宝典

  • Java核心知识整理

2020年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多

Java核心知识

  • Spring全家桶(实战系列)

2020年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多

  • 其他电子书资料

2020年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多

Step3:刷题

既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

以下是我私藏的面试题库:

2020年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

以下是我私藏的面试题库:

[外链图片转存中…(img-jxvgom8U-1714674440233)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值