注解 作用 备注 使用 其他
@Controller 处理http请求 继承了Spring的@Component注解,会把对应的类声明为Spring对应的Bean,并且可以被Web组件管理 Controller 类上 返回json数据或Xml需要结合@ResponseBody注解
@RestController 用于返回Json,与@ResponseBody配合@Controller效果相同 @RestController==@Controller+@Responsebody Controller 类上 涉及jsp、html需要配合ModelAndView

注解 作用 备注 使用 其他
@ResponseBody 将后端以return返回的javabean类型数据转为json类型数据 示函数的返回不需要渲染为View,应该直接作为Response的内容写回客户端 使用在类上 JSON传输与@Controller结合
@RequestBody 获取请求体的参数值
作用于将前端传来的json格式的数据转为自己定义好的javabean对象
处理contentType不为application/x-www-form-urlencoded的数据,比如application/json 使用在单独的方法上 对象接收
@PathVariable 获取url中的路径参数
格式:url/{参数}
@PathVariable 是从一个URI模板里面来填充 在参数前使用 参数使用
@RequestParam 注解接受来源于url的参数
格式:url?参数
@RequestParam 是从request里面取值 在参数前使用 参数使用

注解 作用 其他
@RequestMapping 配置url映射,需要多个时可以将value写成一个集合 RequestMapping参数
@GetMapping 组合注解,相当于@RequestMapping(method = RequestMethod.GET) value、params
@PostMapping 组合注解,相当于@RequestMapping(method = RequestMethod.POST) JSON、From参数接收

涉及jsp、html页面

如果要返回的是jsp、html等页面时有两种方式:

  • 仅使用Controller类注解,不添加方法注解
  • 使用RestController类注解,方法体配合ModelAndView使用
@RestController
class xxxController{@GetMapping(value = "/XXX")public ModelAnd View test(){ModelAndView modelAndView = new ModelAndView("index");return modelAndView ;
}

RequestBody方法体接收

  @PostMapping("/Post")public  Poster paramTest(@RequestBody Poster poster){System.out.println(poster);return poster;}

RequestMapping参数使用

https://blog.csdn.net/dieaixia5129/article/details/122967672


GetMapping 参数使用

value

//可通过{}指定动态参数定义地址
@GetMapping("/base/listforspu/{spuId}")

params

//指定包含参数名值为tom的请求通过
@GetMapping(value ="/service",params ="name=tom")
//指定拦截参数名值为tom的请求
@GetMapping(value ="/service",params ="name!=tom")
//路径中不包含参数即可通过
@GetMapping(value ="/service",params ={"!name"})
//路径中包含参数即可通过
@GetMapping(value ="/service",params ={"name"})

JSON、from

JSON参数接收

//通过Map接收
@PostMapping(value = "/map")
public R test(@RequestBody Map<String,Object> user){String name = user.get("name").toString();return R.success(name);}
//通过自定义对象接收
@PostMapping(value = "/user")
public R test1(@RequestBody User user){String access = user.toString();return R.success(access);}
}

表单请求

//通过对象接收,可不使用@RequestBody
@PostMapping(value = "/user/form")
public R test3(User user){String access = user.toString();return R.success(access);}
}

RequestParam参数使用

 (@RequestParam(value="参数1(与url传输参数名一致)", required=true) String param1,@RequestParam(value="参数2(与url传输参数名一致)", required=false) String param2)

RequestParam 支持以下参数:

  • 默认值
  • required
    • 判定参数是否必须存在
  • value
    • value的值,值需要绑定请求参数的名称,参数名要与url串的命名一致

PathVariable参数使用

https://blog.csdn.net/weixin_38972910/article/details/84880669


总结

  • 如果要在Controller层返回一个页面,用注解@Controller;如果让其作为一个接口,用@RestController
  • 在GET请求中(@GetMapping),不能使用@RequestBody。
  • 在POST请求(@PostMapping),可以使用@RequestBody和@RequestParam
  • @RequestParam注解接受的参数来源于url中,格式为xxx?参数1&参数2,而@RequestBody注解接收的参数则是来自于requestBody中,即请求体中。

Controller层各注解总结相关推荐

  1. SpringMVC学习:控制层(Controller)基于注解详解

    文章目录 一.URL映射Controller的方法返回值 二.SpringMVC各类注解详解 (一) @Controller (二) @RequestMapping 1.基本用法 2. path属性或 ...

  2. restful规范对应的controller层注解,testng测试

    post delete put 传参,基于body,封装对象,objct,list<string>,list<objct>等等controller层需要在参数上加上@Reque ...

  3. Spring中Controller层、Filter层、Interceptor层全局统一异常处理

    Controller层.Filter层.Interceptor层全局统一异常处理 SpringBoot为异常处理提供了很多优秀的方法,但是像我这种新手在处理异常时还是会觉得一头包,终于我痛定思痛,总结 ...

  4. 实战SSM_O2O商铺_34【商品】商品编辑之Controller层的实现

    文章目录 概述 ProductController 单元测试 Github地址 概述 在完成了 实战SSM_O2O商铺_33[商品]商品编辑之Service层的实现之后,我们继续来实现Controll ...

  5. 实战SSM_O2O商铺_30【商品】商品添加之Controller层的实现

    文章目录 概述 ProductController 单元测试 Github地址 概述 商品添加Controller层的逻辑如下: 1. 获取前端传递过来的Product对象,通过FastJson提供的 ...

  6. java异常统一处理,Controller层的异常统一处理及返回

    Controller层的异常统一处理及返回 一.为什么要做这件事? 不知道你平时在写Controller层接口的时候,有没有注意过抛出异常该怎么处理,是否第一反应是想着用个try-catch来捕获异常 ...

  7. springboot中service层注入的是实现类,但Controller层接收的是接口

    我们习惯这样编写代码: 在service层写接口,然后用实现类去实现接口,并且将实现类注入到容器中 @Service public class AccountServiceImpl implement ...

  8. SpringBoot—单元测试模板(controller层和service层)

    关注微信公众号:CodingTechWork,一起学习进步. 介绍 概述   在开发过程中,我们经常会一股脑的写各种业务逻辑,经常等全部大功告成的时候,打个jar包放环境里跑跑看看能不能通,殊不知在各 ...

  9. mvc 怎么把后台拼接好的div写到前台_五、controller层配置和前台数据crud操作的实现...

    这个系列专栏的完结可能比我想象要快一些.不过可能将来要完善这个项目的时候还会加以改进.我今天争取把最后一层:控制层的代码给写完.明天最后一篇博文将讲讲Session.cookie对用户登录的控制,并最 ...

最新文章

  1. 游戏关卡中的类型运用:《LOOP》的无限可能
  2. 微信读书vscode插件_跟我一起读源码 – 如何阅读开源代码
  3. python 图表工具_7 款 Python 数据图表工具的比较
  4. 专题三 PacketTracer 中 MCU 芯片编程基础
  5. 终于搞定电子专利网上申请了
  6. SG90舵机使用介绍
  7. 小程序input绑定输入保存数据
  8. 运算放大器的简要理解
  9. Centos7下新硬盘的挂载操作
  10. GBase 8a管理集群gcware的日志-vote leader、flower、candidate部分
  11. 码云上面优秀的java项目_秒建一个后台管理系统?用这5个开源免费的Java项目就够了...
  12. golang中如何比较struct,slice,map是否相等以及几种对比方法的区别
  13. 目标检测 YOLOv5 - ncnn模型的加密 C++实现封装库和Android调用库示例
  14. 2022-2028年中国手机结构件行业市场发展规模及市场前景趋势报告
  15. 【计算机网络】Quiz
  16. ubuntu安装postfix+esmtp验证配置
  17. 只有300万预算,能在深圳买到什么样的二手房?分析20778套二手房
  18. 如何查询某只股票的历史股价?
  19. Makefile基础教程
  20. 【计算机网络-数据链路层】介质访问控制协议(MAC协议)

热门文章

  1. JNDI学习总结(三)——Tomcat下使用Druid配置JNDI数据源
  2. (dedecms)织梦搬家后无法更新栏目
  3. ​​​​​​过滤器和拦截器详解
  4. Ubuntu中etc/profile和~./bashrc的区别
  5. 如何查看Oracle数据库的版本号
  6. 5.8G存在感应雷达模块,雷达智能感应灯应用,多普勒雷达技术发展
  7. Python 的七大就业方向,总有一个适合你!
  8. form表单—2种提交方式
  9. 小程序onreachbottom不执行
  10. ReID行人重识别(训练+检测,附代码),可做图像检索,陌生人检索等项目