Controller注解

    技术2022-07-11  75

    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中的参数可以多于接收的,但必须包含方法的接收参数且名字一致。
    Processed: 0.011, SQL: 9