SpringMVC常用注解

类上:

@Controller:声明为组件

@RequestMapping:放在类上即所有handler方法都先加上此路径

@EnableWebMvc:他会加入json处理器进行json数据处理。否则使用@RequestBody注解时无法将json数据映射到对应的对象上。需要导入jackson依赖。

@RestController

方法上:

@RequestMapping:将请求URL地址与请求处理的方法(handler方法)绑定起来

@GetMapping、@PostMapping、@PutMapping(更新)、@DeleteMapping(删除)

理解handler方法的作用和组成:

/**
 * TODO: 一个controller的方法是控制层的一个处理器,我们称为handler
 * TODO: handler需要使用@RequestMapping/@GetMapping系列,声明路径,在HandlerMapping中注册,供DS查找!
 * TODO: handler作用总结:
 *       1.接收请求参数(param,json,pathVariable,共享域等) 
 *       2.调用业务逻辑 
 *       3.响应前端数据(页面(不讲解模版页面跳转),json,转发和重定向等)
 * TODO: handler如何处理呢
 *       1.接收参数: handler(形参列表: 主要的作用就是用来接收参数)
 *       2.调用业务: { 方法体  可以向后调用业务方法 service.xx() }
 *       3.响应数据: return 返回结果,可以快速响应前端数据
 */
@GetMapping
public Object handler(简化请求参数接收){
    调用业务方法
    返回的结果 (页面跳转,返回数据(json))
    return 简化响应前端数据;

接收数据:

param传参(@RequestParam):适用于简单的数据类型传递

  • 形参数名和类型与传递参数相同,即可自动接收!
  • 如果参数名不一致,可使用注解@RequestParam("name") String UserName,将客户端参数名为name的参数绑定到形参UserName上。
  • 提交的数据的时候一个key对应多个值,可以使用集合进行接收                           @RequestParam List<String> keyname
  • 实体接收时:要求属性名必须等于参数名,否则无法映射!形参:(User user)不需要写注解

路径参数接收(@PathVariable )

如果我们想将 /user/{id} 路径下的 {id} 映射到控制器方法的一个参数中,则可以使用 @PathVariable 注解来实现。  

@GetMapping("/user/{id}/{name}")
@ResponseBody
public String getUser(@PathVariable Long id, 
                      @PathVariable("name") String uname) {
    System.out.println("id = " + id + ", uname = " + uname);
    return "user_detail";
}

json参数接收(@RequestBody 常用):

@RequestBody 注解来将 JSON 数据转换为 Java 对象,表示当前方法参数的值应该从请求体中获取。 json数据需要有对应的实体类——XXXVo

@PostMapping("/person")
@ResponseBody
public String addPerson(@RequestBody Person person) {

  // 在这里可以使用 person 对象来操作 JSON 数据中包含的属性
  return "success";

@RequestBody 注解将请求体中的 JSON 数据映射到person对象上。

接收Cookie数据(@CookieValue)

@GetMapping("/demo")
public void handle(@CookieValue("JSESSIONID") String cookie) { 
  //...

 接收请求头数据(@RequestHeader)

@GetMapping("/demo")
public void handle(
    @RequestHeader("Accept-Encoding") String encoding, 
    @RequestHeader("Keep-Alive") long keepAlive) { 
  //...
}

响应数据:

  1. 页面控制跳转(不常用)
  2. 返回JSON(@ResponseBody  重点)

使用 @ResponseBody注解,用于将方法返回的对象序列化为 JSON 或 XML 格式的数据,并发送给客户端。也是用来标识方法或者方法返回值,表示方法的返回值是要直接返回给客户端的数据,而不是由视图解析器来解析并渲染生成响应体(即viewResolver没用)

@GetMapping("/accounts/{id}")
@ResponseBody
public Object handle() {
  // ...
  return obj;
}

如果类中每个方法上都标记了 @ResponseBody 注解,那么这些注解就可以提取到类上。  

类上的 @ResponseBody 注解可以和 @Controller 注解合并为 @RestController 注解。

        3.返回静态资源(不常用)

  • 30
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值