springmvc获取请求参数的六种方法

来源:互联网 发布:易娱网络怎么样 编辑:程序博客网 时间:2024/06/07 20:35

1、直接将表单的参数作为Controller方法参数

    @RequestMapping("/test1.do")    public String test1(String id,String password) {        System.out.println("id:"+id);        System.out.println("password:"+password);        return "demo";    }

注:访问url为:http://localhost:8080/SpringMVC/demo/test1.do?id=111&password=123
提交的参数需要和Controller方法中的参数名称一致。

2、通过HttpServletRequest对象接收

  @RequestMapping("/test2.do")    public String test2(HttpServletRequest request) {        String name=request.getParameter("id");        String password=request.getParameter("password");        System.out.println("id:"+id);        System.out.println("password:"+password);        return "demo";    }

注:前台提交表单数据的对应表单”name”属性值必须为id和password,否则无法接收对应数据

3、通过一个javabean来接收
(1)建立一个javabean,要求属性名与请求参数名(name属性)一致,并提供get/set方法

package demo;public class User{    private String id;    private String password;    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }  }

(2)将该javabean作为方法参数传入

    @RequestMapping("/test3.do")    public String test3(User user) {        System.out.println("id:"+user.getId());        System.out.println("password:"+user.getPassword());        return "demo";    }

4、用注解@RequestParam

DispatcherServlet在调用Controller方法前,会先利用java的反射机制分析方法结构,此时,会调用request.getParameter()方法获得参数值,然后赋给对应的形参。
若此时形参与请求参数名称不一样,可以使用@RequestParam注解

RequestParam注解有三个参数
- - value:表示请求参数的参数名
- - required:表示该参数是否必须,默认true
- - defaultValue:请求参数的默认值

@RequestMapping("/test4.do")    public String addUser6(String id,@RequestParam("pwd") String password) {        System.out.println("id:"+id);        System.out.println("password is:"+password);        return "demo";    }

注:其中”pwd”是前台提交过来的请求参数

5、通过@PathVariable获取路径中的参数

@RequestMapping(value="/test5/{id}/{password}",method=RequestMethod.GET)public String tes5(@PathVariable String id,@PathVariable String password) {        System.out.println("id:"+id);        System.out.println("password:"+password);        return "demo";    }

例如,访问http://localhost:8080/SpringMVC/demo/111/123 路径时,则自动将URL中模板变量{id}和{password}绑定到被@PathVariable注解的同名参数上,即参数id=111,password=123。

6、使用@ModelAttribute注解获取POST请求的FORM表单数据
使用该注解的参数值将由model中取得。如果model中找不到,那么该参数会先被实例化,然后被添加到model中。在model中存在以后,请求中所有名称匹配的参数都会填充到该参数中。
(1)Jsp表单:

<form action ="SpringMVC/demo/test6.do" method="post">      账号:<input type="text" name="id"/><br/>     密码:<input type="password" name="password"/><br/>     <input type="submit" value="提交"/> </form> 

(2)建立一个javabean,封装参数

package demo;public class User{    private String id;    private String password;    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }  }

(3)Java Controller中使用@ModelAttribute注解:

@RequestMapping("/test6.do")    public String test6(@ModelAttribute("user") User user) {        System.out.println("id:"+user.getId());        System.out.println("password:"+user.getPassword());        return "demo";    }

注:其中表单中的name字段需要和javabean的属性字段一致