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 ...
最新文章
- RichTextBox的使用
- V3S中换2.0寸LCD时MINIGUI无显示的问题的解决过程
- 客制化键盘键位修改_IQUNIX Slim87 RGB机械键盘评测
- C++之STL容器嵌套实现二维数组
- 【NLP】近期必读ICLR 2021相关论文
- PCL_三维点云拼接融合/点云粗配准/点云精配准
- servletconfigservletcontext
- PyCharm下载及使用
- 华为 BGP路由聚合
- 谈一下我对OOP的了解
- 解救IP被封的服务器
- Ubuntu 20.4 美化桌面、美化引导界面、Mac 既视感
- 解耦、削峰、异步的理解
- 马斯诺的行为科学体系的基础
- USB UVC协议分析
- 用友nc56 eclipse开发工具设置注意事项
- 手术室无菌注意事项的内容
- flex显示gir动画
- 你了解个人云盘和企业云盘有什么区别吗?
- 在web.xml里配置Servlet
热门文章
- 分类算法:决策树(C4.5)
- TCP的三次握手,四次断开
- ArcGIS Engine生成等值线(C#)
- XenApp_XenDesktop_7.6实战篇之十四:XenDesktop虚拟桌面的交付
- win8中离线安装net framework 3.5
- 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
- tomcat7在eclipse中,调试时断点频繁停在threadpoolexecutor
- python 报错 SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1076) 解决方法
- golang 切片删除指定内容
- mysql 连接超时 wait_timeout interactive_timeout 简介