zoukankan      html  css  js  c++  java
  • 在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

  • 相关阅读:
    elasticsearch之python操作
    Elasticsearch之性能优化
    Elasticsearch之基本使用
    Redis主从哨兵集群搭建
    Docker Swarm集群
    Elasticsearch之权限验证(Basic)
    docker之网络与数据管理
    docker之可视化工具
    基于Github gist的代码片段管理工具Lepton
    Redis工具之redis_rdb_tools
  • 原文地址:https://www.cnblogs.com/yddzyy/p/5581194.html
Copyright © 2011-2022 走看看