/* * The TMC source file * Copyright ® 2005 Beijing Topsec Network Security Technology Co.,Ltd * All right reserved. */ package com.test.common; 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.HttpServletRequest; import sun.rmi.transport.proxy.HttpReceiveSocket; /** * * Filter that sets the character encoding to be used in parsing the * * incoming request, either unconditionally or only if the client did not * * specify a character encoding. Configuration of this filter is based on * * the following initialization parameters: * * * * encoding - The character encoding to be configured for this request, either conditionally or * unconditionally based on * * the ignore initialization parameter. This parameter * * is required, so there is no default. * * ignore - If set to "true", any character encoding specified by the client is ignored, and the * value returned by the * * selectEncoding() method is set. If set to "false, * * selectEncoding() is called only if the * * client has not already specified an encoding. By default, this * * parameter is set to "true". * * * * * * Although this filter can be used unchanged, it is also easy to * * subclass it and make the selectEncoding() method more * * intelligent about what encoding to choose, based on characteristics of * * the incoming request (such as the values of the Accept-Language * * and User-Agent headers, or a value stashed in the current * * user′s session. * * * */ public class EncodingFilter implements Filter { // ----------------------------------------------------- Instance Variables /** * * The default character encoding to set for requests that pass through * * this filter. * */ protected String encoding = null; protected String getEncoding = null; /** * * The filter configuration object we are associated with. If this value * * is null, this filter instance is not currently configured. * */ protected FilterConfig filterConfig = null; /** * * Should a character encoding specified by the client be ignored? * */ protected boolean ignore = true; // --------------------------------------------------------- Public Methods /** * * Take this filter out of service. * */ public void destroy() { this.encoding = null; this.filterConfig = null; this.getEncoding = 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)) { String encoding = selectEncoding(request); if (encoding != null) request.setCharacterEncoding(encoding); } // 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.filterConfig = filterConfig; this.encoding = filterConfig.getInitParameter("encoding"); this.getEncoding = filterConfig.getInitParameter("getEncoding"); 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; } // ------------------------------------------------------ Protected Methods /** * * Select an appropriate character encoding to be used, based on the * * characteristics of the current request and/or filter initialization * * parameters. If no character encoding should be set, return * * null. * * * * * The default implementation unconditionally returns the value configured * * by the encoding initialization parameter for this * * filter. * * * * @param request * The servlet request we are processing * */ protected String selectEncoding(ServletRequest request) { if (request instanceof HttpServletRequest) { HttpServletRequest req = (HttpServletRequest) request; if("get".equalsIgnoreCase(req.getMethod())){ return (this.getEncoding); } } return (this.encoding); } }//EOC
最近下载更多
changhui LV1
2023年9月7日
sl0018 LV13
2022年6月24日
13720359621 LV2
2021年10月28日
于于不是鱼 LV1
2021年5月25日
HJThhh LV1
2020年7月8日
小舟呀 LV12
2020年3月24日
xiao1231 LV1
2019年9月23日
2235140624 LV17
2019年7月10日
ly3812 LV17
2019年6月3日
Alice1002008 LV5
2019年5月29日
最近浏览更多
changhui LV1
2023年9月7日
微信网友_6166561027215360 LV2
2022年10月8日
sl0018 LV13
2022年6月24日
Mayoubin2001 LV21
2022年3月26日
13561143836 LV7
2021年11月10日
13720359621 LV2
2021年10月28日
于于不是鱼 LV1
2021年5月25日
wd2050 LV1
2021年2月10日
zhang666 LV8
2020年9月3日
597117933 LV8
2020年8月26日