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

j2EE中的过滤器的用法(过滤乱码)

阅读更多

乱码是j2ee中一个比较常见的问题。遇到1,2个情况下,可以用new String(request.getParameter(xxx).getBytes("ISO-8859-1"),"UTF-8")来解决。遇到多的情况下,就最好用过滤器了。
1个过滤器只需要注意2个地方,类和在web.xml上面的发布。

1。在web.xml上面的发布如下:

<filter>
      
<filter-name>SetCharsetEncodingFilter</filter-name //这个是类名
      
<filter-class>org.SetCharacter</filter-class>        //这个是类的位置
      
<init-param>
          
<param-name>encoding</param-name>
          
<param-value>utf-8</param-value>
      
</init-param>
  
</filter>
  
<filter-mapping>
      
<filter-name>SetCharsetEncodingFilter</filter-name>
      
<url-pattern> /* </url-pattern>   //这个代表所有的文件遇到过滤器都要被拦截
  </filter-mapping>


2。过滤的这个类如下:

package org;

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 SetCharacter implements Filter {
    
protected String encoding = null;
    
protected FilterConfig filterConfig = null;
    
protected boolean ignore = true;

    
public void init(FilterConfig arg0) throws ServletException {
        
this.encoding = arg0.getInitParameter("encoding");
        String value 
= arg0.getInitParameter("imnore");
        
if(value==null){
            
this.ignore = true;
        }
else if (value.equalsIgnoreCase("true")){
            
this.ignore = true;
        }
else if(value.equalsIgnoreCase("yes")){
            
this.ignore = true;
        }

        
    }


    
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {
        
if(ignore||(arg0.getCharacterEncoding() == null)){
            String encoding 
=selectEncoding(arg0);
            
if(encoding!=null)
                arg0.setCharacterEncoding(encoding);
        }

        arg2.doFilter(arg0,arg1);
    }


    
private String selectEncoding(ServletRequest arg0) {
        
return (this.encoding);
    }


    
public void destroy() {
        
this.encoding = null;
        
this.filterConfig = null;
    }


}

分享到:
评论
1 楼 blue3377 2009-12-25  
为什么,我一吧这个加入我的项目里面。他就报错了:
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/myblog] has not been started
2009-12-25 14:59:35 org.apache.catalina.core.StandardContext filterStart
严重: Exception starting filter SetCharsetEncodingFilter
java.lang.ClassNotFoundException: cn.blue.SetCharacter

2009-12-25 14:59:35 org.apache.catalina.core.StandardContext start
严重: Error filterStart
2009-12-25 14:59:35 org.apache.catalina.core.StandardContext start
严重: Context [/myblog] startup failed due to previous errors
?能解释下么?

相关推荐

    J2EE乱码问题解决方法

    在`web.xml`文件中添加过滤器(Filter),例如使用`SetCharacterEncodingFilter`来统一编码格式。 ```xml &lt;filter-name&gt;SetCharacterEncoding &lt;filter-class&gt;...

    j2ee项目中中文乱码问题集锦

    本文将围绕一个典型的案例来详细分析如何解决J2EE项目中的中文乱码问题,并总结出一系列实用的方法。 #### 一、问题背景与原因分析 在J2EE应用中,中文乱码主要出现在以下几个环节:用户输入数据时、服务器处理...

    J2ee应用中文乱码问题解决方案.doc

    - 配置`web.xml`中的`&lt;filter&gt;`和`&lt;filter-mapping&gt;`,使用`CharacterEncodingFilter`过滤器设定全局编码。 总结来说,解决J2EE应用中文乱码问题的关键在于理解字符集的原理,并在每个可能引起乱码的环节进行相应...

    J2EE中文乱码完全攻略

    3. 过滤器:在Servlet中,可以通过过滤器设置请求的字符集,例如`request.setCharacterEncoding("UTF-8");`,这可以避免POST请求时的乱码问题。 4. 数据转换:如果需要将字符串从一种字符集转换为另一种,可以使用`...

    J2EE中Struts中四种解决中文乱码问题的方法

    ### J2EE中Struts框架下解决中文乱码问题的四种方法 在Java Web开发过程中,尤其是使用Struts框架时,经常会遇到中文乱码的问题。本文将详细介绍在J2EE环境下,利用Struts框架解决中文乱码问题的四种实用方法。 ##...

    中文岂能乱码(J2EE)

    根据给定文件的内容,本文将详细介绍几种常见的中文乱码问题及其对应的解决方案,重点讨论通过JSP页面之间以及JSP与Servlet之间的数据传递过程中遇到的问题,并介绍过滤器(filter)作为一劳永逸的解决方案。...

    j2ee中文乱码问题终极解决之道

    5. 统一应用系统编码:在整个J2EE应用程序中,设定统一的字符集,如在web.xml中设置`&lt;filter&gt;`和`&lt;filter-mapping&gt;`,使用`CharacterEncodingFilter`过滤器,确保请求和响应的编码一致。 6. JSP页面编码设置:在JSP...

    过滤器Filter的全面解析

    在Java的Web开发中,过滤器(Filter)是不可或缺的一部分,尤其在J2EE环境中,它扮演着重要的角色。过滤器提供了一种机制,可以对HTTP请求和响应进行拦截、处理,甚至修改,从而实现诸如数据校验、权限控制、字符...

    J2EE中文问题终极解决之道

    总的来说,解决J2EE中文乱码问题需要综合考虑输入输出的各个层面,通过设定统一的UTF-8编码并配合过滤器、页面声明和数据库配置,可以实现中文问题的终极解决。同时,对于跨平台的Java应用,选择UTF-8编码是最佳实践...

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

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

    j2ee论坛代码

    在这个项目中,开发者使用了JavaBean技术来封装业务逻辑,以及过滤器(Filter)来处理用户请求和数据过滤。让我们深入探讨这些知识点。 **JavaBean** JavaBean是Java编程语言中的一个组件,它遵循一定的规范,使得...

    JSP乱码解决方案J2EE

    2. **过滤器全局设定**:为避免在每个JSP文件中都添加编码设定,可以使用Servlet过滤器。在`web.xml`中配置`CharacterEncodingFilter`,如: ```xml &lt;filter-name&gt;CharacterEncodingFilter &lt;filter-class&gt;...

    基于Java过滤器实现的系统权限控制方法研究.pdf

    过滤器是 J2EE 规范中的一项技术,可以简单、高效地实现用户权限精确控制。过滤器可以对请求和响应进行过滤,设置可以修改或使用包含在请求或响应中的信息。其执行过程可以描述为:对用户发出的任何请求进行拦截,...

    解决Java J2EE乱码问题的方法

    Java J2EE开发中,乱码问题是一个常见但棘手的问题,尤其是在处理用户输入的数据时。乱码通常出现在请求参数、文件上传、响应内容等方面。本文将深入探讨如何解决Java J2EE应用中的乱码问题。 首先,乱码问题的出现...

    java+jsp+mysql开发 web项目处理中文乱码问题

    解决方法是,使用过滤器设置编码。我们可以编写一个过滤器,例如 SetCharacterEncodingFilter.java: ```java package com.sorc; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; ...

    java 中文乱码 处理

    2. **使用过滤器统一编码**:在Web应用程序中,可以通过使用Servlet Filter来统一处理请求的编码。这种方式可以在应用程序入口处就处理好所有请求的编码问题,避免后续处理过程中的乱码问题。 示例Filter配置代码:...

    Java-J2EE中文问题终极解决之道.doc

    这可以通过在`web.xml`中配置过滤器实现。 - 示例:使用`request.setCharacterEncoding("UTF-8")`来设置请求的字符集。 - 配置示例:在Jdon框架中,`com.jdon.util.SetCharacterEncodingFilter`可用于自动设置字符...

    Java/J2EE中文问题终极解决之道

    - **Servlet Filter**:可以通过实现`javax.servlet.Filter`接口来创建过滤器,例如`SetCharacterEncodingFilter`,并将其部署到`web.xml`文件中。具体代码如下: ```java public class ...

    J2EE之filter的应用

    //销毁过滤器48. public void destroy() {49. this.filterConfig = null;50. }51.}52.53.2、在 web.xml 文件中配置 Filter54.&lt;filter&gt;55. &lt;filter-name&gt;EncodeFilter&lt;/filter-name&gt;56. &lt;filter-class&gt;...

Global site tag (gtag.js) - Google Analytics