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方法
类似@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;
}