📄 compressionfilter.java
字号:
package com.sslexplorer.core.filters;
import java.io.IOException;
import java.util.Enumeration;
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 org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.sslexplorer.core.CoreServlet;
import com.sslexplorer.core.CoreUtil;
import com.sslexplorer.security.Constants;
import com.sslexplorer.security.User;
public class CompressionFilter implements Filter {
private FilterConfig config = null;
protected int compressionThreshold;
final static Log log = LogFactory.getLog(CompressionFilter.class);
/* (non-Javadoc)
* @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
*/
public void init(FilterConfig filterConfig) {
config = filterConfig;
compressionThreshold = 0;
if (filterConfig != null) {
String str = filterConfig.getInitParameter("compressionThreshold");
if (str != null) {
compressionThreshold = Integer.parseInt(str);
} else {
compressionThreshold = 0;
}
}
}
/* (non-Javadoc)
* @see javax.servlet.Filter#destroy()
*/
public void destroy() {
this.config = null;
}
/* (non-Javadoc)
* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
boolean supportCompression = false;
if (request instanceof HttpServletRequest && !Boolean.FALSE.equals(request.getAttribute(Constants.REQ_ATTR_COMPRESS))) {
boolean compressionEnabled = false;
try {
User user = CoreServlet.getServlet().getLogonController().getUser((HttpServletRequest) request);
compressionEnabled = CoreServlet.getServlet().getPropertyDatabase().getPropertyBoolean(
CoreUtil.getCurrentPropertyProfileId(((HttpServletRequest) request).getSession()),
user == null ? null : user.getPrincipalName(), "webServer.compression");
} catch (Exception ex) {
}
if (compressionEnabled) {
Enumeration e = ((HttpServletRequest) request).getHeaders("Accept-Encoding");
while (e.hasMoreElements()) {
String name = (String) e.nextElement();
if (name.indexOf("gzip") != -1) {
supportCompression = true;
}
}
}
}
if (supportCompression && response instanceof HttpServletResponse) {
// CompressionResponseWrapper wrappedResponse = new CompressionResponseWrapper((HttpServletResponse) response);
// wrappedResponse.setCompressionThreshold(compressionThreshold);
// chain.doFilter(request, wrappedResponse);
GZIPResponseWrapper wrappedResponse =
new GZIPResponseWrapper((HttpServletResponse)response);
chain.doFilter(request, wrappedResponse);
wrappedResponse.finishResponse();
} else {
chain.doFilter(request, response);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -