Spring MVC传递接收参数的几种方式

举报
Java李杨勇 发表于 2022/07/31 20:32:19 2022/07/31
【摘要】 highlight: a11y-dark大家在开发中经常会用到Spring MVC Controller来接收请求参数,主要常用的接收方式就是通过实体对象以及形参等方式、有些用于GET请求,有些用于POST请求,有些用于两者。 下面的几种常见的后台接收参数的方式分享一下。主要方式如下:实体 Bean 接收请求参数处理方法的形参接收请求参数HttpServletRequest 接收请求参数@...

highlight: a11y-dark

大家在开发中经常会用到Spring MVC Controller来接收请求参数,主要常用的接收方式就是通过实体对象以及形参等方式、有些用于GET请求,有些用于POST请求,有些用于两者。 下面的几种常见的后台接收参数的方式分享一下。主要方式如下:

  • 实体 Bean 接收请求参数
  • 处理方法的形参接收请求参数
  • HttpServletRequest 接收请求参数
  • @PathVariable 接收 URL 中的请求参数
  • @RequestParam 接收请求参数
  • @ModelAttribute 接收请求参数

可以根据实际情况选择合适的接收方式。

一、通过实体Bean接收请求参数

@RequestMapping("/login")
public String login(User user, Model model) {
    if ("admin".equals(user.getName())
            && "123456".equals(user.getPwd())) {
        model.addAttribute("message", "登录成功");
        return "main"; // 登录成功,跳转到主页
    } else {
        model.addAttribute("message", "用户名或密码错误");
        return "login";
    }
}

二、通过处理方法的形参接收请求参数

通过处理方法的参数接收请求参数,就是将表单参数直接写入控制器类对应方法的参数中,即参数名称与请求参数名称完全相同。 接收参数模式适用于GET和POST提交请求

@RequestMapping("/login")
public String login(String name, String pwd, Model model) {
    if ("admin".equals(user.getName())
            && "123456".equals(user.getPwd())) {
       
        model.addAttribute("message", "登录成功");
        return "main"; // 登录成功,跳转到跳转到主页
    } else {
        model.addAttribute("message", "用户名或密码错误");
        return "login";
    }
}

三、通过HttpServletRequest接收请求参数

@RequestMapping("/login")
public String login(HttpServletRequest request, Model model) {
    String name = request.getParameter("name");
    String pwd = 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}")
public String login(@PathVariable String name, @PathVariable String pwd, Model model) {
   
    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")
public String login(@RequestParam String name, @RequestParam String pwd, Model model) {
   
    if ("admin".equals(name)
            && "123456".equals(pwd)) {
        model.addAttribute("message", "登录成功");
        return "main"; // 登录成功,跳转到主页
    } else {
        model.addAttribute("message", "用户名或密码错误");
        return "login";
    }
}

六、通过@ModelAttribute接收请求参数

@ModelAttribute 注释用于将多个请求参数封装到单个实体对象中,以简化数据绑定过程,并自动作为模型数据公开,以便在视图页面表示中使用。  
“通过实体bean接收请求参数”简单地将多个请求参数封装到一个实体对象中,而不将它们作为模型数据公开

@RequestMapping("/login")
public String login(@ModelAttribute("user") User user, Model model) {
   
    if ("admin".equals(name)
            && "123456".equals(pwd)) {
       
        model.addAttribute("message", "登录成功");
        return "main"; // 登录成功,跳转到主页
    } else {
        model.addAttribute("message", "用户名或密码错误");
        return "login";
    }
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。