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

@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> home(){
        List<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()方法。

  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值