1.@RequestBody,@ResponseBodyjavascript
在使用@RequestBody和@ResponseBody以前须要先配置,通常是JSON数据和实体对象之间的转化,springMVC.xml配置文件须要以下配置:java
<mvc:default-servlet-handler /> <!-- java对象和json之间的转化--> <mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>application/json;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
Server端:ajax
@RequestMapping(value = "/ajax",method = RequestMethod.POST) @ResponseBody public GenericResponse ajax(HttpServletRequest request,@RequestBody User user){ //.............. return new GenericResponse(); //返回JSON数据 }
客户端:spring
function httprequest(){ $.ajax({ type: "POST", url: "/ajax", dataType: "json", contentType:"application/json", data:JSON.stringify( {a:1,b:"test"}), success: function(data){ alert(data.code) } }); }
经过@RequestBody注解的对象,能够自动把JSON转化成对象。json
下面是默认的表单提交方式。mvc
Server端:app
//-------------------方式2------------------------------ @RequestMapping(value = "/ajax",method = RequestMethod.POST) @ResponseBody public GenericResponse ajax(HttpServletRequest request,int a,String b){ //.............. return new GenericResponse(); //返回JSON数据 } //-------------------方式2------------------------------ class Param{ int a; String b; ..... getter/setter } @RequestMapping(value = "/ajax",method = RequestMethod.POST) @ResponseBody public GenericResponse ajax(HttpServletRequest request,Param param){ //.............. int a=param.getA(); String b=param.getB(); return new GenericResponse(); //返回JSON数据 }
客户端:ui
function httprequest(){ $.ajax({ type: "POST", url: "/ajax", dataType: "json", contentType:"application/x-www-form-urlencode", data:({a:1,b:"test"}), success: function(data){ alert(data.code) } }); }
关于Controller方法中经过设置参数 获取客户端传送过来的值的几点url
1.当POST表单提交方式,Controller 能够在方法中设置对象参数变量来接收客户端传送过来的值spa
也能够设置多个参数接收值。
2.当GET表单提交,则只能在Controller方法经过设置多个参数变量获取值。
3.当POST使用JSON方式提交,服务端须要使用@ResponseBody 注解对象参数,来获取客户端值。
2. @RequestParam(value="aa", required=true)
注解请求参数,将请求值绑定到方法参数,例如:
@RequestMapping("testRequestParam") public String filesUpload(@RequestParam(value="aa", required=true) String inputStr, @RequestParam(value="inputInt", required=false) int inputInt ,HttpServletRequest request) { // ......省略 return "index"; }
客户端请求: url?aa=xxx&inputInt=xxxx;
3.@ModelAttribute 使用详解