首页 > 代码库 > SpringMVC处理Json-使用 HttpMessageConverter

SpringMVC处理Json-使用 HttpMessageConverter

一、示例—文件下载
     @RequestMapping("/testHttpMessageConverter" )
     public ResponseEntity< byte[]> testHttpMessageConverter(@RequestBody String requestBody,
              HttpSession session) throws IOException{
          System. out.println(requestBody);
          
          InputStream in = session.getServletContext().getResourceAsStream("/WEB-INF/files/abc.pdf" );
           byte [] bytes = new byte[in.available()];
          in.read(bytes);
          
          HttpHeaders headers = new HttpHeaders();
          headers.add( "Content-Disposition""attachment;filename=a.pdf" );
          
          HttpStatus statusCode = HttpStatus. OK;
          
          ResponseEntity< byte[]> re = new ResponseEntity<byte []>(bytes, headers, statusCode);
           return re;
     }

◇当控制器处理方法使用到 @RequestBody/@ResponseBody 或HttpEntity<T>/ResponseEntity<T> 时,
  Spring 首先根据请求头或响应头的 Accept 属性选择匹配的 HttpMessageConverter, 
  进而根据参数类型或泛型类型的过滤得到匹配的 HttpMessageConverter, 若找不到可用的 HttpMessageConverter 将报错
◇@RequestBody 和 @ResponseBody 不需要成对出现


二、获取json数据示例

1.页面请求:< a href ="getEmployeesForJson" id ="json">testForJson </a>

2.发post请求:
<script type"text/javascript" src="scripts/jquery-1.9.1.min.js" ></script>
<script type"text/javascript">
     $(function(){
          $( "#json").click(function (){
               var url=this .href;
               var args={};
               $.post(url,args, function(data){
                   
                    for(var i=0;i<data.length;i++){
                   
                        alert( "lastName:"+data[i].lastName+",department:" +data[i].department.departmentName);
                        
                   }
              });  
               return false ;
          });
     });

</script>

三、处理请求
          
  @ResponseBody
     @RequestMapping"/getEmployeesForJson")
     public  Collection<Employee> getEmployees() {
           return employeeDao .getAll();
     }
     

注意:要在JRE环境中添加  jackson-all-1.9.11.jar

O(∩_∩)O~处理json数据就是这么方便,只需要在对应的处理方法上加一个注解@ResponseBody就可以了。

SpringMVC处理Json-使用 HttpMessageConverter