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 {

    @Autowired
    private RedisTemplate redisTemplate;
    @Override
    public 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");

输出结果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于YOLOv5的道路裂缝检测,加入一种基于内容引导注意力(CGA)的混合融合提升2个多点

💡💡💡本文主要内容:详细介绍道路裂缝检测整个过程,从数据集到训练模型到结果可视化分析。 💡💡💡通过加入一种基于内容引导注意力(CGA)的混合融合提升检测性能, 特征融合创新 | 一…

数据结构~~带环链表的环开始的节点位置**两种方法

1.带环链表环开始的位置 (1)上面的这个测试用例使用的是包含了4个节点的带环链表,我们要找的就是链表里面的环开始的节点的位置,拿这个测试用例而言,就是2这个节点,从这个节点开始,我们的链表就…

Python代码:二、多行输出

1、题目 将字符串 Hello World! 存储到变量str1中,再将字符串 Hello Nowcoder! 存储到变量str2中,再使用print语句将其打印出来(一行一个变量)。 2、代码 import sys str1 Hello World! str2 Hello Nowcoder! print (str1,st…

uniapp小程序使用scroll-view组件实现上下左右滚动触发事件

在做uniapp开发小程序的时候,有一个需求是在一个表格区域里面可以上下左右滑动元素,并实现表头和左侧的标签联动效果,就想趣运动里面选择场地的效果一样,这里就用到了scroll-view组件,scroll-view官网文档地址&#xf…

你写HTML的时候,会注重语义化吗?

其实说到语义化,多年前端开发经验的老手估计也不会太在意,有时候工期太紧,有时候自己疏忽,也就不那么在意了,直接DIVCSS一把梭下去了。 目录 什么是HTML 什么是HTML语义化 HTML语义化所带来的好处 我把CSS样式引入…

手机怎么制作搞笑gif?来看看这一个方法

动态图片是现在网络中很流行的一种图片格式,可以把多个jpg、png格式静图变成一张gif格式的动图。在各大社交媒体中非常的受欢迎,用简单快速的方法传递信息。当我们想要通过手机制作gif动画的时候,要如何操作呢?这时候,…

长沙学院数学学院领导赴泰迪智能科技开展”访企拓岗“调研活动

5月13日,长沙学院数学学院党总支书记谭义红,副书记周新华,辅导员王思永莅临广东泰迪智能科技股份有限公司产交融合实训基地就深入“访企拓岗”、强化校企合作促进毕业生充分就业、创新人才培养范式等领域进行了深入交流。泰迪智能科技董事长张…

Linux系统 -目录结构与配网

目录的特点 Windows中有C盘、D盘等,每个都是一个根系统是个多根系统 Linux中只有一个根是个单根系统 Linux-目录存储的内容 1、/root:管理员的家目录 2、/home:存储普通用户家目录的目录/3、/tmp:临时目录,这个目录存储…

使用VMware或VirtualBox安装eNSP Pro并使用CRT连接设备

文章目录 使用Oracle Virtual Box安装eNSP Pro创建虚拟机配置网卡配置带外管理网络 使用VMware Workstation安装eNSP Pro转换文件格式及虚拟磁盘模式配置网卡创建虚拟机配置使用CRT连接管理设备 前一段时间是开放了eNSP Pro的账号权限,但是在写博客时,权…

react18【系列实用教程】memo —— 缓存组件 (2024最新版)

memo 的语法 如上图所示,在react中,当父组件重新渲染时,子组件也会重新渲染,即便子组件无任何变化,通过 memo 可以实现对组件的缓存,即当子组件无变化时,不再重新渲染子组件,核心代码…

怎么获取提取二维码链接?点击链接访问内容的方法

随着现在二维码应用的场景越来越多,很多的产品或者场所都会有相对应的二维码来提供信息展示,那么当遇到无法通过扫码获取内容的情况时,有什么其他方法可以访问二维码的内容呢?下面就让小编来分享一下二维码解码功能的使用方法&…

windows部署腾讯tmagic-editor02-Runtime

创建editor项目 将上一教程中的hello-world复制过来,改名hello-editor 创建runtime项目 和hello-editor同级 pnpm create vite删除src/components/HelloWorld.vue 按钮需要用的ts types依赖 pnpm add tmagic/schema tmagic/stage实现runtime 将hello-editor中…

PCIE协议-2-事务层规范-Transaction Ordering

2.4.1 事务排序规则 表2-40定义了PCI Express事务的排序要求。此表中定义的规则适用于PCI Express上的所有事务类型,包括内存、I/O、配置和消息事务。在单个流量类别(Traffic Class,TC)内,这些排序规则适用。不同TC标…

5个不同类型的AI问答机器人你都用过吗?

在科技发达的今天,AI问答机器人已经深入我们的日常生活,各式各样的机器人应用在生活的方方面面。本文给大家推荐5个不同类型的AI问答机器人,看看你都用过哪些,或者有没有兴趣尝试一下呢? 1.高效知识库型:He…

论文解读:Matching Feature Sets for Few-Shot Image Classification

文章汇总 动机 将表示分解为独立的组件应该允许捕获图像的几个不同方面,然后可以有效地使用这些方面来表示新类别的图像。 解决办法 从卷积主干连接多尺度特征映射。在网络中以各种尺度嵌入浅层自关注模块(称为“映射器”)。 流程解读 (a)图中右边的灰色小正方…

C++ LeetCode 刷题经验、技巧及踩坑记录【三】

C LeetCode 刷题经验、技巧及踩坑记录【三】 前言vector 计数vector 逆序vector 删除首位元素vector二维数组排序vector二维数组初始化C 不同进制输出C 位运算C lower_bound()C pairC stack 和 queue 前言 记录一些小技巧以及平时不熟悉的知识。 vector 计数 计数 //记录与首…

面 试 题

过滤器和拦截器的区别 都是 Aop 思想的一种体现,用来解决项目中 某一类 问题的两种接口(工具),都可以对请求做一些增强 出身 过滤器来自 servlet 拦截器来自 spring 使用范围 过滤器 Filter 实现了 iavax.servlet.Filter 接口,也就是说…

【三家飞机制造商】

1.Boeing 波音 F-15战机 B-52轰炸机 阿帕奇攻击直升机 E-3 2 .Lockheed Martin 洛克希德马丁 F35 F22 F16 F117 C130 U2 3 Raytheon 雷神

高效协同,智慧绘制:革新型流程图工具全解析

流程图,作为一种直观展示工作过程和系统运作的工具,在现代办公和项目管理中发挥着不可或缺的作用。 其优势在于能够清晰、直观地呈现复杂的过程和关系,帮助人们快速理解并掌握关键信息。同时,流程图也广泛应用于各种场景&#xf…