工作日记——@RequestMapping 的String&&View适配 ————2016-1-14

2023-11-14

问题描述;工作上遇到要在一个RequestMapping 方法里适配返回值为string 或者json对象;

 以下是解决方案(部分涉及业务逻辑请忽略);

    1,RequestMapping方法:

   @RequestMapping(method = RequestMethod.GET, value="/product/read")
    public ModelAndView  productRead1(Model model,HttpServletRequest request,HttpServletResponse response,@RequestParam("id") Long id,@RequestParam(value="returnType",required=false) String returnType){
        JSONObject rs=CommonUtil.commEnterSend("/portal/product/productQRcode/"+id,SSOClientUtil.GET,null);
        model.addAttribute("proBarcode",rs.get("proBarcode"));
        if(returnType==null){
              JSONObject product=CacheUtil.getProductByCode(rs.get("proBarcode").toString());
              model.addAttribute("FDA","GY");
              model.addAttribute("product",product.getJSONObject("data"));
              ModelAndView mv =new ModelAndView("FDA/read","keyword",rs.get("proBarcode"));
             return mv;
        }
        else{
             return JsonViewUtil.Render(model, response);
        }
            }



2.写一个适配类:

  import java.io.IOException;  
 
import javax.servlet.http.HttpServletResponse;  
 
import org.springframework.http.MediaType;  
import org.springframework.http.converter.HttpMessageNotWritableException;  
import org.springframework.http.converter.json.MappingJacksonHttpMessageConverter;  
import org.springframework.http.server.ServletServerHttpResponse;  
import org.springframework.web.servlet.ModelAndView;  
 
public class JsonViewUtil {  
    public static ModelAndView Render(Object model, HttpServletResponse response)  
    {  
        MappingJacksonHttpMessageConverter jsonConverter = new MappingJacksonHttpMessageConverter();  
 
        MediaType jsonMimeType = MediaType.APPLICATION_JSON;  
 
 
        try {  
            jsonConverter.write(model, jsonMimeType, new ServletServerHttpResponse(response));  
        } catch (HttpMessageNotWritableException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
 
        return null;  
    }  



3.通过这个适配类JsonViewUtil.Render方法将json封装在response一并返回


4。遇到的问题:(a):返回值为ModelAndView 的方法不能直接return json;(b):一开始我通过HttpServletRequest的getCookies()方法获取请求带有的cookie,用来判断请求来自web端还是移动端,后来需要将微信扫码和QQ扫码加入,于是在移动请求加入了一个字段,这里一个所得是:可以通过HttpServletRequest的user-agent参数判断请求来自移动端还是web 以及使用的移动端型号和我web端浏览器类型

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

工作日记——@RequestMapping 的String&&View适配 ————2016-1-14 的相关文章

随机推荐

  • 嵌入式毕业设计 基于红外热释电的房间人数计数系统 - 单片机 物联网嵌入式

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 设计原理 4 1 PIR传感器 4 2 mlx90614红外传感器 5 部分核心代码 6 最后 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新
  • 谈谈前后端分离

    1 首先我们先看看SPA SPA全称是single page application 单页面应用 它是一种网络应用程序 webAPP 模型 传统网站里面 不同页面的切换一般是直接从服务器加载一整个新页面 而SPA这个模型 则是通过动态的重写
  • AI根据视频画面自动配音 ,真假难辨 !(附数据集)

    本文经AI新媒体量子位 公众号ID qbitai 授权转载 转载请联系出处 本文长度为3216字 建议阅读7分钟 本文为你分享实现AI自动为视频配音的流程 先来做个 真假美猴王 的游戏 你将看到两段画面相同的视频 请判断哪段来自视频原声 哪
  • Golang goroutine MPG模式浅析

    协程是通过使用关键字 go 调用 或执行 一个函数或者方法来实现的 也可以是匿名函数 Go 语言在语言层面上支持了并发 goroutine是Go语言提供的一种用户态线程 有时我们也称之为协程 所谓的协程 某种程度上也可以叫做轻量线程 它不由
  • package有什么作用

    常见笔试题 下列说法中 正确的是 A Java 中包的主要作用是实现跨平台功能 B package 语句只能放在 import 语句后面 C 包 package 由一组类 class 和接口 interface 组成 D 可以用 inclu
  • 硬件面试题目

    1 请列举您知道的电阻 电容 电感品牌 最好包括国内 国外品牌 电阻 日本 muRata 村田 Panasonic 松下 ROHM 罗姆 susumu TDK 中国 YAGEO 国巨 FH 风华 电容 日本 Matsushita 松下 mu
  • Windows Git配置SSH

    进入桌面 或者文件管理中右键 gt 打开Git命令窗口 生成ssh keygen 命令 wolfs com 为你的Git账号 ssh keygen t rsa C wolfs com 必要信息有所打码 可自行更改 然后提示你输入密码进行验证
  • vue总引入VConsole

    第一种 使用import的方式 通过main js中引入 先创建一个全局的vconsole js import Vconsole from vconsole const vConsole new Vconsole export defaul
  • mybatis缓存级别以及如何开启二级缓存

    一级缓存 范围 一级缓存是基于 SqlSession 的本地缓存 与单个 SqlSession 相关联 生命周期 一级缓存的生命周期是短暂的 仅在同一个 SqlSession 内有效 当在同一个 SqlSession 中执行相同的查询时 第
  • fcn从头开始_如何使用Go从头开始构建区块链

    fcn从头开始 介绍 Introduction With Web 3 0 and blockchain becoming more mainstream every day do you know what blockchain is Do
  • 复杂网络博弈:用matlab实现囚徒困境

    复现方格网下囚徒困境博弈程序 分别画出b 0 8 2之间 以0 2为间隔的 均衡状态下的网络快照 及合作者比例变化图 设置囚徒困境博弈参数 b values 0 8 0 2 2 0 合作者得到的收益相对于双方都不合作时的收益的比例 N 20
  • 单个el-form-item中有多个必填

    element ui组件里的el form设置为必填都是一对一的 而一个里面包含多个选择框或输入框的却无法实现 怕自己说不清楚 附一张图吧 图中 下发周期 是一个el form item的label名 下面的都包含在里面 设置必填使二者都生
  • 如何在知乎上进行markdown创作?

    前言 废话 题主和大家一样 也是苦苦找不到解决办法 中到有一天 偶然看到一款神器 方才完成由猴到人的蜕变 话不多说 直接上教程 404警告 本猿写教程一向很结构化 看不懂就留言吧 1 正文 如何在知乎上进行markdown创作 所需工具 已
  • LVS+Web

    一 LVS NAT模式 1 根据拓扑图搭建好实验环境 拓扑如下 2 rhel1配置 1 编译ipvsadm源码包 2 ipvsadm配置与启动 3 查看ipvsadm配置 4 开启内核路由转发 vim etc sysctl conf 修改如
  • 阿里云轻量应用服务器使用指南

    阿里云轻量应用服务器使用指南 云服务器 云服务器 Elastic Compute Service ECS 是一种简单高效 安全可靠 处理能力可弹性伸缩的计算服务 其管理方式比物理服务器更简单高效 用户无需提前购买硬件 即可迅速创建或释放任意
  • mybatis—PageHelper分页失效问题

    当PageHelper分页失效时 可以看一下PageHelper开启startPage后是否查询了多个list 是否在通过多个mapper xml方法返回了多个list PageHelper startPage page rows eg 错
  • 【问题记录】如何使用 pip 在 linux 上安装 pytorch

    一 进入 pytorch 官网 pytorch 官网 https pytorch org 二 在页面选择环境 三 复制官网弹出的命令并运行即可 pip3 install torch torchvision torchaudio index
  • loadrunner负载发生器和性能计数器

    一 添加负载发生器 如果发现不能同时设置本机和负载机 解决办法是先选择Scenario gt Convert Scenario to the Percentage Mode 将场景模式由用户组切换为百分比 然后在已经添加好的Load Gen
  • rabbitmq java 删除交换机与队列

    rabbitmq java 删除交换机与队列 删除指定队列 直接删除 channel queueDelete queueName 删除指定交换机 直接删除 channel exchangeDelete exchangeName 清空指定队列
  • 工作日记——@RequestMapping 的String&&View适配 ————2016-1-14

    问题描述 工作上遇到要在一个RequestMapping 方法里适配返回值为string 或者json对象 以下是解决方案 部分涉及业务逻辑请忽略 1 RequestMapping方法 RequestMapping method Reque