博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springmvc 请求参数获取的几种方法
阅读量:6082 次
发布时间:2019-06-20

本文共 3621 字,大约阅读时间需要 12 分钟。

  hot3.png

1、直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交。

/** * 1.直接把表单的参数写在Controller相应的方法的形参中 * @param username * @param password * @return */ @RequestMapping("/addUser1") public String addUser1(String username,String password) {     System.out.println("username is:"+username);     System.out.println("password is:"+password);     return "demo/index"; }

url形式:                                      提交的参数需要和Controller方法中的入参名称一致。

2、通过HttpServletRequest接收,post方式和get方式都可以。

/** * 2、通过HttpServletRequest接收 * @param request * @return */@RequestMapping("/addUser2")public String addUser2(HttpServletRequest request) {    String username=request.getParameter("username");    String password=request.getParameter("password");    System.out.println("username is:"+username);    System.out.println("password is:"+password);}

3、通过一个bean来接收,post方式和get方式都可以。

(1)建立一个和表单中参数对应的bean

package demo.model;public class UserModel {        private String username;    private String password;    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    }

(2)用这个bean来封装接收的参数

/** * 3、通过一个bean来接收 * @param user * @return */@RequestMapping("/addUser3")public String addUser3(UserModel user) {    System.out.println("username is:"+user.getUsername());    System.out.println("password is:"+user.getPassword());    return "demo/index";}

4、通过@PathVariable获取路径中的参数

/** * 4、通过@PathVariable获取路径中的参数 * @param username * @param password * @return */@RequestMapping(value="/addUser4/{username}/{password}",method=RequestMethod.GET)public String addUser4(@PathVariable String username,@PathVariable String password) {    System.out.println("username is:"+username);    System.out.println("password is:"+password);    return "demo/index";}

例如,访问 路径时,则自动将URL中模板变量{username}和{password}绑定到通过@PathVariable注解的同名参数上,即入参后username=lixiaoxi、password=111111。

5、使用@ModelAttribute注解获取POST请求的FORM表单数据(此方法个人不推荐使用)
Jsp表单如下:

用户名: 
密  码: 

Java Controller如下:

/** * 5、使用@ModelAttribute注解获取POST请求的FORM表单数据 * @param user * @return */@RequestMapping(value="/addUser5",method=RequestMethod.POST)public String addUser5(@ModelAttribute("user") UserModel user) {    System.out.println("username is:"+user.getUsername());    System.out.println("password is:"+user.getPassword());    return "demo/index";}

特别注意:被@ModelAttribute注释的方法会在此controller每个方法执行前被执行,因此对于一个controller映射多个URL的用法来说,要谨慎使用。

6、用注解@RequestParam绑定请求参数到方法入参

当请求参数username不存在时会有异常发生,可以通过设置属性required=false解决,例如: @RequestParam(value="username", required=false)

/** * 6、用注解@RequestParam绑定请求参数到方法入参 * @param username * @param password * @return */@RequestMapping(value="/addUser6",method=RequestMethod.GET)public String addUser6(@RequestParam("username") String username,                       @RequestParam("password") String password) {    System.out.println("username is:"+username);    System.out.println("password is:"+password);    return "demo/index";}

6、用注解@Valid

@PostMapping(value = "/girls")public Result
girlAdd(@Valid Girl girl, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultUtil.error(1, bindingResult.getFieldError().getDefaultMessage()); } girl.setCupSize(girl.getCupSize()); girl.setAge(girl.getAge()); return ResultUtil.success(girlRepository.save(girl));}

@Valid 是使用 hibernate validation的时候使用

@Validated 是只用spring  Validator 校验机制使用

转载于:https://my.oschina.net/360yg/blog/1591075

你可能感兴趣的文章
本地vs云:大数据厮杀的最终幸存者会是谁?
查看>>
阿里云公共镜像、自定义镜像、共享镜像和镜像市场的区别 ...
查看>>
shadowtunnel v1.7 发布:新增上级负载均衡支持独立密码
查看>>
Java线程:什么是线程
查看>>
mysql5.7 创建一个超级管理员
查看>>
【框架整合】Maven-SpringMVC3.X+Spring3.X+MyBatis3-日志、JSON解析、表关联查询等均已配置好...
查看>>
要想成为高级Java程序员需要具备哪些知识呢?
查看>>
带着问题去学习--Nginx配置解析(一)
查看>>
onix-文件系统
查看>>
java.io.Serializable浅析
查看>>
我的友情链接
查看>>
多线程之线程池任务管理通用模板
查看>>
CSS3让长单词与URL地址自动换行——word-wrap属性
查看>>
CodeForces 580B Kefa and Company
查看>>
开发规范浅谈
查看>>
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming
查看>>
鼠标增强软件StrokeIt使用方法
查看>>
本地连接linux虚拟机的方法
查看>>
某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
查看>>
BABOK - 企业分析(Enterprise Analysis)概要
查看>>