简述
json格式的数据应用越来越广泛,结合ajax技术,经常作为前后台数据交互的一种格式。前台会将json格式的数据发送给后台,后台也会将json格式的数据返回给前台。后台处理json格式的数据使用的是java等语言,而前台处理json数据使用的是js脚本语言。下面的小案例是在Spring 4mvc框架下,后台处理前台发送的json格式的数据。
方法一
- 首先在web.xml中配置编码过滤器,可以使用Spring自带的字符编码过滤器,也可以自定义。
- 新建jsp文件,这这个jsp文件中向后台发送json格式的数据
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="jquery.js" ></script>
<script type="text/javascript" src="json2.js" ></script>
</head>
<body>
<script>
function userinfo(username,password) {
this.username = username;
this.password = password;
}
function sendAjax(){
var userinforef = new userinfo('张三','1234');
var jsonStringRef = JSON.stringfy(userinforef);
$.post("getJSONString.spring?t="+new Date().getTime(),{
jsonString:jsonStringRef
});
}
</script>
<input type="button" onclick="sendAjax()" value="提交" />
</body>
这里要引入json2.js可以将javascript对象转换为json格式的字符串
- 编写后台,这里需要引入jsonlib.jar包,使用包中的类进行处理
package b;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import net.sf.json.JSONObject;
/**
* 获取JSON字符串
* @author acer
*
*/
public class GetJSONString {
@RequestMapping("getJSONString.spring")
public String getJSONString(@RequestParam("jsonString") String jsonString){
//将jsonString转换为JSONObject
JSONObject object = JSONObject.fromObject(jsonString);
System.out.println(object.get("username"));
System.out.println(object.get("password"));
return "login.jsp";
}
}
方法二
Spring 4MVC中提供了一种从JSON字符串自动转换成实体的技术。首先也是最为·重要的就是添加jar包【jackson-all-1.9.8.jar】
- 建立实体【javabean】
public class UserInfo {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
- 新建控制层
@Controller
public class GetJSONStringToObject {
@RequestMapping(value="createJSONObjectURL",method=RequestMethod.POST)
public String createJSON(@RequestBody UserInfo userinfo){
System.out.println(userinfo.getUsername());
System.out.println(userinfo.getPassword());
return "login.jsp";
}
}
使用@RequestBody注解,前台需要向Controller提交一段符合JSON格式的数据,Spring 4MVC会自动将其拼装成javabean。javabean中如果有有参数的构造函数,那必须定义一个无参构造函数,因为该方法需要调用的是一个无参数的构造方法,然后使用set方法向对象中添加值。
- 修改SpringMVC-servlet.xml配置文件
添加被标注的内容,beans中添加的那三项很重要,否则会报错。通过<mvc:annotation-driven />注解可以使JSON字符串自动转换为实体类,在Spring 4MVC中,DefaultAnnotationHandlerMapping对象负责处理类级别的@RequestMapping注解,而AnnotationMethodHandlerAdapter负责处理方法级别的@RequestMapping注解,如果使用了<mvc:annotation-driven />注解,就会自动注册DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter俩个bean。
这样就完成后服务器端解析json字符串的功能的实现。