问题: 客户SDK对接服务,默认只识别200和非200的请求状态码。需要修改当前应用的状态码(如将201转为200)

解决方案:通过扩展HttpServletResponseWrapper,获取到每个请求的状态码,满足条件的做修改即可

具体代码:

package com.supermap.huawei;

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpServletResponseWrapper;

/**

* 1、输出http信息 2、修改返回的状态码

*

*/

public class ResponseCodeFilter implements Filter {

@Override

public void init(FilterConfig filterConfig) throws ServletException {

}

@Override

public void doFilter(ServletRequest req, ServletResponse res,

FilterChain chain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) req;

StatusExposingServletResponse response = new StatusExposingServletResponse(

(HttpServletResponse) res);

String ip = request.getRemoteAddr();

String method = request.getMethod();

String url = request.getRequestURI();

String characterEncoding = request.getCharacterEncoding();

String referer = request.getHeader("Referer");

chain.doFilter(request, response);

int status = response.getStatus();

System.out.println(ip + method + characterEncoding + referer + url

+ status);

// String s1 = "" + status;

if (status == 201) {

// if(s1.contains("20")){

response.setStatus(200);

} else {

response.setStatus(status);

}

}

@Override

public void destroy() {

}

public static class StatusExposingServletResponse extends

HttpServletResponseWrapper implements HttpServletResponse {

private int status = 200;

public StatusExposingServletResponse(HttpServletResponse response) {

super(response);

}

@Override

public void setStatus(int sc) {

this.status = sc;

super.setStatus(sc);

}

public int getStatus() {

return status;

}

}

}

web.xml中的配置

ResponseCodeFilter

com.supermap.test.ResponseCodeFilter

ResponseCodeFilter

/*

修改前:

修改后

java修改状态码_JavaWeb-用过滤器修改请求的返回状态码相关推荐

  1. python银行管理系统源码_javaweb银行大厅自助信息管理系统,源码行行注释,免费分享...

    全微毕设擅长JAVA(SSM,SSH,SPRINGBOOT).PYTHON(DJANGO/FLASK).THINKPHP.C#.安卓.微信小程序.MYSQL.SQLSERVER等,欢迎咨询 今天记录的 ...

  2. java request修改uri,spring cloud zuul过滤器修改requestURI 忽略大小写

    通过zuul网关处理requestURI可以做很多事情,如对uri的解密,转发,大小写转化等. 这里对URI做一个简单的大小写的转化. 写一个filter实现ZuulFilter: packageco ...

  3. java脏话模糊对比_javaweb脏话过滤器

    ? 实现过滤器只须在web.xml中设定相关设定, 不需要修改Servlet.JSP和其他静态...import java.io.IOException; ? import javax.servlet ...

  4. java web宿舍管理系统源码_JavaWeb宿舍管理系统(附 演示、源码下载地址)

    > 宿舍管理是高校管理的重要组成部分,一套优秀的管理系统不仅可以降低宿舍管理的难度,也能在一定程度上减少学校管理费用的支出,能是建设现代化高校管理体系的重要标志. 本篇文章将带你从运行环境搭建. ...

  5. SpringMVC源码阅读:过滤器

    SpringMVC源码阅读:过滤器 目录 1.前言 2.源码分析 3.自定义过滤器 3.1 自定义过滤器继承OncePerRequestFilter 3.2 自定义过滤器实现Filter接口 4.过滤 ...

  6. java修改字节码技术,Javassist修改class,ASM修改class

    背景: 项目使用的Logback 1.1.11版本的类ch.qos.logback.core.rolling.helper.RollingCalendar的periodBarriersCrossed方 ...

  7. Java字节码介绍及动态修改类

    前言 对于Java字节码,它是在Java类的编译过程产生的,即由.java源文件到.class二进制字节码文件的过程.而Java类的加载又是通过类的名字获取二进制字节流,然后在内存中将字节流生成类对象 ...

  8. java过滤器修改响应,在过滤器中实现修改http请求体和响应体

    在一些业务场景中,需要对http的请求体和响应体做加解密的操作,如果在controller中来调用加解密函数,会增加代码的耦合度,同时也会增加调试的难度. 参考spring中http请求的链路,选择过 ...

  9. 尚硅谷雷神SpringBoot2超详细笔记和源码以及自己Bug修改和个人的体会

    ## 01.基础入门-SpringBoot2课程介绍 Spring Boot 2核心技术 Spring Boot 2响应式编程 学习要求 -熟悉Spring基础 -熟悉Maven使用 环境要求 Jav ...

最新文章

  1. 宏基因组实战10. 绘制圈图-Circos安装与使用
  2. web前端入门学习 css(10)移动端布局(学到DPG格式图片与webp格式图片停了)
  3. xaml修改后台代码的值_Django定制后台和修改模型
  4. inner join 和 exists 效率_19条效率至少提高3倍的MySQL技巧
  5. linux 微信 开源,Makefile · 李光春/微信开发者工具 Linux版 - Gitee.com
  6. HTML如何添加锚点,论程序员成长的正确姿势
  7. java 学生信息 list_java用list集合存储学生信息并算出成绩平均值操作
  8. rcp异步多参数实例
  9. 20155303 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
  10. JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(一)
  11. 灰光和彩光_波分百科(一):认识光
  12. 新年干货 | NLP一路走来的经验之谈
  13. SCP,两台机器互相使用拷贝
  14. 一次library cache pin故障的解决过程
  15. C++11 enable_shared_from_this
  16. spring学期总结
  17. 第八章JRT/0197-2020金融数据安全数据安全分级指南解读
  18. 企业微信开源系统,让开发者快速搭建基于企业微信的私域流量运营系统
  19. 第七篇 indicators(4)自建指标
  20. 信息爆炸,用写作让它慢下来-2023.04.07

热门文章

  1. ulimit调优|设置普通用户的ulimit值
  2. 将你的 CentOS 变成 OSPF 路由器
  3. UIView-Maker,实现UIView的clone操作和统一样式模型
  4. phoenixframework自动化测试平台架构图
  5. linux和aix设置时间
  6. 一个程序员的小笑话.(纯属虚构)
  7. linux centos 7 安装中文字体
  8. docker 查看容器ip
  9. python3 windows环境 安装加密库 crypto
  10. python3 raise 抛出异常