-
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\\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"