A) 常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况( String–> 简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get方式中queryString的值,也可以处理post方式中 body data的值;
B)用来处理Content-Type:application/x-www-form-urlencoded
编码的内容,提交方式GET
、POST
;
C) 该注解有三个属性:
value
:参数名字,即入参的请求参数名字;
required
:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报400错误码;
defaultValue
:默认值,表示如果请求中没有同名参数时的默认值;
@RequestMapping("findUserById")
public String findUserById(@RequestParam(defaultValue="1",value="userid",required=true) String id) {
return "success";
}
形参名称为id,但是这里使用value=”userid”限定接收的参数名为userid,所以页面传递参数的名必须为userid。这里通过required=true
限定userid参数为必需传递,如果不传递则报400错误,由于使用了defaultvalue="1"
默认值即使不传userid参数它的值为”1”,所以页面不传递userid也不会报错,如果去掉defaultvalue="1"
且定义required=true
则如果页面不传递userid则会报错。
该注解常用来处理非Content-Type:application/x-www-form-urlencoded
编码的内容,例如application/json
, application/xml
等;
它是通过使用HandlerAdapter配置的HttpMessageConverters来解析post data body,然后绑定到相应的bean上的。
用来将Java对象转成Json数据,返回页面
项目搭建在这篇《SpringMVC之注解以及参数封装》以及介绍过,这里不再介绍
环境:JDK1.8、tomcat8、spring4.3.2、jackson2.6.5
因为Spring和jackson会出现版本兼容问题,我使用的是spring4.3.2和jackson2.6.5
<mvc:annotation-driven />
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.4.4.min.js">script>
head>
<script type="text/javascript">
var jsonUser = JSON.stringify({"username":"张三","age":"18","address":"北京"});
function requestJson(){
$.ajax({
type:"post",
url:'${pageContext.request.contextPath }/user/requestJson.do',
contentType:"application/json;chartset=utf-8",
data:jsonUser,
success:function(data){
console.log(data);
}
});
}
function requestPojo(){
$.ajax({
type:"post",
url:'${pageContext.request.contextPath }/user/requestPojo.do',
data:{
username:"李四",
age:"18",
address:"北京"
},
success:function(data){
console.log(data);
}
});
}
script>
<body>
<input type="button" onclick="requestJson()" value="请求json,返回json"/>
<input type="button" onclick="requestPojo()" value="请求pojo,返回json"/>
body>
html>
// 请求json,返回json
@RequestMapping("requestJson")
public @ResponseBody User requestJson(@RequestBody User user) {
System.out.println("requestJson.do-->" + user);
return user;
}
// 请求pojo,返回json
@RequestMapping("requestPojo")
public @ResponseBody User requestPojo(User user) {
System.out.println("requestPojo.do-->" + user);
return user;
}
上一篇:《SpringMVC(三)之数据回显、url模板映射、转发和重定向》
下一篇:《SpringMVC(五)之拦截器》