这篇文章主要讲解了“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>
表单就是这样:
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是将请求参数和控制器方法的形参创建映射关系
@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"; }
测试一下:
提交后运行结果也是完全正确的:
感谢各位的阅读,以上就是“springMVC获取请求参数的方式有哪些”的内容了,经过本文的学习后,相信大家对springMVC获取请求参数的方式有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。