/* ==================================================================
* Created [2009-4-27 下午11:32:55] by Jon.King
* ==================================================================
* TSS
* ==================================================================
* mailTo:jinpujun@hotmail.com
* Copyright (c) Jon.King, 2009-2012
* ==================================================================
*/
package com.jinhe.tss.core.web.filter;
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.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.jinhe.tss.core.Config;
/**
* <p>
* SetCharacterEncodingFilter.java
* </p>
*
*/
public class SetCharacterEncodingFilter implements Filter {
private static final Log log = LogFactory.getLog(SetCharacterEncodingFilter.class);
/** The default character encoding to set for requests that pass through this filter. */
protected String encoding = null;
/** Should a character encoding specified by the client be ignored? */
protected boolean ignore = true;
/** Take this filter out of service. */
public void destroy() {
this.encoding = null;
}
/**
* Select and set (if specified) the character encoding to be used to
* interpret request parameters for this request.
*
* @param request
* The servlet request we are processing
* @param result
* The servlet response we are creating
* @param chain
* The filter chain we are processing
*
* @exception IOException
* if an input/output error occurs
* @exception ServletException
* if a servlet error occurs
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// Conditionally select and set the character encoding to be used
if (ignore || (request.getCharacterEncoding() == null)) {
if (this.encoding != null)
request.setCharacterEncoding(this.encoding);
}
HttpServletResponse hsr = (HttpServletResponse) response;
hsr.setHeader("Cache-Control", "No-Cache");
// Pass control on to the next filter
chain.doFilter(request, response);
}
/**
* Place this filter into service.
*
* @param filterConfig
* The filter configuration object
*/
public void init(FilterConfig filterConfig) throws ServletException {
this.encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null)
this.ignore = true;
else if (value.equalsIgnoreCase("true"))
this.ignore = true;
else if (value.equalsIgnoreCase("yes"))
this.ignore = true;
else
this.ignore = false;
log.info("字符编码转换服务初始化完成!appCode=" + Config.getAttribute(Config.APPLICATION_CODE));
}
}