欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringBoot Controller 控制层常见注解及含义

程序员文章站 2024-03-02 12:57:22
...

@Controller

作用:标注于任意一个类上,声明该类属于Controller。通常该注解会与@ResponseBody@RequestBody等注解搭配使用。

示例:

@Controller
@RequestMapping("/test")
public class MainController{

    @RequestMapping("/home")
    public String home(){
        return "This is test information.";
    }
}

@RestController

作用:标注于任意一个类上,声明该类属于Controller。与@Controller不同的是,@RestController可以返回JSON内容,而单独@Controller则不可以。@RestController无法跳转页面。

示例:

@RestController
@RequestMapping("/test")
public class MainController{

    @Resource
    private SearchService searchService;
    @RequestMapping("/home.json")
    public List<String, String> home(){
        List<String, String> list = searchService.findAll()
        return list;
    }
}

说明:当客户端访问/test/home.json时,会返回一个JSON对象。

@RequestMapping

作用:映射HTTP请求到某个具体方法。参数内容如下:

  • value:请求的URL;
  • method:HTTP请求方式,可选值有RequestMethod.GET,RequestMethod.POST等;
  • consumes:媒体类型,可选值有"application/json"等;
  • produces:相应的媒体类型,可选值有"application/json"等;
  • params:请求的参数;
  • headers:请求的HTTP头的值。

示例:

@Controller
@RequestMapping("/test")
public class MainController{

    @RequestMapping("value=“/home”,method="RequestMethod.POST",params="name="jack"")
    public String home(){
        return "This is test information." + name;
    }
}

说明:这里映射一个访问路径为"/test/home",当客户端使用POST请求访问该路径时,会调用home()该方法。

@ResponseBody

作用:标注某个被访问的方法返回类型前,该方法将会返回JSON类型而不是String或其它类型。需要注意的是,访问路径结尾必须是以.json结尾,否则可能报错。

示例:

@Controller
@RequestMapping("/test")
public class MainController{

    @RequestMapping("/home")
    public @ResponseBody String home(){
        return "This is test information.";
    }
}

说明:这里在home()方法的返回类型String前面加上该注解,会将内容使用Jackson序列化成JSON字符串进行输出。

@RequestBody

作用:将json格式的数据转为java对象。

示例:

@Controller
@RequestMapping("/test")
public class MainController{

    @RequestMapping("/home")
    public String home(@RequestBody User user){
        return user.toString();
    }
}

@PathVariable

作用:将URL中的值映射到方法参数中。在@RequestMapping或其它的括号内使用{}来获取变量,在被调用的方法参数类型前使用该注解。

示例:

@Controller
@RequestMapping("/test")
public class MainController{

    @RequestMapping("/home/{name}/{age}")
    public @ResponseBody String home(@PathVariable String name, @PathVariable int name){
        return "The name is: " + name + " and age is: " + age; 
    }
}

@GetMapping

作用:标注于某个方法上,声明该类被访问的方式为Get类型。

示例:

@Controller
@RequestMapping("/test")
public class MainController{

    @GetMapping("value="/home"")
    public String home(){
        return "This is test information.";
    }
}

说明:当客户端以Get请求访问/test/home时,会访问home()方法。

@PostMapping

作用:标注于某个方法上,声明该类被访问的方式为Post类型。

示例:

@Controller
@RequestMapping("/test")
public class MainController{

    @PostMapping("value="/home"")
    public String home(){
        return "This is test information.";
    }
}

说明:当客户端以Post请求访问/test/home时,会访问home()方法。