SpringMVC中Controller接收请求参数的常见方式

Posted nuist__NJUPT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringMVC中Controller接收请求参数的常见方式相关的知识,希望对你有一定的参考价值。

SpringMVC中Controller接收请求参数的常见方式

Controller接收请求参数的方式有很多种,有的适合get请求方式,有的适合post请求方式,有的两者都适合,开发者可以根据自己的需求选择适合的接收方式。

1-通过实体Bean接收请求参数

@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/login")
    public String login(UserForm userForm, HttpSession session, Model model){
        if("wangguodong".equals(userForm.getUname()) && "123".equals(userForm.getUpass())){ //用户名和密码都相等
            session.setAttribute("u", userForm);
            return "main" ; //登录成功,跳到主页面
        }else{
            model.addAttribute("messageError", "用户名或密码错误") ;
            return "login" ;
        }
    }

    @RequestMapping("/register")
    public String register(UserForm userForm, Model model){
        if("wangguoodng".equals(userForm.getUname()) && "123".equals(userForm.getUpass()) && "123".equals(userForm.getReupass())){
            return "login" ;//注册成功,进入登录页面
        }else{ //注册失败,返回注册页面
            model.addAttribute("uname", userForm.getUname()) ;
            return "register" ;
        }
    }
}

2-通过处理方法的形参接收请求参数
就是直接把表单参数写在控制类相应方法的形参中,形参名称与请求参数名称完全相同。

@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/login")
    public String login(String uname, String upass, Model model){
        if("wangguodong".equals(uname) && "123".equals(upass)){ //用户名和密码都相等
            return "main" ; //登录成功,跳到主页面
        }else{
            model.addAttribute("messageError", "用户名或密码错误") ;
            return "login" ;
        }
    }

    @RequestMapping("/register")
    public String register(String uname, String upass, String reupass, Model model){
        if("wangguodong".equals(uname) && "123".equals(upass) && "123".equals(reupass)){
            return "login" ;//注册成功,进入登录页面
        }else{ //注册失败,返回注册页面
            model.addAttribute("uname", uname) ;
            return "register" ;
        }
    }
}

3-通过HttpServletRequest接收请求参数,适用于get和post请求方式。

@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/login")
    public String login(HttpServletRequest request, Model model){
        String uname = request.getParameter("uname") ;
        String upass = request.getParameter("upass") ;
        if("wangguodong".equals(uname) && "123".equals(upass)){ //用户名和密码都相等
            return "main" ; //登录成功,跳到主页面
        }else{
            model.addAttribute("messageError", "用户名或密码错误") ;
            return "login" ;
        }
    }

    @RequestMapping("/register")
    public String register(HttpServletRequest request, Model model){
        String uname = request.getParameter("uname") ;
        String upass = request.getParameter("upass") ;
        String reupass = request.getParameter("reupass")  ;
        if("wangguodong".equals(uname) && "123".equals(upass) && "123".equals(reupass)){
            return "login" ;//注册成功,进入登录页面
        }else{ //注册失败,返回注册页面
            model.addAttribute("uname", uname) ;
            return "register" ;
        }
    }
}

4-通过@RequestParam接收请求参数,请求参数名可以与接收参数名称不一致。

@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/login")
    public String login(@RequestParam String uname, @RequestParam String upass,  Model model){
        if("wangguodong".equals(uname) && "123".equals(upass)){ //用户名和密码都相等
            return "main" ; //登录成功,跳到主页面
        }else{
            model.addAttribute("messageError", "用户名或密码错误") ;
            return "login" ;
        }
    }

    @RequestMapping("/register")
    public String register(@RequestParam String uname, @RequestParam String upass, @RequestParam String reupass, Model model){
        if("wangguodong".equals(uname) && "123".equals(upass) && "123".equals(reupass)){
            return "login" ;//注册成功,进入登录页面
        }else{ //注册失败,返回注册页面
            model.addAttribute("uname", uname) ;
            return "register" ;
        }
    }
}

5-通过@ModelAttribute接收请求参数
当该注解放在处理方法的形参上时,用于将多个请求封装到一个实体对象,从而简化数据绑定流程,而且自动暴露为模型数据。


@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/login")
    public String login(@ModelAttribute("user")UserForm user){
        if("wangguodong".equals(user.getUname()) && "123".equals(user.getUpass())){ //用户名和密码都相等
            return "main" ; //登录成功,跳到主页面
        }else{
            return "login" ;
        }
    }

    @RequestMapping("/register")
    public String register(@ModelAttribute("user") UserForm user){
        if("wangguodong".equals(user.getUname()) && "123".equals(user.getUpass()) && "123".equals(user.getReupass())){
            return "login" ;//注册成功,进入登录页面
        }else{ //注册失败,返回注册页面
            return "register" ;
        }
    }
}

以上是关于SpringMVC中Controller接收请求参数的常见方式的主要内容,如果未能解决你的问题,请参考以下文章

SpringMVC中Controller接收请求参数的常见方式

SpringMVC中controller接收Json数据

SpringMVC:获取请求参数

ajax和springmvc的请求响应原理

SpringMVC jsp页面向controller传递参数的五种方式

SpringMVC总结