首页>代码>通过struts1实现附件文件上传功能>/upload1.2/src/com/test/common/EncodingFilter.java
/*
 * 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日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友