Spring MVC 注解

一、DispatcherServlet注解:@RequestMapping

   @RequestMapping("welcome"):可作用于/方法

  (1value目标地址;

    1)?:任意单字符;

    2)*:任意单层目录;

    3)**:任意多层目录;

  (2method:指定请求类型;

    //当映射名(RequestMapping)都相同时候,可通过不同的请求类型处理不同请求;

    @RequestMapping(value = "",method = RequestMethod.POST)

  (3params:指定name参数;

    1params ={ "username"}:必须有一个名为username的name属性;

    params ={ "username=zs"}:必须有一个名为username的name属性,且值必须是zs;

    2params ={ "username=zs","age!=12"}:名为age的name属性值不能为12,但可以为空;

    3params ={ "!height"}:不能有名为height的name属性;

  (4headers:指定请求头信息;

    @RequestMapping(value = "welcome",headers = {"",""})

二、参数绑定注解:

 1)处理request uri注解:@PathVariable

@Controller
public class SpringMVCHandler {
    @RequestMapping(value = "welcome/{id1}/{id2}")
    public String welcome(@PathVariable String id1,@PathVariable("id2") String id3){
        return "success";
    }
}

  1)@PathVariable;

  2)@PathVariable("id2"):指定参数名;

  3@RequestParam(defaultValue = "1"):如果不传递参数,默认为1

2)处理request header注解:@RequestHeader,@CookieValue;

  1@RequestHeader:

            @Controller
            public class SpringMVCHandler {
                @RequestMapping(value = "welcome" )
                public String welcome(@RequestHeader("Accept-Language") String language,
                                    @RequestHeader("Accept-Encoding") String encoding){
                    System.out.println(language);
                    System.out.println(encoding);
                    return "success";
                }
}

  2@CookieValue:

            @Controller
            public class SpringMVCHandler {
                @RequestMapping(value = "welcome" )
                public String welcome(@CookieValue("JSESSIONID") String cookie){
                    System.out.println(cookie);
                    return "success";
                }
}

3)处理request body注解:@RequestParam,@RequestBody;

  1@RequestParam:简单类型;

    //@RequestParam(value = "id",required = false)

     required = false:允许前端提交的表单不存在名为id的name属性;

    //前端默认只能多传name属性,不能少传; 

  2@RequestBody:json格式对象;

4)处理attribute类型注解:@SessionAttributes,@ModelAttribute;

  1@SessionAttributes:作用于类;

    //@SessionAttributes("pet"):如果把名为pet的属性存入requestScope,则同时会存放于sessionScope;

    //@SessionAttributes(types="User.class,Student.calss"):

    如果把类型为User/Student的属性存入requestScope,则同时会存放于sessionScope;

@Controller
@RequestMapping("/editPet.do")
@SessionAttributes("pet")
public class EditPetForm {
    // ...
}

  2@ModelAttribute:作用于方法/参数;

    在任何一次请求前都会先执行@ModelAttribute修饰的方法,慎用;

            @Controller
            public class AttributeTest {
                @ModelAttribute
                public void queryAttribute(Map<String,Object> map){
                    Student student = new Student(1, "zs", 12);
                    //把student对象存入ModelAttribute;
                    map.put("stu",student );
                }
                @RequestMapping(value = "modelAttributeTest")
                public String setModelAttribute(@ModelAttribute(value = "stu") Student student){
                    student.setSname("ls");
                    System.out.println(student);
                    return "success";
                }
}

 

 

posted @ 2019-08-11 01:26  开拖拉机的拉风少年  阅读(125)  评论(0编辑  收藏  举报