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 使用詳解