关于spring MVC的一些常见问题,参考我的博客:

http://hw1287789687.iteye.com/admin/blogs/2114627

spring MVC如何返回json呢?

有两种方式:

方式一:使用ModelAndView

@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
/***     * {"fileName":"20141002125209_571slide4.jpg","path":"D:\\software\\eclipse\\workspace2\\demo_channel_terminal\\upload\\p_w_picpath\\20141002125209_571slide4.jpg"}     * @param file     * @param request     * @param response     * @return     * @throws IOException     */    @ResponseBody    @RequestMapping(value = "/upload")    public String upload(            @RequestParam(value = "p_w_picpath223", 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 + "/p_w_picpath", 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\\p_w_picpath\\20141002125209_571slide4.jpg"} * */        return content;    }

两种方式有什么区别呢?

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

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

参考:http://hw1287789687.iteye.com/blog/2128296

http://hw1287789687.iteye.com/blog/2124313