Controller层各注解总结

注解作用备注使用其他
@Controller处理http请求继承了Spring的@Component注解,会把对应的类声明为Spring对应的Bean,并且可以被Web组件管理Controller 类上返回json数据或Xml需要结合@ResponseBody注解
@RestController用于返回Json,与@ResponseBody配合@Controller效果相同@RestController==@Controller+@ResponsebodyController 类上涉及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中,即请求体中。
  • 3
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值