package com.cc.keywordrank.filter;
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.springframework.web.filter.OncePerRequestFilter;
public class AjaxPostFilter extends OncePerRequestFilter {
private static Logger logger = Logger.getLogger(AjaxPostFilter.class);
private static final String IE_CONTENT_TYPE = "application/x-www-form-urlencoded";
private static final String FF_AJAX_CONTENT_TYPE = "application/x-www-form-urlencoded; charset=UTF-8";
private static final String XMLHTTP_REQUEST = "XMLHttpRequest";
private static final String AJAX_CHARACTER_ENCODING_UTF8 = "UTF-8";
private String encoding;
private boolean forceEncoding = false;
public void setEncoding(String encoding) {
this.encoding = encoding;
}
public void setForceEncoding(boolean forceEncoding) {
this.forceEncoding = forceEncoding;
}
@Override
protected void doFilterInternal(
HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
String requestedWith = request.getHeader("x-requested-with");
String type = request.getContentType();
if (XMLHTTP_REQUEST.equals(requestedWith)&& (FF_AJAX_CONTENT_TYPE.equals(type)
||IE_CONTENT_TYPE.equals(type))) {
request.setCharacterEncoding(AJAX_CHARACTER_ENCODING_UTF8);
response.setCharacterEncoding(AJAX_CHARACTER_ENCODING_UTF8);
}else if(type!=null && type.indexOf("multipart/form-data;") != -1){
request.setCharacterEncoding(AJAX_CHARACTER_ENCODING_UTF8);
response.setCharacterEncoding(AJAX_CHARACTER_ENCODING_UTF8);
}else if (this.encoding != null && (this.forceEncoding || request.getCharacterEncoding() == null)) {
request.setCharacterEncoding(this.encoding);
if (this.forceEncoding) {
response.setCharacterEncoding(this.encoding);
}
}
filterChain.doFilter(request, response);
}
}
转载于:https://my.oschina.net/wjgood/blog/90438