Java的response返回Json格式

问题

今天开发过程中,写了个拦截器,对于所以请求进行一个token的工作,对于不合标准的token返回错误,在网上找了个拦截器进行二次开发。

package com.maizhiyu.yzt.handle;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;@Component
public class TokenInterceptor implements HandlerInterceptor {@Autowiredprivate RedisTemplate redisTemplate;@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception{//Axios 发起跨域请求前,浏览器也会首先发起 OPTIONS 预检请求。检查服务器是否允许跨域访问。System.out.println("拦截的请求路径:" + request.getRequestURI());System.out.println("拦截的请求方法:" + request.getMethod());if(request.getMethod().equals("OPTIONS")){response.setStatus(HttpServletResponse.SC_OK);System.out.println("允许跨域访问");return true;}response.setCharacterEncoding("utf-8");int  index = request.getHeader("cookie").indexOf("token:");String token = request.getHeader("cookie").substring(index);if(token != null){if(true){Object o = redisTemplate.opsForValue().get("yztMsCusToken:login:token:" + token);if(o==null){System.out.println("token过期或者在用户退出的时候已删除,redis找不到");return   false;}System.out.println("通过拦截器");return true;}}response.setCharacterEncoding("UTF-8");PrintWriter out = null;response.getWriter().write("认证失败,错误码:50000");return false;}
}

但是发现这里返回的值是一个String。

但公司的要求是按照固定的Result的格式进行返回的,这就需要转一下了。一开的想法是把里面的直接String转变为Result.toString。

response.getWriter().write(Result.failure(401,"token非法").toString());

结果也是不合标准的。

解决方案

使用JSONObject

JSONObject jsonObject =new JSONObject();
jsonObject.put("code",401);
jsonObject.put("msg","失败");response.getWriter().write(jsonObject.toString());
response.setContentType("application/json; charset=utf-8");

输出结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/703602.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java基础】集合(1) —— Collection

存储不同类型的对象: Object[] arrnew object[5];数组的长度是固定的, 添加或删除数据比较耗时 集合: Object[] toArray可以存储不同类型的对象随着存储的对象的增加,会自动的扩容集合提供了非常丰富的方法,便于操纵集合相当于容器,可以存储多…

Mark赶紧码住!亚马逊跨境电商八个爆款选品方法

一、Best Sellers选品法 这个方法顾名思义,就是大家熟悉的热销榜单选品。不做过多解释,在自己熟悉的品类,隔几天就会观察一下前100名里有没有冒出什么新品。它和现有的产品相同还是不同,自己做哪些搭配或者迭代会不会打败它。综合…

融资融券最低利率4.0!,融资融券利息计算公式,怎么开通?

融资融券的费率: 融资融券的费率主要包括融资利率和融券费率,这些费率的高低主要取决于证券公司的成本、政策倾向以及投资者的资金量大小。 融资利率方面,多数券商的优惠融资利率在5.5%到7.5%之间,与券商的成本和政策有关。一些…

java 项目通用数据权限设计

文章目录 前言一、常见的数据权限二、通用数据权限设计思路通用权限示例(灵活配置最简单方式)两个表业务理解最终拼接出来的sql 为: 总结 前言 权限一般分为操作权限和数据权限 操作权限: 菜单,页面,按钮 数据权限: 能看到的数据,包括各种页面的数据范围 一、常见的数据权限 …

python表白代码

以下是一个简单的示例: python def表白(对方): print("亲爱的" str(对方) ",") print("我喜欢你很久了。") print("你是如此美丽,聪明,迷人,让我无法自拔地爱上你。") prin…

AIGC行业现在适合进入吗

一、引言 随着人工智能技术的飞速发展,AIGC(人工智能生成内容)行业正逐渐成为科技领域的新热点。AIGC通过利用人工智能技术,自动生成文本、图像、音频、视频等多种形式的内容,极大地提高了内容生产的效率和质量。然而…

智能文档处理:解析文档场景下多模态大模型的应用与研究前沿

解析文档场景下多模态大模型的应用与研究前沿 一、TextIn 文档解析技术1. 现有大模型文档解析问题2. 文档解析技术背景3. TextIn 文档解析技术架构4. 版面分析关键技术 Layout-engine 二、TextIn 文本向量化技术三、TextIn.com Text Intelligence 一、TextIn 文档解析技术 hell…

【Linux网络编程】IO多路转接之poll

poll 1.poll初始2.poll函数接口3.poll服务器4.poll的优点缺点 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.poll初始 poll也是一种linux…

【论文阅读 | 三维重建】3D Gaussian Splatting for Real-Time Radiance Field Rendering(3DGS)

Abstract 辐射场方法最近彻底改变了用多张照片或视频捕获的新颖视图合成,然而实现高视觉质量仍然需要训练和渲染成本高昂的神经网络,而最近更快的方法不可避免地要牺牲速度来换取质量。对于无边界和完整的场景和1080P分辨率的渲染,目前没有任…

MIRO时,修改页签“采购订单参考”的数量时,金额不自动计算

MIRO 发票校验时,进入到如下界面,系统参考采购订单自动带出已经收货的金额和数量。 此时如果想要修改数量时,有些用户账号下,金额不自动计算,但是有些用户账号下,数量更改时,系统自动计算和建议…

从零开始详解OpenCV硬币检测

前言 在上一篇中我们介绍了车道线检测,在本篇中我们将使用类似的做法来实现对应硬币的检测。 详解 打开并转换成灰度图 img cv2.imread(coin.png) gray_image cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) plt.imshow(img)二值化 thresh, output cv2.threshold(…

精选合作伙伴:如何挑选最适合您小程序商城开发的软件公司

在选择一家合适的软件公司来协助您开发并运营小程序商城时,选择过程无疑是一项关键而复杂的任务。市场上的软件公司繁多,各具特色,那么,如何在这众多的选择中找到最适合您的合作伙伴呢?以下将从需求梳理、公司实力评估…