SpringMVC:如何获取到请求携带的参数?

使用springMVC进行获取请求参数,很便捷。

 

 


一、获取基本数据类型参数

  自动匹配请求中name响应方法中参数的属性名一致的参数,自动完成类型转换和赋值。

例子:

  接受对login的请求,获取到请求携带的参数。

@Controller
public class LoginController {
    @RequestMapping("login")
    public void demo(String name,int age){
        //获取的请求数据中名为name和age的值,并且自动转换类型
        System.out.println("获取到了参数"+name+age);
    }
}

请求:

  

 响应:

  

 (一)、请求中name与响应方法中参数的属性名不一致时

  通过RequestPraam注解的 value属性 进行映射。

例子:

  设置name为usname的映射参数为name,设置name为usage的映射参数为age

@Controller
public class LoginController {
    @RequestMapping("login")
    public void demo(@RequestParam("usname") String name,@RequestParam("usage") int age){
        System.out.println("获取到了参数"+name+age);
    }
}

请求:

响应:

 (二)、请求中没有传参数过来,设置默认值

  如果是基本数据类型,则会报错。如果是包装类,则会赋值为null。

  通过RequestPraam注解的 defaultValue属性 设置默认值。

例子:

  给name设置默认值redPig,给age设置默认值3。

@Controller
public class LoginController {
    @RequestMapping("login")//配置方法映射的逻辑名
    public void demo(@RequestParam(defaultValue = "redPig") String name,@RequestParam(defaultValue = "3") int age){
        System.out.println("获取到了参数"+name+age);
    }
}

请求:

 响应:

 (三)、避免包装类获取到null值

  场景:我需要浏览器提供name的值作为sql查询条件,此时浏览器不传的话会默认拿到null。

  通过RequestPraam注解的 required属性 设置为true,即必须传参。

例子:

@Controller
public class LoginController {
    @RequestMapping("login")//配置方法映射的逻辑名
    public void demo(@RequestParam(required = true)String name){
        System.out.println("获取到了参数:name-"+name);
    }
}

请求:

响应:

(四)、同名参数存入集合中

  场景:多选框提交了多个同名参数。

  通过RequestPraam注解的 value属性 解决。

例子:

public class LoginController {
    @RequestMapping("login")//配置方法映射的逻辑名
    public void demo(@RequestParam("favs") List<String> list){
        System.out.println("获取到了同名参数内容:"+list);
    }
}

请求:

 

响应:


二、获取参数放入到对象中

  如果参数的name值和对象的属性值一致,则会通过属性的get/set方法进行自动注入。

pojo对象User:

例子:

  把参数自动注入到对象中。

@Controller
public class LoginController {
    @RequestMapping("login")
    public void demo(User user){
        System.out.println("参数自动注入到对象中了:"+user);
    }
}

请求:

响应:

 


三、restful风格传参数

  把参数以 / 分割放在请求后面。

  使用RequestMapping注解配置请求方法和携带的参数,使用PathVariable注解配置参数获取来源。

例子:

@Controller
public class LoginController {
    @RequestMapping("login/{uage}/{name}")
    public void demo(@PathVariable String name,@PathVariable("uage") int age){//可以自定义映射名(没必要)
        System.out.println("restful风格获取参数:"+name+":"+age);
    }
}

请求:

 

响应:

 

注意:

  使用restful风格会导致访问目录出现差错,所以在跳转的时候不要使用相对路径。

 

posted @ 2023-03-03 16:38  在博客做笔记的路人甲  阅读(155)  评论(0编辑  收藏  举报