700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 一学就会:springMVC获取请求参数有哪几种方式?

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

时间:2021-04-20 18:20:08

相关推荐

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

文章目录

一、前言二、初步认识三、servletAPI四、方法参数五、@RequestParam六、实体类七、总结

一、前言

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

大家在学习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>

表单就是这样:

三、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所指定的请求参数没有传输或传输的值为""时,则使用默认值为形参赋值

运行结果完全正确:

六、实体类

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

下面看代码:

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

测试一下:

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

七、总结

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

如果对你有帮助,可以给博主三连支持一下哦~~ 非常感谢, 一起加油,一起进步!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。