您的位置:首页 > 运维架构 > Tomcat

TOMCAT中处理POST、GET编码问题解决方案

2008-04-30 17:40 399 查看
 server.xml


<Connector port="80" protocol="HTTP/1.1" 


               connectionTimeout="20000" 


               redirectPort="8443" useBodyEncodingForURI="true"/>

web.xml


    <filter>


        <filter-name>Set Character Encoding</filter-name>  


        <filter-class>filters.SetCharacterEncodingFilter</filter-class>  


        <init-param>  


            <param-name>encoding</param-name>  


            <param-value>GBK</param-value>  


        </init-param>


    </filter>


    <filter-mapping>


        <filter-name>Set Character Encoding</filter-name>


        <url-pattern>/*</url-pattern>


    </filter-mapping>

SetCharacterEncodingFilter.java

 


package filters;




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;






public class SetCharacterEncodingFilter implements Filter ...{






    /** *//**


     * The default character encoding to set for requests that pass through


     * this filter.


     */


    protected String encoding = 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;






    /** *//**


     * Take this filter out of service.


     */




    public void destroy() ...{


        this.encoding = null;


        this.filterConfig = 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");


        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


     * <code>null</code>.


     * <p>


     * The default implementation unconditionally returns the value configured


     * by the <strong>encoding</strong> initialization parameter for this


     * filter.


     *


     * @param request The servlet request we are processing


     */




    protected String selectEncoding(ServletRequest request) ...{


        return (this.encoding);


    }




}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tomcat encoding null