0
点赞
收藏
分享

微信扫一扫

一学就会:springMVC获取请求参数有哪几种方式?

司马吹风 2022-04-04 阅读 157

文章目录


一、前言

大家好,我是卷心菜,大二学生一枚。

废话不多说,满满的干货,赶快来看看吧~

二、初步认识

那么什么是请求参数呢?

可以直接在请求地址中给于请求参数的值
在这里插入图片描述
还可以以表单提交的方式,例如:

<form>
    用户名:<input type="text" name="username"/><br/>
    密码:<input type="password" name="password"/><br/>
    爱好:<input type="checkbox" name="hobby" value="C++"/>C++
         <input type="checkbox" name="hobby" value="Java"/>Java
         <input type="checkbox" name="hobby" value="C"/>C<br/>
    <button type="submit">提交</button>
</form>

表单就是这样:
在这里插入图片描述

三、servletAPI

具体代码如下:

    @RequestMapping("/one")
    public String testParam(HttpServletRequest request) {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String[] hobbies = request.getParameterValues("hobby");
        return "success";
    }

当我们在表单中设置正确的请求地址后,提交表单时,就会调用该方法,然后根据表单的name属性值获取相应的参数值。相信大家可以看到,getParameter是获取单个属性的值,getParameterValues是获取多个属性的值。

四、方法参数

接下来介绍第二种方法。

具体代码如下:

    @RequestMapping("/two")
    public String testTwo(String username, 
    						String password, 
    						String hobby) {
        System.out.println("username:" + username 
                            + ",password:" + password
                            + ",hobby:" + hobby);
        return "success";
    }

当然,也可以写成这样:

    @RequestMapping("/two")
    public String testTwo(String username, 
    						String password, 	
    						String[] hobby) {
        System.out.println("username:" + username
                            + ",password:" + password
                            + ",hobby:" + hobby);
        return "success";
    }

这两种都可以,第一种会把多个参数的值转换成一个数组;第二组会把参数值放进数组中,需要自己遍历得到结果。

五、@RequestParam

推荐使用这种方式,非常好用。

    @RequestMapping("/three")
    public String testThree(@RequestParam(value = "username",
                                          required = false,
                                          defaultValue = "hello") String username,
                            @RequestParam(value = "password") String password,
                            @RequestParam(value = "hobby") String hobby) {
        System.out.println("username:" + username
                + ",password:" + password
                + ",hobby:" + hobby);
        return "success";
    }

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

  • value:指定为形参赋值的请求参数的参数名
  • required:设置是否必须传输此请求参数,默认值为true
  • defaultValue:不管required属性值为true或false,当value所指定的请求参数没有传输或传输的值为""时,则使用默认值为形参赋值

运行结果完全正确:
在这里插入图片描述

六、实体类

下面看代码:

public class User {
    private String username;
    private String password;
	private String[] hobby;
}

这个user实体类的getter和setter以及toString就不列出来了

    @RequestMapping("/four")
    public String testFour(User user) {
        System.out.println(user);
        return "success";
    }

测试一下:
在这里插入图片描述
提交后运行结果也是完全正确的:
在这里插入图片描述

七、总结

在这里插入图片描述

举报

相关推荐

0 条评论