您的位置:首页 > 编程语言 > Java开发

spring MVC 返回json

2016-06-16 11:35 393 查看
http://hw1287789687.iteye.com/blog/2128304

spring MVC如何返回json呢?

有两种方式:

方式一:使用ModelAndView

Java代码  


@ResponseBody  

    @RequestMapping("/save")  

    public ModelAndView save(SimpleMessage simpleMessage){  

        //查询时可以使用 isNotNull  

        if(!ValueWidget.isNullOrEmpty(simpleMessage)){  

            try {  

                //把对象中空字符串改为null  

                ReflectHWUtils.convertEmpty2Null(simpleMessage);  

            } catch (SecurityException e) {  

                e.printStackTrace();  

            } catch (NoSuchFieldException e) {  

                e.printStackTrace();  

            } catch (IllegalArgumentException e) {  

                e.printStackTrace();  

            } catch (IllegalAccessException e) {  

                e.printStackTrace();  

            }  

        }  

        simpleMessage.setCreateTime(TimeHWUtil.getCurrentTimestamp());  

        simpleMessage.setHasReply(Constant2.SIMPLE_MESSAGE_HAS_REPLY_NOT_YET);  

        this.simpleMessageDao.add(simpleMessage);  

        Map map=new HashMap();  

        map.put("result", "success");  

        return new ModelAndView(new MappingJacksonJsonView(),map);  

    }  

 

 

方式二:返回String

Java代码  


/*** 

     * {"fileName":"20141002125209_571slide4.jpg","path":"D:\\software\\eclipse\\workspace2\\demo_channel_terminal\\upload\\image\\20141002125209_571slide4.jpg"} 

     * @param file 

     * @param request 

     * @param response 

     * @return 

     * @throws IOException 

     */  

    @ResponseBody  

    @RequestMapping(value = "/upload")  

    public String upload(  

            @RequestParam(value = "image223", required = false) MultipartFile file,  

            HttpServletRequest request, HttpServletResponse response)  

            throws IOException {  

        String content = null;  

        Map map = new HashMap();  

        if (ValueWidget.isNullOrEmpty(file)) {  

            map.put("error", "not specify file!!!");  

        } else {  

            System.out.println("request:" + request);// org.springframework.web.multipart.support.DefaultMultipartHttpServletRequest@7063d827  

            System.out.println("request:" + request.getClass().getSuperclass());  

              

            // // System.out.println("a:"+element+":$$");  

            // break;  

            // }  

            String fileName = file.getOriginalFilename();// 上传的文件名  

            fileName=fileName.replaceAll("[\\s]",   "");//IE中识别不了有空格的json  

            // 保存到哪儿  

            String finalFileName = TimeHWUtil.formatDateByPattern(TimeHWUtil  

                    .getCurrentTimestamp(),"yyyyMMddHHmmss")+ "_"  

                            + new Random().nextInt(1000) + fileName;  

            File savedFile = getUploadedFilePath(request,  

                    Constant2.UPLOAD_FOLDER_NAME + "/image", finalFileName,  

                    Constant2.SRC_MAIN_WEBAPP);// "D:\\software\\eclipse\\workspace2\\demo_channel_terminal\\ upload\\pic\\ys4-1.jpg"  

            System.out.println("[upload]savedFile:"  

                    + savedFile.getAbsolutePath());  

            // 保存  

            try {  

                file.transferTo(savedFile);  

            } catch (Exception e) {  

                e.printStackTrace();  

            }  

              

            ObjectMapper mapper = new ObjectMapper();  

              

              

  

            map.put("fileName", finalFileName);  

            map.put("path", savedFile.getAbsolutePath());  

            try {  

                content = mapper.writeValueAsString(map);  

                System.out.println(content);  

            } catch (JsonGenerationException e) {  

                e.printStackTrace();  

            } catch (JsonMappingException e) {  

                e.printStackTrace();  

            } catch (IOException e) {  

                e.printStackTrace();  

            }  

//          System.out.println("map:"+map);  

        }  

  

/* 

 * {"fileName":"20141002125209_571slide4.jpg","path":"D:\\software\\eclipse\\workspace2\\demo_channel_terminal\\upload\\image\\20141002125209_571slide4.jpg"} 

 * */  

        return content;  

  

    }  

 

两种方式有什么区别呢?

方式一:使用ModelAndView的contentType是"application/json"

方式二:返回String的            contentType是"text/html"

那么如何设置response的content type呢?

使用注解@RequestMapping 中的produces:

Java代码  


@ResponseBody  

    @RequestMapping(value = "/upload",produces="application/json;charset=UTF-8")  

    public String upload(HttpServletRequest request, HttpServletResponse response,String contentType2)  

            throws IOException {  

        String content = null;  

        Map map = new HashMap();  

        ObjectMapper mapper = new ObjectMapper();  

  

        map.put("fileName", "a.txt");  

        try {  

            content = mapper.writeValueAsString(map);  

            System.out.println(content);  

        } catch (JsonGenerationException e) {  

            e.printStackTrace();  

        } catch (JsonMappingException e) {  

            e.printStackTrace();  

        } catch (IOException e) {  

            e.printStackTrace();  

        }  

        if("json".equals(contentType2)){  

            response.setContentType(SystemHWUtil.RESPONSE_CONTENTTYPE_JSON_UTF);  

        }  

        return content;  

  

    }  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: