springMVC请求参数(一)

69 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第31天,点击查看活动详情

SpringMVC获取请求参数

下面介绍一些springMVC里面的一些获取请求参数的方法。

通过servletAPI获取

将HttpServletRequest作为控制器方法的形参,此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象

@RequestMapping("/test")
public String test(HttpServletRequest request){
    String username = request.getParameter ("username");
    String password = request.getParameter ("password");
    System.out.println("username: "+username+",password: "+password) ;
    return" success" ;
}

通过控制器方法的形参获取请求参数

在控制器方法的形参位置,设置和请求参数同名的形参,当浏览器发送请求,匹配到请求映射时,在 DispatcherServlet中就会将请求参数赋值给相应的形参

<form th:action="@{/testPath}" method="post">
<input type="text" name= "id"><br>
<input type="text" name="pass"><br>
<input type="checkbox" name="hobby" value="a">a<br>
<input type=" checkbox" name="hobby" value="b">b<br>
<input type=" checkbox" name= "hobby" value="c">c<br>
<input type= "submit" value="test">
</form>

@RequestMapping(value = "/testPath" )
形参参数名与请求参数名一致
若请求参数出现多个重名,可以使用String类或String数组接受
String类会用","拼接
pubLic String toTarget(int id , String pass, String hobby){
System. out. println(id+" "+pass+" "+hobby);
return "target"; 
}

该案例会根据用户输入的id、密码以及多选框的选择,输出value值

@RequestParam

@RequestParam是将请求参数和控制器方法的形参创建映射关系

@RequestParam注解一共有三个属性:

  1. value:指定为形参赋值的请求参数的参数名

  2. required:设置是否必须传输此请求参数,默认值为true

    若设置为true时,则当前请求必须传输value所指定的请求参数,若没有传输该请求参数,且没有设置 defaultValue属性,则页面报错400: Required String parameter 'xxx' is not present;

    若设置为false,则当前请求不是必须传输value所指定的请求参数,若没有传输,则注解所标识的形参的值为null

  3. defaultValue:不管required属性值为true或false, 当value所指定的请求参数没有传输时,则使用默认值为形参赋值

     public String ToTarger (           
     @RequestParam(value = "id", required = true, defaultVaLue = "-1") String id
     String pass ,
     String hobby){
     System.out.println(id+" "+pass+" ” +hobby);
     return "target" ;
     }
    

上面@RequestParam案例中,required = true:必须传输 ,默认为true; defaultValue = "-1":默认值-1, 一般为请求为空时,会使用值为形参赋值