Controller注解

java Spring-MVC之Controller注解

1.Controlller简介

Controller是MVC模式中的控制层,主要用来处理浏览器的访问请求,在编写类时在类上加上@Controller注解表明这是一个控制器。

2.Controller中常用的注解
2.1.@RequestMapping注解
  • 可以标明在类上也可以标明在方法上
@RequestMapping(value = "getUser/{name}",method = RequestMethod.POST)
@RequestMapping("/getOneInt")
  • 该注解有两个常用的属性,value表示访问路径,method表示请求的方法,不指定method时,任何形式的访问请求都可以接受。
2.2 @GetMapping与注解@PostMapping
  • @GetMapping(“getUser”)与@RequestMapping(value = “getUser”,method = RequestMethod.GET)是一样的
  • @PostMapping(“getUser”)与@RequestMapping(value = “getUser”,method = RequestMethod.POST)是一样的
  • 当然还有@DeleteMapping @PatchMapping等注解,对应各种访问方式
2.3 @RequestParam注解
  • @RequestParam是用来标注方法参数的,下面第一种和第二种是一样的,浏览器访问提供的参数名字应该与name一致,但是当该注解设置了value属性时,参数名字应当与设置的值na一样。required表示该参数是否必传,默认是false,当为true时,没有传将报错。

  • 注意:用@RequestParam标记参数,浏览器访问的参数是拼接在url之后的。

@GetMapping("getOneInt1")
    public  String getOne1(@RequestParam String name){
        return "int,"+name;
    }
@GetMapping("getOneInt1")
    public  String getOne1(String name){
        return "int,"+name;
    }
@GetMapping("getOneInt1")
    public  String getOne1(@RequestParam(value = "na",required= "false") String name){
        return "int,"+name;
    }
2.4 @RequestBody注解
  • @RequestBody也是用来标注访问参数的,该参数必须是一个自定义的类。只是与 @RequestParam不同的时,该参数是保存在请求体中的json格式,采用url拼接的访问方式是行不通的。json格式的参数名必须与类中的属性保持一致,且类型能转换为类中的属性的类型。
    public class Param1 {
    
    private String name;
    private Integer age;
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}
 public  String getOne1(@RequestBody Param1 param1){
        System.out.println(param1);
        return "int,"+param1.getName();
    }
2.5 @PathVariable注解
  • @PathVariable也是用来修饰方法参数的,表明该参数是写在浏览器访问url中的。
    @RequestMapping(value = "getUser/{name}")
    public String getUser(@PathVariable String name){
        return " hello PathVariable,"+name;
    }
2.6 @ResponseBody注解
  • 正常情况下,Controller返回的是模型视图
  • @ResponseBody可声明在类上,也可声明在方法上,表明方法的返回类型为json格式,不再返回视图。
  • 注意:当返回类型为实体类时,该类需要 implements Serializable。
    @RequestMapping("/getOneInt")
    @ResponseBody
    public  String getOne2(int n){
        return "int,"+n;
    }
2.7 @RestController注解
  • 是一个REST风格的注解,其作用相当于@Controller与@ResponseBody的联合使用,类中所有方法返回的类型均为json格式。使用此注解后,方法上的@ResponseBody注解可以去掉了。
    Controller与@ResponseBody的联合使用,类中所有方法返回的类型均为json格式。使用此注解后,方法上的@ResponseBody注解可以去掉了。
注意:浏览器访问时,url中的参数是不分类型的,但是Controller中方法的参数是有类型的,因此必须保证传过来的参数能转换为接受的参数类型。url中的参数可以多于接收的,但必须包含方法的接收参数且名字一致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值