spring 部分常用注解

来源:互联网 发布:已有备案网站增加域名 编辑:程序博客网 时间:2024/06/09 22:53
1. @RestController 和@Controller

控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后,返回给前台页面
@Controller 的作用 :声明这是一个controller类,然后使用@RequestMapping ,@ResponseBody等一些注解用以定义URL 请求和Controller 方法之间的映射,使Controller 被前端访问。
@Controllerpublic class AnnotController {  @ResponseBody  @RequestMapping("/hello")  public String hello() {    return "Hello huhy";  }}
@RestController : 从spring4.0版本开始出现.看下图的官方解释,会发现,@RestController 其实已经包含了@Controller 和@ResponseBody ,会默认使用@ResponseBody(可以参考spring boot语法)
@RestControllerpublic class AnnotController{   
@RequestMapping("/hello")  
 public String hello() {
    return "Hello huhy";  
 }
}

 

注意 : 其中@ResponseBody会处理返回的数据格式,使用了该类型注解后返回的不再是视图,不会进行转跳,而是返回json或xml数据格式,输出在页面上。
如果在类上使用@Controller注解, 可以在需要的方法上单独添加@ResponseBody ,而使用@RestController相当于在所有的方法上都默认使用了@ResponseBody注解
 
2. @RequestParam(?传值) @RequestBody(指定返回的结果以json或者xml形式) @PathVariable(地址栏传参,常见的是restful风格) 常用参数绑定注解
①@PathVariable 直接通过URL传参时使用,URL形式:http://localhost:port/path/参数
 
@RestController@RequestMapping("demoAnnot")public class testController {    @RequestMapping(value = "/hello/{name}/{age}", method = RequestMethod.GET)    public String hello(@PathVariable("name") String name,@PathVariable("age") int myAge) {        return "我是" + name +"年龄 " + myAge;    }}    
访问URL为:http://localhost:9999/demoAnnotemo/hello/Tom/8
注意: 通过@PathVariable("***")的形式可以获取指定URL中的参数,此时可以修改变量的名字,如上面的age参数, 如果不需要修改参数名则可以按照URL中参数的顺序写成如下形式
public String hello(@PathVariable String name,@PathVariable int age)
如果是类上面的@RequestMapping("demoAnno") 也添加一个参数,和方法上的获取使用是一样的
 
②@RequestParam也是通过把参数绑定到URL中,但是和@PathVariable有不同,形式为http://localhost:port/path?参数名=参数
 
@RestController@RequestMapping("demoAnno")public class testController {  @RequestMapping(value = "/hello", method = RequestMethod.GET)  public String hello(@RequestParam(value = "name", required = false, defaultValue = "null") String name) {    return "我是" + name ;  }}
访问URL为:http:/localhost:9999/demo/hello?name=tom
注意:@RequestParam中required是"是否必填", "false" 可以不带此参数, "defaultValue" 可以赋一个默认值.如果选择required = false ,URL中不带name=tom参数,不会报错. 如果写成@RequestParam(value = "name") 这样的形式,则不带name=tom参数就会报错.
 
③@RequestBody可以将请求体中的JSON字符串绑定到相应的bean上,也可以将其分别绑定到对应的字符串上。 
@RestController@RequestMapping("demoAnno")public class testController {  @RequestMapping(value = "/hello", method = RequestMethod.POST)  public String hello(@RequestBody RequestOrderVo requestOrderVo) {    return "我是" + requestOrderVo.getName +"年龄 "+requestOrderVo.getAge;  }}
原创粉丝点击