package com.fzs.wechat.api.filter;
import com.fzs.wechat.api.requestWrapper.ParameterRequestWrapper;
import com.fzs.wechat.api.util.ServletInputStreamHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.Enumeration;
/**
*/
@WebFilter(filterName = "requestFilter", urlPatterns = "/*")
public class RequestFilter implements Filter
{
private static Logger logger = LoggerFactory.getLogger(RequestFilter.class);
@Override
public void init(FilterConfig filterConfig) throws ServletException
{
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException,
ServletException
{
HttpServletRequest req = (HttpServletRequest) servletRequest;
ParameterRequestWrapper requestWrapper = new ParameterRequestWrapper(req);
printRequest(requestWrapper);
filterChain.doFilter(requestWrapper, servletResponse);
}
private void printRequest(ParameterRequestWrapper requestWrapper) {
if (logger.isDebugEnabled()) {
StringBuilder sb = new StringBuilder();
sb.append("target uri:").append(requestWrapper.getRequestURI()).append(System.getProperty("line.separator"));
sb.append("param:").append(System.getProperty("line.separator"));
Enumeration<String> pNames = requestWrapper.getParameterNames();
while (pNames.hasMoreElements())
{
String pName = pNames.nextElement();
sb.append(pName).append("==").append(requestWrapper.getParameter(pName))
.append(System.getProperty("line.separator"));
}
sb.append("body:").append(ServletInputStreamHelper.getBodyString(requestWrapper));
logger.debug(sb.toString());
}
}
@Override
public void destroy() {
}
}