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中的配置
<filter>
<filter-name>ResponseCodeFilter</filter-name>
<filter-class>com.supermap.test.ResponseCodeFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ResponseCodeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
修改前:

修改后

JavaWeb-用过滤器修改请求的返回状态码的更多相关文章
- 手动修改PHP页面返回状态码
<?php //比如当前页面要返回404状态码 header("HTTP/1.1 404 Not Found"); header("Status: 404 Not ...
- Fiddler修改请求、返回数据
相信你们有听过说“绕过前端”,但是可能想不到要怎样才能绕过前端呢? 首先,我们要知道什么是绕过前端?比如:登录用户名限制数字.6位,用户在登录页面填写用户名符合要求,使用Fiddler作为代理,拦截登 ...
- status 返回当前请求的http状态码
status属性返回当前请求的http状态码,此属性仅当数据发送并接收完毕后才可获取.完整的HTTP状态码如下: 100 Continue 初始的请求已经接受,客户应当继续发送请求的其余部分 101 ...
- HTTP协议简介详解 HTTP协议发展 原理 请求方法 响应状态码 请求头 请求首部 java模拟浏览器客户端服务端
协议简介 协议,自然语言里面就是契约,也是双方或者多方经过协商达成的一致意见; 契约也即类似于合同,自然有甲方123...,乙方123...,哪些能做,哪些不能做; 通信协议,也即是双方通过网络通信必 ...
- HTTP 返回状态码
一.HTTP 超文本传输协议 HTTP 是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议. 一个HTTP "客户端"是一个应用程 ...
- HTTP 返回状态码说明
HTTP 返回状态码一.1xx - 信息提示 这些状态代码表示临时的响应.客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应. • 100 - 继续. • 101 - 切换协议. 二.2xx ...
- http请求常用的状态码
常见的http请求响应的状态码 一些常见的状态码为: 200 – 服务器成功返回网页 404 – 请求的网页不存在 503 – 服务不可用 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状 ...
- HTTP/1.1标准请求方法和状态码
HTTP/1.1标准自从1999年制定以来至今仍然是一个应用广泛并且通行的标准 相关文档 RFC2616:Hypertext Transfer Protocol -- HTTP/1.1 在RFC658 ...
- (二)http请求方法和状态码
1.HTTP请求方法 根据 HTTP 标准,HTTP 请求可以使用多种请求方法. HTTP1.0 定义了三种请求方法: GET.POST 和 HEAD方法. HTTP1.1 新增了六种请求方法:OPT ...
随机推荐
- 5.性能测试工具比较:Jmeter和LR
性能测试工具较多,无法一一进行介绍,感兴趣者可自行搜索资料学习.需要说明的是工具使用方法和原理都大同小异,掌握一个,其他皆可快速上手. 下面就以服务端的性能测试工具为例,对市场上最常用,知名度较高,也 ...
- kvm管理工具Webvirtmgr安装
虚拟机版本vmware workstation 15.5.0 pro (也就是linux版) cat /etc/redhat-release CentOS Linux release 7.4.17 ...
- 简单了解sshd_config配置文件
OpenSSH(即常说的ssh)的常用配置文件有两个/etc/ssh/ssh_config和sshd_config.,其中ssh_config为客户端配置文件,设置与客户端相关的应用可通过此文件实现: ...
- Linux Shell列出网络中所有的活跃主机
因为的的网段是 192.168.1.0/24 , 所以我只需遍历 192.168.1.1 到 192.168.1.255 之间的所有ip然后进行 ping 就可以了: test.sh: #!/bin/ ...
- Hadoop 部署之 Spark (六)
目录 一.Spark 是什么 二.Scala的安装(所有节点) 三.Spark 安装(所有节点) 1.下载安装 2.配置 Spark 环境变量 四.Spark 配置(namenode01) 1.配置 ...
- Reset Password 重置密码 (CentOS 5,6,7 ; Juniper Networks: SRX100 )
一些重置root 密码的文档分享(来自官网): CentOS 5,6,7 Juniper Networks : SRX100 链接:https://share.weiyun.com/5BM4kwK ...
- AWK---linux系统三剑客(三)
grep .sed.awk被称为linux中的"三剑客". grep 更适合单纯的查找或匹配文本 sed 更适合编辑匹配到的文本 awk 更适合格式化文本,对文本进行较复杂格式 ...
- zepto手机拼音字母城市选择器代码
<!doctype html> <html> <head> <meta http-equiv="Content-Type" content ...
- [国外] 解决Windows10下google搜索连接不上,但其它网页都能成功登入的问题
我的电脑突然在学校不能登陆google了,在家可以连接但是非常慢. 在网上搜索发现是由于DNS出了问题,在此记录一下. 可以通过控制面板——网络和Internet——网络和共享中心——点击现在使用的网 ...
- TensorFlow.环境_avx2
1.缘由: 按照之前的步骤,在Win10的笔记本上就是不行: 1.1.jupyter notebook的相关界面,如下图所示: ZC:感觉 应该还是 tensorflow的问题 1.2.然后 各种测试 ...