springMVC获取请求参数的几种方式汇总

2023-01-21 0 3,382

目录

一、前言

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

大家在学习springMVC框架时候,一定学习过使用这个框架来获取请求的参数,那么各位小伙伴们,获取请求参数有几种方法呢?使用哪种方式最好呢?在什么时候使用这些方法呢?那么这一篇文章,我就带大家来看一看这些问题的答案。

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

二、初步认识

那么什么是请求参数呢?

可以直接在请求地址中给于请求参数的值

springMVC获取请求参数的几种方式汇总

还可以以表单提交的方式,例如:

<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>

表单就是这样:

springMVC获取请求参数的几种方式汇总

三、servletAPI

HttpServletRequest是我们在javaweb学习中学到的,它也可以用在我们springMVC框架中,将HttpServletRequest作为控制器方法的形参,此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象

具体代码如下:

    @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是获取多个属性的值。

四、方法参数

接下来介绍第二种方法。

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

具体代码如下:

    @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

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

@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

若设置为true时,则当前请求必须传输value所指定的请求参数,若没有传输该请求参数,且没有设置defaultValue属性,则页面报错400:Required
String parameter ‘xxx’ is not present;若设置为false,则当前请求不是必须传输value所指定的请求参数,若没有传输,则注解所标识的形参的值为null

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

运行结果完全正确:

springMVC获取请求参数的几种方式汇总

六、实体类

最后一种方式,可以在控制器方法的形参位置设置一个实体类类型的形参,此时若浏览器传输的请求参数的参数名和实体类中的属性名一致,那么请求参数就会为此属性赋值

下面看代码:

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\";
    }

测试一下:

springMVC获取请求参数的几种方式汇总

提交后运行结果也是完全正确的:

springMVC获取请求参数的几种方式汇总

七、总结

乐莫乐兮新相知,很高兴各位小伙伴可以坚持看完这篇文章。以上四种方式获取请求参数就介绍完了,大家可以根据自己的需要选择合适的方式哦~

:本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可, 转载请附上原文出处链接。
1、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
2、本站提供的模板、软件工具等其他资源,均不包含技术服务,请大家谅解!
3、本站提供的资源仅供下载者参考学习,请勿用于任何商业用途,请24小时内删除!
4、如需商用,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
5、本站部分资源存放于百度网盘或其他网盘中,请提前注册好百度网盘账号,下载安装百度网盘客户端或其他网盘客户端进行下载;
6、本站部分资源文件是经压缩后的,请下载后安装解压软件,推荐使用WinRAR和7-Zip解压软件。
7、如果本站提供的资源侵犯到了您的权益,请邮件联系: 442469558@qq.com 进行处理!

猪小侠源码-最新源码下载平台 Java教程 springMVC获取请求参数的几种方式汇总 http://www.20zxx.cn/463037/xuexijiaocheng/javajc.html

猪小侠源码,优质资源分享网

常见问题
  • 本站所有资源版权均属于原作者所有,均只能用于参考学习,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,建议提前注册好百度网盘账号,使用百度网盘客户端下载
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务