Spring MVC有哪些接收参数的方法呢?

Java-框架王 SpringMVC 发布时间:2021-07-12 21:40:27 阅读数:3988 1
Spring MVC中Controller接收参数有很多种方式,有用于get方式,有用于post方式,下面将列举常用的方式,如下所示:
 
  1. 使用实体 Bean 接收请求参数
  2. 使用处理方法的形参接收请求参数
  3. 使用HttpServletRequest 接收请求参数
  4. 使用@PathVariable 接收 URL 中的请求参数
  5. 使用@RequestParam 接收请求参数
  6. 使用@ModelAttribute 接收请求参数

一、使用实体Bean接收请求参数

   采用实体Bean接收请求参数可用于 get 和 post 提交请求方式
   注意事项:Bean属性名称须同请求参数名称相同
    如下
@RequestMapping("/login")
public String login(User user, Model model) {
    if ("userJava265".equals(user.getName())
            && "pwd123456".equals(user.getPwd())) {
       
        model.addAttribute("message", "登录成功");
        return "main"; // 登录成功,跳转到 main.jsp
    } else {
        model.addAttribute("message", "用户名或密码错误");
        return "login";
    }
}

二、采用方法的形参接收参数 

    注意事项:形参名称同请求参数名称完全相同
     此接收参数方式可用于 get及post
@RequestMapping("/login")
public String login(String name, String pwd, Model model) {
    if ("userJava265".equals(user.getName())
            && "pwd123456".equals(user.getPwd())) {
       
        model.addAttribute("message", "登录成功");
        return "main"; // 登录成功,跳转到 main.jsp
    } else {
        model.addAttribute("message", "用户名或密码错误");
        return "login";
    }
}

三、借助HttpServletRequest对象接收请求参数

采用HttpServletRequest 接收请求参数适用于 get 和 post 提交请求方式 
@RequestMapping("/login")
public String login(HttpServletRequest request, Model model) {
    String name = request.getParameter("name");
    String pwd = request.getParameter("pwd");
   
    if ("userJava265".equals(name)
            && "pwd123456".equals(pwd)) {
       
        model.addAttribute("message", "登录成功");
        return "main"; // 登录成功,跳转到 main.jsp
    } else {
        model.addAttribute("message", "用户名或密码错误");
        return "login";
    }
}
 

四、使用@PathVariable接收URL中的请求参数

 
@RequestMapping("/login/{name}/{pwd}")
public String login(@PathVariable String name, @PathVariable String pwd, Model model) {
   
    if ("userJava265".equals(name)
            && "pwd123456".equals(pwd)) {
       
        model.addAttribute("message", "登录成功");
        return "main"; // 登录成功,跳转到 main.jsp
    } else {
        model.addAttribute("message", "用户名或密码错误");
        return "login";
    }
}
在访问“http://localhost:8080/springMVCDemo/login/userJava265/pwd123456”路径访问时,
以上代码,则会自动将 {name} 和 {pwd} 绑定到通过 @PathVariable 注解的同名参数上
 即 name=userJava265、pwd=pwd123456
 

五、使用@RequestParam接收请求参数

在方法入参处使用 @RequestParam 注解指定其对应的请求参数。@RequestParam 有以下三个参数:
value:参数名
required:是否必须,默认为 true,表示请求中必须包含对应的参数名,若不存在将抛出异常
defaultValue:参数默认值

通过 @RequestParam 接收请求参数适用于 get 和 post 提交请求方式,示例代码如下。
@RequestMapping("/login")
public String login(@RequestParam String name, @RequestParam String pwd, Model model) {
   
    if ("userJava265".equals(name)
            && "pwd123456".equals(pwd)) {
       
        model.addAttribute("message", "登录成功");
        return "main"; // 登录成功,跳转到 main.jsp
    } else {
        model.addAttribute("message", "用户名或密码错误");
        return "login";
    }
}

注意事项:当形参和请求参数名称不同时,则会报404错误
 

六、使用@ModelAttribute接收请求参数

@ModelAttribute 注解用于将多个请求参数封装到一个实体对象中,从而简化数据绑定流程,而且自动暴露为模型数据,在视图页面展示时使用。

而“通过实体 Bean 接收请求参数”中只是将多个请求参数封装到一个实体对象,
并不能暴露为模型数据(需要使用 model.addAttribute 语句才能暴露为模型数据 )。

使用 @ModelAttribute 注解接收请求参数适用于 get 和 post 提交请求方式 
 
@RequestMapping("/login")
public String login(@ModelAttribute("user") User user, Model model) {
   
    if ("userJava265".equals(name)
            && "pwd123456".equals(pwd)) {
       
        model.addAttribute("message", "登录成功");
        return "main"; // 登录成功,跳转到 main.jsp
    } else {
        model.addAttribute("message", "用户名或密码错误");
        return "login";
    }
}


 
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/SpringMVC/202107/475.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者