Spring 获取请求参数

了解更多,请前往个人博客:风尘博客  http://www.dustyblog.cn/205.html
本文整理了六种获取请求参数的方式:表单、HttpServletRequest 、bean 接受、@PathVariable 、@ModelAttribute、@RequestParam;并简单分析了其相应的使用场景及适用请求方式。
  • 直接把表单的参数写在 Controller 相应的方法的形参中,适用于 get 方式提交,不适用于 post 方式提交:
  1. /**
  2.  * 通过 Controller 的形参接受数据
  3.  * @param username
  4.  * @param password
  5.  * @return
  6.  */
  7. @RequestMapping("/addUser")
  8. public String addUser(String username,String password) {
  9.     System.out.println("username is:"+username);
  10.     System.out.println("password is:"+password);
  11.     return "index";
  12. }
  • 通过 HttpServletRequest 接收,post 方式和 get 方式都可以
 
  1. /**
  2.  * 通过 HttpServletRequest 接收
  3.  * @param request
  4.  * @return
  5.  */
  6. @RequestMapping("/addUser")
  7. public String addUser(HttpServletRequest request) {
  8.     String username=request.getParameter("username");
  9.     String password=request.getParameter("password");
  10.     System.out.println("username is:"+username);
  11.     System.out.println("password is:"+password);
  12.     return "index";
  13. }
  • 通过一个 bean 来接收,post 方式和 get 方式都可以:
 
  1. /**
  2.  * 通过一个 bean(实体类)来接收
  3.  * @param user
  4.  * @return
  5.  */
  6. @RequestMapping("/addUser")
  7. public String addUser(UserModel user) {
  8.     System.out.println("username is:"+user.getUsername());
  9.     System.out.println("password is:"+user.getPassword());
  10.     return "index";
  11. }
 
  1. /**
  2.  * 通过@PathVariable 获取路径中的参数
  3.  * @param username
  4.  * @param password
  5.  * @return
  6.  */
  7. @RequestMapping(value="/addUser/{username}/{password}",method=RequestMethod.GET)
  8. public String addUser(@PathVariable String username, @PathVariable String password) {
  9.     System.out.println("username is:"+username);
  10.     System.out.println("password is:"+password);
  11.     return "index";
  12. }
  • 使用@ModelAttribute 注解获取POST 请求的表单数据:
 
  1. <form action ="<%=request.getContextPath()%>/demo/addUser5" method="post">
  2.     用户名:&nbsp;<input type="text" name="username"/><br/>
  3.     密&nbsp;&nbsp;码:&nbsp;<input type="password" name="password"/><br/>
  4.     <input type="submit" value="提交"/>
  5.     <input type="reset" value="重置"/>
  6. </form>

Java Controller 如下:

 
  1. /**
  2.  * 使用@ModelAttribute 注解获取 POST 请求的 FORM 表单数据
  3.  * @param user
  4.  * @return
  5.  */
  6. @RequestMapping(value="/addUser",method=RequestMethod.POST)
  7. public String addUser(@ModelAttribute("user") UserModel user) {
  8.     System.out.println("username is:"+user.getUsername());
  9.     System.out.println("password is:"+user.getPassword());
  10.     return "index";
  11. }
  • 用注解@RequestParam 绑定请求参数到方法入参:
 
  1. /**
  2.  * 用注解@RequestParam 绑定请求参数到方法入参
  3.  * @param username
  4.  * @param password
  5.  * @return
  6.  */
  7. @RequestMapping(value="/addUser",method=RequestMethod.GET)
  8. public String addUser(@RequestParam("username") String username,@RequestParam("password") String password) {
  9.     System.out.println("username is:"+username);
  10.     System.out.println("password is:"+password);
  11.     return "index";
  12. }

猜你喜欢

转载自blog.csdn.net/qq_41690817/article/details/80209859