有的时候服务器端接口允许请求的方式多样化且不过定,没有nginx的内网服务还需要统计分析post请求日志
1) 在项目中加入相应的包和类,加载那里无所谓,只要web.xml配置正确即可
package filters;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.*;
public final class PostDataDumperFilter implements Filter {
private FilterConfig filterConfig = null;
public void destroy() {
this.filterConfig = null;
}
public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
if (filterConfig == null)
return;
Enumeration names = request.getParameterNames();
StringBuffer output=new StringBuffer();
while (names.hasMoreElements()) {
String name = (String) names.nextElement();
output.append(name+"=");
String values[] = request.getParameterValues(name);
for (int i = 0; i < values.length; i++) {
if (i > 0) output.append("' ");
output.append(values[i]);
}
if(names.hasMoreElements()) output.append("&");
}
request.setAttribute("post", output);
chain.doFilter(request, response);
}
public void init( FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
}
2) 配置web.xm,一般在路径 main/webapps/WEB-INF/web.xml:
post-data-dumper-filter
filters.PostDataDumperFilter
post-data-dumper-filter
/*
3) now you have the attribute postdata for each request and you can easily log it in access valve, for example:
prefix="localhost_access_log." suffix=".txt"
pattern='%h %p %H %l %u %t "%r" params={%{post}r} %s %bbytes %Dms' resolveHosts="false"/>