`
wss71104307
  • 浏览: 223018 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

字符编码转换 filter

阅读更多

从Tomcat 带的Examples 找到了个

 

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package ****
;


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;


/**
 * <p>Example 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:</p>
 * <ul>
 * <li><strong>encoding</strong> - The character encoding to be configured
 *     for this request, either conditionally or unconditionally based on
 *     the <code>ignore</code> initialization parameter.  This parameter
 *     is required, so there is no default.</li>
 * <li><strong>ignore</strong> - If set to "true", any character encoding
 *     specified by the client is ignored, and the value returned by the
 *     <code>selectEncoding()</code> method is set.  If set to "false,
 *     <code>selectEncoding()</code> is called <strong>only</strong> if the
 *     client has not already specified an encoding.  By default, this
 *     parameter is set to "true".</li>
 * </ul>
 *
 * <p>Although this filter can be used unchanged, it is also easy to
 * subclass it and make the <code>selectEncoding()</code> method more
 * intelligent about what encoding to choose, based on characteristics of
 * the incoming request (such as the values of the <code>Accept-Language</code>
 * and <code>User-Agent</code> headers, or a value stashed in the current
 * user's session.</p>
 *
 * @author Craig McClanahan
 * @version $Revision: 500674 $ $Date: 2007-01-28 00:15:00 +0100 (Sun, 28 Jan 2007) $
 */

public class SetCharacterEncodingFilter implements Filter {


    // ----------------------------------------------------- Instance Variables


    /**
     * 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;


    // --------------------------------------------------------- Public Methods


    /**
     * 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);

    }


}

 放到你工程合适地方。

****
改为正确的目录

 

接下来修改web.xml文件 加入:

 

 <!--  Character Encoding filter -->
 <filter>
  <filter-name>Set Character Encoding</filter-name>
  <filter-class>****
.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
类放在位置
分享到:
评论

相关推荐

    字符编码过滤器 字符编码转换 post字符转换

    本文将深入探讨"字符编码过滤器"、"J2EE字符编码"、"字符编码转换"以及"POST字符转换"这些关键知识点,并结合提供的文件"encoding-filter.jar"和"使用方法.txt"来解释它们的应用。 首先,字符编码是计算机存储和...

    jquery字符编码转换[文].pdf

    在软件开发过程中,字符编码问题是一个常见的挑战,尤其是在涉及到多语言和跨平台交互时。`jQuery`是一个广泛使用的JavaScript库,它在与服务器进行异步通信(Ajax)时,可能会遇到编码不匹配的问题,特别是在GBK...

    字符编码

    在“java中用过滤器解决字符编码问题.doc”的文件中,我们可以预期会找到关于如何在Java web应用中利用过滤器(Filter)解决字符编码问题的详细步骤。过滤器是Servlet技术的一部分,可以拦截请求和响应,对数据进行...

    解决字符编码的过滤器

    字符编码是将计算机内部二进制数据转换为人类可读的文字的过程。常见的字符编码方式包括ASCII、GBK、UTF-8等。其中,UTF-8由于其良好的兼容性和国际化的支持,在现代Web开发中被广泛采用。 #### 二、字符编码问题...

    检验用户名、密码、字符编码、页面缓存----Filter的基本使用

    在本主题中,我们将深入探讨如何利用Filter来实现用户验证、密码检查、字符编码转换以及页面缓存控制。 一、用户名与密码验证 在Web应用中,为了保证安全性,通常需要验证用户的登录信息,包括用户名和密码。...

    java字符编码错误整理大全

    为了统一管理Web应用中的字符编码,可以通过自定义过滤器(Filter)来自动设置每个请求的编码。 ```java public class SetCharacterEncodingFilter implements Filter { protected String encoding = null; ...

    Exper11.rar

    例如,你可能会找到不同类型的Filter示例,如登录验证Filter、GZIP压缩Filter或者字符编码转换Filter。此外,它可能还包含了一些测试网页和对应的Filter配置,便于你在实际环境中调试和测试。 总之,Java Web ...

    J2EE -- 字符编码问题

    字符编码是将字符转换为二进制数的一种规则,它确保计算机系统能够正确识别和存储各种字符。常用的字符编码有ASCII、GBK、GB2312、ISO-8859-1、UTF-8等。其中UTF-8是一种可变长度的编码方式,可以支持世界上绝大多数...

    基于tomcat8 编写字符编码Filter过滤器无效问题的解决方法

    基于tomcat8 编写字符编码Filter过滤器无效问题的解决方法 在基于tomcat8 的Web应用程序中,字符编码问题是常见的问题之一。特别是在处理POST请求时,中文字符可能会出现乱码的情况。为了解决这个问题,我们可以...

    JAVA文件编码转换和实现目录与文件打开

    - **检测字符是否需要转换**: `isNeedConvert` 方法检查一个字符是否需要进行编码转换。它通过位运算判断字符的低8位是否等于整个字符,如果不等,表示该字符可能包含高位字节,需要特殊处理。这在处理多字节编码时...

    Util包分页标签、各种时间的操作方法、设置字符编码、数据类型转换、用户权限过滤

    本篇文章将深入探讨`Util`包中涉及的一些关键知识点,包括MD5加密、分页标签、时间操作、字符编码设置、数据类型转换以及用户权限过滤。 1. **MD5加密**: MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希...

    解决JSP字符串乱码的过滤器

    我们将创建一个专门处理字符编码的Filter,确保请求和响应都使用正确的编码。 1. **创建Filter类** 首先,我们需要创建一个Filter类,继承自`javax.servlet.Filter`接口,并实现`doFilter()`方法。在这个方法中,...

    JavaEE Filter全局编码过滤器

    在处理编码问题时,Filter通常会在读取请求参数或设置响应内容时进行编码转换。 创建一个全局编码过滤器的步骤大致如下: 1. **定义Filter类**:首先,你需要创建一个实现`javax.servlet.Filter`接口的类。在这个...

    编码过滤器

    编码过滤器的主要任务是对请求和响应进行编码转换,一般会设置为UTF-8,因为它是国际化的标准。在过滤器的`doFilter`方法中,可以使用如下代码来实现: ```java HttpServletRequest request = (HttpServletRequest)...

    用Filter来解决中文表单提交问题

    `Request`类覆盖了`getParameter()`和`getParameterValues()`方法,以确保在获取表单参数时正确地进行字符编码转换。 `Request`类中的`toChi()`方法用于将ISO-8859-1编码的字符串转换为GBK编码,这是处理从西方字符...

    hibernate转换编码配置和权限及java代码

    首先,编码转换是Web应用程序中一个重要的环节,特别是在处理中文字符时。在提供的代码片段中,我们看到一个名为`FilertEncond`的自定义过滤器,它实现了`javax.servlet.Filter`接口。这个过滤器的主要目的是确保...

    免费_java中文乱码字符集解决大全

    - 在WEB应用中,设置正确的字符编码过滤器,如在web.xml中配置&lt;filter&gt;标签,指定字符编码为UTF-8。 - 在数据库操作中,确保数据库连接和数据的编码设置正确,避免乱码的产生。 - 对于涉及多种编码转换的复杂环境...

    Java过滤器,字符过滤,标签过滤

    字符编码转换是另一个关键点。在Web应用中,不同的系统可能使用不同的字符编码,如UTF-8、GBK等。如果不正确地处理编码,可能会导致乱码问题。Java提供`java.nio.charset`包来处理字符编码,允许我们在接收到请求...

    Filter1源代码

    Filter在Java Web中的主要作用包括:数据校验、安全控制、字符编码转换、性能监控等。它的工作基于Servlet规范中的Filter链,每个Filter可以按需设置拦截规则,并将请求传递给下一个Filter或直接转发到目标Servlet。...

    转换中文的过滤器(java 中转换中文)

    例如,如果是处理HTTP请求,可以考虑使用`FilterServlet`在请求处理之前进行编码转换;如果是读写文件,可以使用`Files`类的重载方法指定编码。 总的来说,Java中处理中文字符的转换涉及编码理论、字符集、I/O流和...

Global site tag (gtag.js) - Google Analytics