springmvc获取传递参数的几种方式
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)
4.@PathVariable注解获取路径中的参数
@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方法
5.@RequestBody
类似@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; }
相关推荐
Lzs 2020-10-23
聚合室 2020-11-16
零 2020-09-18
Justhavefun 2020-10-22
jacktangj 2020-10-14
ChaITSimpleLove 2020-10-06
Andrea0 2020-09-18
周游列国之仕子 2020-09-15
afanti 2020-09-16
88234852 2020-09-15
YClimb 2020-09-15
风雨断肠人 2020-09-04
卖口粥湛蓝的天空 2020-09-15
stulen 2020-09-15
pythonxuexi 2020-09-06
abfdada 2020-08-26
梦的天空 2020-08-25