Spring获取前台参数的几种方式

1 . 自动注入

    /* 自动注入 , 直接写在controller方法的形参中 , 前后端名称需保持一致 */
    @RequestMapping("/test1")
    public String test1(String name , Integer age , Long time , Person person) {
        return "Hello " + name + " , " + age + " , " + time + " . " + person;
    }

2 . @RequestParam绑定请求参数

    /* 通过@RequestParam绑定参数 */
    @RequestMapping("/test2")
    public String test2(@RequestParam(name = "name" , required = false)String name , @RequestParam Integer age) {
        return "Hello " + name + " , " + age;
    }

@RequestParam中有个required参数 , 默认为true , 当为true表示该参数必传 , 如果没传则会报错

3 . @PathVariable获取路径中的参数

    /* 通过@PathVariable获取路径上的参数 */
    @RequestMapping("/test3/{name}/{age}")
    public String test3(@PathVariable String name , @PathVariable("age") Integer age){
        return "Hello " + name + " , " + age;
    }
4 . 通过HttpServletRequest对象手动get , 获取的值均为String型
    /* 通过request手动获取 */
    @RequestMapping("/test4")
    public String test4(HttpServletRequest req){
        String name = req.getParameter("name");
        String age = req.getParameter("age");
        return "Hello " + name + " , " + age;
    }

5 . 通过@ModelAttribute获取form中的参数

    /* 通过@ModelAttribute 获取post请求的form表单数据 */
    @RequestMapping("/test5")
    public String test5(@ModelAttribute Person person){
        return "Hello " + person.getName() + " , " + person.getAge();
    }
person中的成员变量名称需要和前台form中的name值保持一致 , 且必须要有get/set 方法 , 否则无法注入


 
 

你可能感兴趣的:(Java)