java修改状态码_JavaWeb-用过滤器修改请求的返回状态码
问题: 客户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-用过滤器修改请求的返回状态码相关推荐
- python银行管理系统源码_javaweb银行大厅自助信息管理系统,源码行行注释,免费分享...
全微毕设擅长JAVA(SSM,SSH,SPRINGBOOT).PYTHON(DJANGO/FLASK).THINKPHP.C#.安卓.微信小程序.MYSQL.SQLSERVER等,欢迎咨询 今天记录的 ...
- java request修改uri,spring cloud zuul过滤器修改requestURI 忽略大小写
通过zuul网关处理requestURI可以做很多事情,如对uri的解密,转发,大小写转化等. 这里对URI做一个简单的大小写的转化. 写一个filter实现ZuulFilter: packageco ...
- java脏话模糊对比_javaweb脏话过滤器
? 实现过滤器只须在web.xml中设定相关设定, 不需要修改Servlet.JSP和其他静态...import java.io.IOException; ? import javax.servlet ...
- java web宿舍管理系统源码_JavaWeb宿舍管理系统(附 演示、源码下载地址)
> 宿舍管理是高校管理的重要组成部分,一套优秀的管理系统不仅可以降低宿舍管理的难度,也能在一定程度上减少学校管理费用的支出,能是建设现代化高校管理体系的重要标志. 本篇文章将带你从运行环境搭建. ...
- SpringMVC源码阅读:过滤器
SpringMVC源码阅读:过滤器 目录 1.前言 2.源码分析 3.自定义过滤器 3.1 自定义过滤器继承OncePerRequestFilter 3.2 自定义过滤器实现Filter接口 4.过滤 ...
- java修改字节码技术,Javassist修改class,ASM修改class
背景: 项目使用的Logback 1.1.11版本的类ch.qos.logback.core.rolling.helper.RollingCalendar的periodBarriersCrossed方 ...
- Java字节码介绍及动态修改类
前言 对于Java字节码,它是在Java类的编译过程产生的,即由.java源文件到.class二进制字节码文件的过程.而Java类的加载又是通过类的名字获取二进制字节流,然后在内存中将字节流生成类对象 ...
- java过滤器修改响应,在过滤器中实现修改http请求体和响应体
在一些业务场景中,需要对http的请求体和响应体做加解密的操作,如果在controller中来调用加解密函数,会增加代码的耦合度,同时也会增加调试的难度. 参考spring中http请求的链路,选择过 ...
- 尚硅谷雷神SpringBoot2超详细笔记和源码以及自己Bug修改和个人的体会
## 01.基础入门-SpringBoot2课程介绍 Spring Boot 2核心技术 Spring Boot 2响应式编程 学习要求 -熟悉Spring基础 -熟悉Maven使用 环境要求 Jav ...
最新文章
- 宏基因组实战10. 绘制圈图-Circos安装与使用
- web前端入门学习 css(10)移动端布局(学到DPG格式图片与webp格式图片停了)
- xaml修改后台代码的值_Django定制后台和修改模型
- inner join 和 exists 效率_19条效率至少提高3倍的MySQL技巧
- linux 微信 开源,Makefile · 李光春/微信开发者工具 Linux版 - Gitee.com
- HTML如何添加锚点,论程序员成长的正确姿势
- java 学生信息 list_java用list集合存储学生信息并算出成绩平均值操作
- rcp异步多参数实例
- 20155303 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
- JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(一)
- 灰光和彩光_波分百科(一):认识光
- 新年干货 | NLP一路走来的经验之谈
- SCP,两台机器互相使用拷贝
- 一次library cache pin故障的解决过程
- C++11 enable_shared_from_this
- spring学期总结
- 第八章JRT/0197-2020金融数据安全数据安全分级指南解读
- 企业微信开源系统,让开发者快速搭建基于企业微信的私域流量运营系统
- 第七篇 indicators(4)自建指标
- 信息爆炸,用写作让它慢下来-2023.04.07