在Spring MVC Controller的同一個方法中,根據App還是WEB返回JSON或者HTML視圖。


如有高見,歡迎交流!

 

最近在做一個web的項目,web版已經開發完畢,現在正在進行手機APP的開發,開發中遇到一個問題:

就是web版和app版都有登錄功能,本想着是分別走不同的URL,實際開發的時候才發現,由於web版采用的是shiro框架,URL不能改變(至少是自己不知道該怎么配置)

因此只能是采取走同一個URL的方案了。

問題來了,web版的該方法的返回值是HTML視圖,如何在此方法中返回json字符串是需要解決的問題,上網搜尋了一下,果然有高人。

解決案:

對於APP端的請求需要使用MappingJacksonHttpMessageConverter將model轉成JSON,然后寫入HttpServletResponse返回。

轉換類:JsonView

 1 public class JsonView {
 2 
 3     public static ModelAndView Render(Object model, HttpServletResponse response)
 4     {
 5         MappingJacksonHttpMessageConverter jsonConverter = new MappingJacksonHttpMessageConverter();
 6 
 7         MediaType jsonMimeType = MediaType.APPLICATION_JSON;
 8 
 9 
10         try {
11             jsonConverter.write(model, jsonMimeType, new ServletServerHttpResponse(response));
12         } catch (HttpMessageNotWritableException e) {
13             e.printStackTrace();
14         } catch (IOException e) {
15             e.printStackTrace();
16         }
17 
18         return null;
19     }
20 }

Controler類:

@RequestMapping(value="/login", method=RequestMethod.POST)
public ModelAndView index(HttpServletRequest request, HttpServletResponse response, ModelMap model) {

    ModelAndView mv = new ModelAndView("LOGIN");
    //web端登陸
    if(web)
    {
        return mv;
    }
    //APP端登陸
    else
    {
        mv.addObject("status","success");
        return JsonView.Render(mv, response);
    }    
}

參照:http://stackoverflow.com/questions/4917329/return-json-or-view-from-spring-mvc-controller


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM