欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

springmvc获取传递参数的几种方式

程序员文章站 2022-07-15 11:11:56
...

 

1.基本传参方式

只要表单中input的name值和方法参数变量名一直就行。参数类型最好不要用基本数据类型,如果前端传递的参数是null或空字符串就会发生数据转换的异常,所以最好用包装类Integer等。当然也能用Pojo作为参数类型,只要参数值与属性名一一对应即可。比如:

模型对象:
public class User {
    private String firstName;
    private String lastName;
//getter、setter省略
}

Controller代码:
@RequestMapping("/user")
public void test(User user) {
}

表单:
<form action="saysth.do" method="post">
<input name="firstName" value="张" type="text"/>
<input name="lastName" value="三" type="text"/>
......
</form>

 

2.直接用HttpServletRequest获取

@RequestMapping("/") 
public String get(HttpServletRequest request, HttpServletResponse response) { 
   System.out.println(request.getParameter("a")); 
    return "helloWorld"; 
}

 

3.用注解@RequestParam绑定请求参数

@RequestMapping("/login")
   public String login(@RequestParam(value="age",required=false,defaultValue="24") String agenum){
       return "hello";
   }

 value属性匹配前台参数,required属性规定是否必须传值(默认为true),若为true且前台没传此参数则抛出异常。defaultValue规定此参数的默认值(存在此参数时,说明前台不是必要传值,required为false)

 

[email protected]注解获取路径中的参数

@RequestMapping(value="user/{id}/{name}",method=RequestMethod.GET)
    public String printMessage1(@PathVariable String id,@PathVariable String name) {
        System.out.println(id);
        System.out.println(name);
        return "users";
    }

 方法参数变量名跟地址{}中的名称一致,当然不一定非要适用于get方法

 

[email protected]

类似@ResponseBody,它就是将http请求的body部分作为String参数传入,经常用于接受ajax请求传递的json字符串。

 @ResponseBody
    @RequestMapping(value = "/detail", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
    public Port detail(@RequestBody String param) {
    	JSONObject object = JSONObject.fromObject(param);
    	String id = object.getString("id");
    	Port port = iPortService.getPortDetail(id);
        logger.debug("port Info : " + port);
        return port;
    }