1.@RequestBody,@ResponseBody
在使用@RequestBody和@ResponseBody之前需要先配置,一般是JSON数据和实体对象之间的转化,springMVC.xml配置文件需要如下配置:
<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端:
@RequestMapping(value = "/ajax",method = RequestMethod.POST)
@ResponseBody
public GenericResponse ajax(HttpServletRequest request,@RequestBody User user){
//..............
return new GenericResponse(); //返回JSON数据
}
客户端:
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转化成对象。
下面是默认的表单提交方式。
Server端:
//-------------------方式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数据
}
客户端:
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方法中通过设置参数 获取客户端传送过来的值的几点
1.当POST表单提交方式,Controller 可以在方法中设置对象参数变量来接收客户端传送过来的值
也可以设置多个参数接收值。
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 使用详解
来源:oschina
链接:https://my.oschina.net/u/1403215/blog/750384
