本文共 2836 字,大约阅读时间需要 9 分钟。
在SpringMVC中处理JSON步骤:
1、加上jar包
com.fasterxml.jackson.core jackson-databind 2.9.5 com.fasterxml.jackson.core jackson-core 2.9.5 com.fasterxml.jackson.core jackson-annotations 2.9.5
2、编写对应的目标方法,使其返回JSON对应的对象或集合
3、在方法上加上注解 @ResponseBody
实例:
@ResponseBody @RequestMapping(value = "/testJSON",method = RequestMethod.GET) public Object testJSON(){ return employeeDao.getAll(); }
1、HttpMessageConverter<T> 是Spring 3.0 新增加的一个接口,负责将请求信息转化为一个对象(类型为T),将对象输出为响应信息。
2、HttpMessageConverter<T>接口定义的方法:
3、原理图:
4、关于HttpMessageConverter<T>的实现类
5、DispatcherServlet 默认装配RequestMappingHandlerAdapter ,而RequestMappingHandlerAdapter 默认装配如下
HttpMessageConverter:
6、加入Jackson jar包后,RequestMappingHandlerAdapter 装配的 HttpMessageConverter 如下:
7、使用 HttpMessageConverter<T> 将请求信息转化并绑定到处理方法的入参中或将响应结果转为对应类型的响应信息,Spring 提供了两种途径:
8、当控制器处理方法使用到 @RequestBody、@ResponseBody 或HttpEntity<T>/ResponseEntity<T> 时,Spring首先根据请求头或响应头的 Accept 属性选择匹配的 HttpMessageConverter,进而根据参数类型或泛型类型的过滤得到匹配的 HttpMessageConverter,若找不到可用的 HttpMessageConverter 将报错
9、@RequestBody 和 @ResponseBody 不需要成对出现
示例:
@ResponseBody @RequestMapping(value = "/testHttpMessageConverter") public String testHttpMessageConverter(@RequestBody String body){ System.out.println(body); return "helloworld "+new Date(); }
@ResponseBody @RequestMapping(value = "/testResponseEntity") public ResponseEntitytestResponseEntity(HttpSession session) throws IOException { byte[] body = null; ServletContext context = session.getServletContext(); InputStream in = context.getResourceAsStream("/file/1.doc"); body = new byte[in.available()]; in.read(body); HttpHeaders headers = new HttpHeaders(); headers.add("Content-Disposition","attachment;filename=1.doc"); HttpStatus statusCode = HttpStatus.OK; ResponseEntity entity = new ResponseEntity (body,headers,statusCode); return entity; }