大家在开发中经常会用到Spring MVC Controller来接收请求参数,主要常用的接收方式就是通过实体对象以及形参等方式、有些用于GET请求,有些用于POST请求,有些用于两者。下面的几种常见的后台接收参数的方式分享一下。主要方式如下:
实体 Bean 接收请求参数
处理方法的形参接收请求参数
HttpServletRequest 接收请求参数
@PathVariable 接收 URL 中的请求参数
@RequestParam 接收请求参数
@ModelAttribute 接收请求参数
可以根据实际情况选择合适的接收方式。
一、通过实体Bean接收请求参数
@RequestMapping("/login")publicStringlogin(Useruser,Modelmodel){if("admin".equals(user.getName())&&"123456".equals(user.getPwd())){model.addAttribute("message","登录成功");return"main";//登录成功,跳转到主页}else{model.addAttribute("message","用户名或密码错误");return"login";}}
二、通过处理方法的形参接收请求参数
通过处理方法的参数接收请求参数,就是将表单参数直接写入控制器类对应方法的参数中,即参数名称与请求参数名称完全相同。接收参数模式适用于GET和POST提交请求
@RequestMapping("/login")publicStringlogin(Stringname,Stringpwd,Modelmodel){if("admin".equals(user.getName())&&"123456".equals(user.getPwd())){model.addAttribute("message","登录成功");return"main";//登录成功,跳转到跳转到主页}else{model.addAttribute("message","用户名或密码错误");return"login";}}
三、通过HttpServletRequest接收请求参数
@RequestMapping("/login")publicStringlogin(HttpServletRequestrequest,Modelmodel){Stringname=request.getParameter("name");Stringpwd=request.getParameter("pwd");if("admin".equals(name)&&"123456".equals(pwd)){model.addAttribute("message","登录成功");return"main";//登录成功,跳转到main.jsp}else{model.addAttribute("message","用户名或密码错误");return"login";}}
四、通过@PathVariable接收URL中的请求参数
通过 @PathVariable 获取 URL 中的参数,示例代码如下。
@RequestMapping("/login/{name}/{pwd}")publicStringlogin(@PathVariableStringname,@PathVariableStringpwd,Modelmodel){if("admin".equals(name)&&"123456".equals(pwd)){model.addAttribute("message","登录成功");return"main";//登录成功,跳转到主页}else{model.addAttribute("message","用户名或密码错误");return"login";}}
五、通过@RequestParam接收请求参数
在方法入参处使用 @RequestParam 注解指定其对应的请求参数。@RequestParam 有以下三个参数:
value:参数名
required:是否必须,默认为 true,表示请求中必须包含对应的参数名,若不存在将抛出异常
defaultValue:参数默认值
@RequestMapping("/login")publicStringlogin(@RequestParamStringname,@RequestParamStringpwd,Modelmodel){if("admin".equals(name)&&"123456".equals(pwd)){model.addAttribute("message","登录成功");return"main";//登录成功,跳转到主页}else{model.addAttribute("message","用户名或密码错误");return"login";}}
六、通过@ModelAttribute接收请求参数
@ModelAttribute 注释用于将多个请求参数封装到单个实体对象中,以简化数据绑定过程,并自动作为模型数据公开,以便在视图页面表示中使用。 “通过实体bean接收请求参数”简单地将多个请求参数封装到一个实体对象中,而不将它们作为模型数据公开
@RequestMapping("/login")publicStringlogin(@ModelAttribute("user")Useruser,Modelmodel){if("admin".equals(name)&&"123456".equals(pwd)){model.addAttribute("message","登录成功");return"main";//登录成功,跳转到主页}else{model.addAttribute("message","用户名或密码错误");return"login";}}