`
jiujiubuzui
  • 浏览: 73338 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

用过滤器filter解决乱码

 
阅读更多
      当在做程序的是你也许会遇到一些很让你恼火的乱码问题,就是在你在页面传参数或向数据库里插入数据或去值的时候会出现乱码的问题,其实有很多解决办法比如:添加request.setCharacterEncoding("GB18030");或在取值的时候用String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"gbk");等 但有时仍然会遇到一些问题:下面给大家扔一个用过滤器解决此恩体的例子:
首先:定义一个类CharsetEncodingFilter让它实现javax.servlet.Filter接

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*; // For Date class

String encoding;
  //定义一个成员变量用于在init()方法里得到配置文件里<init-param>中对应  <paramname>encoding</param-name> 的 <param-value>GB18030</param-value>值;其中GB18030值可以更改比如gbk等;


public class CharsetEncodingFilter  implements javax.servlet.Filter {
    public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws ServletException, IOException {
          //
1,doFilter方法的第一个参数为ServletRequest对象。此对象给过滤器提供了对进入的信息(包括表单数据、cookie和HTTP请求头)的完全访问。第二个参数为ServletResponse,通常在简单的过滤器中忽略此参数。最后一个参数为FilterChain,此参数用来调用servlet或JSP页。
             
             HttpServletRequest   request =   (HttpServletRequest)request
;//如果处理HTTP请求,并且需要访问诸如getHeader或getCookies等在ServletRequest中无法得到的方法,就要把此request对象构造成HttpServletRequest。
           
            request.setCharacterEncodeing(encoding);
            chain.doFilter(request,response);
                                        
  //2.调用FilterChain对象的doFilter方法。Filter接口的doFilter方法取一个FilterChain对象作为它的一个参数。在调用此对象的doFilter方法时,激活下一个相关的过滤器。如果没有另一个过滤器与servlet或JSP页面关联,则servlet或JSP页面被激活。
}

public void init(FilterConfig config)throws ServletException {

     encoding  = FilterConfig.getInitParameter("encoding
");//FilterConfig对象具有一个getInitParameter方法,它能够访问部署描述符件                                                              //(web.xml)中分配的过滤器初始化参数
}

public void destroy() {}
}


  然后在配置文件web.xml里添加: (请注意,过滤是在serlvet规范2.3版中初次引入的。因此,web.xml文件必须使用DTD的2.3版本。)

 <filter>

     <filter-name>CharsetEncodingFilter</filter-name>

     <filter-class>com.util.filter.CharsetEncodingFilter</filter-class>//class必须是完整路径

     <init-param>

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

            <param-value>GB18030</param-value>

     </init-param>

 </filter>

 <filter-mapping>

     <filter-name>CharsetEncodingFilter</filter-name>

     <url-pattern>*.jsp</url-pattern>
</filter-mapping>//表示对所有jsp文件有效

filter元素位于部署描述符文件(web.xml)的前部,所有filter-mapping、servlet或servlet-mapping元素之前。filter元素具有如下六个可能的子元素:
 icon  这是一个可选的元素,它声明IDE能够使用的一个图象文件。
 filter-name  这是一个必需的元素,它给过滤器分配一个选定的名字。
 display-name  这是一个可选的元素,它给出IDE使用的短名称。
 description  这也是一个可选的元素,它给出IDE的信息,提供文本文档。
 filter-class  这是一个必需的元素,它指定过滤器实现类的完全限定名。
 init-param  这是一个可选的元素,它定义可利用FilterConfig的getInitParameter方法读

分享到:
评论

相关推荐

    使用过滤器解决中文乱码问题

    ### 使用过滤器解决中文乱码问题 在Web开发过程中,经常遇到的一个问题是中文或其它非ASCII字符的乱码问题。这种现象通常出现在浏览器接收的数据与实际编码格式不匹配时。解决此类问题的一种常见方法是使用过滤器...

    jsp用过滤器解决中文乱码问题的方法.docx

    jsp 用过滤器解决中文乱码问题的方法 jsp(JavaServer Pages)是一种广泛应用于Web开发的技术,但是在实际开发中,我们经常会遇到中文乱码问题。为了解决这个问题,我们可以使用jsp过滤器来实现编码设置。我今天要...

    如何配置Filter过滤器处理JSP中文乱码

    解决这个问题的一种常见方法是使用Filter过滤器。以下是配置Filter过滤器处理JSP中文乱码的详细步骤: 1. **配置web.xml文件** 在项目的`web.xml`文件中,你需要添加一个Filter来定义处理乱码的逻辑。首先,声明一...

    jsp 过滤器——解决中文乱码问题

    ### jsp过滤器——解决中文乱码问题 #### 背景介绍 在Web应用开发过程中,特别是使用Java Server Pages (JSP)进行中文字符处理时,经常遇到的一个问题是中文字符显示为乱码。这主要是因为客户端与服务器端之间存在...

    java配置过滤器,解决乱码

    标题提到的"java配置过滤器,解决乱码",实质上是通过使用Servlet过滤器(Filter)来处理HTTP请求和响应中的编码问题,确保数据在传输过程中不出现乱码。下面我们将深入探讨Java中的乱码问题,以及如何通过配置过滤...

    过滤器解决中文乱码(项目)

    本项目"过滤器解决中文乱码"旨在提供一种有效的方法来处理这个问题。下面将详细介绍这个项目的相关知识点。 首先,我们要了解什么是过滤器(Filter)。在Java Web中,过滤器是Servlet API的一部分,它允许我们在...

    servlet过滤器解决乱码问题

    ### Servlet过滤器解决乱码问题 在Web应用开发过程中,字符编码问题经常出现,尤其是在处理中文等多字节字符时。如果不正确地设置字符编码,可能会导致页面显示乱码。本文将详细介绍如何通过Servlet过滤器来解决这...

    过滤器实现对乱码问题的解决

    在 WEB.XML文件里粘贴一下代码 可以解决乱码问题 &lt;filter&gt; &lt;filter-name&gt;EncodingFilter&lt;/filter-name&gt; &lt;filter-class&gt;com.highcom.filter.EncodingFilter&lt;/filter-class&gt; &lt;param-name&gt;encoding ...

    利用过滤器解决JavaWeb(JSP)的乱码问题

    这个问题的出现通常是由于字符编码不一致导致的,而过滤器(Filter)作为一种强大的工具,可以有效地帮助我们解决这个问题。本文将详细讲解如何利用过滤器来解决JavaWeb中的乱码问题。 首先,我们需要理解JavaWeb中...

    jsp 过滤器中文乱码的处理

    本篇文章将详细讲解如何处理JSP中的中文乱码以及如何通过过滤器(Filter)来解决这一问题。 首先,中文乱码的处理主要涉及到字符集(Charset)的概念。在JSP中,当请求参数包含中文字符时,如果不设定字符编码,...

    ssh框架乱码过滤器Filter

    本篇文章将详细探讨SSH框架中的中文乱码问题,以及如何通过实现自定义过滤器(Filter)来解决这一问题。 首先,我们要理解乱码的产生原因。在HTTP请求中,数据编码格式不一致是导致乱码的主要因素。例如,客户端...

    java里中文乱码的解决篇之过滤器

    要使用过滤器解决中文乱码,我们需要创建一个实现了javax.servlet.Filter接口的类。以下是一个简单的过滤器示例: ```java import javax.servlet.*; import java.io.IOException; public class ...

    关于myeclipse中web project中文乱码的解决(过滤器Filter)

    利用过滤器(filter)解决myeclipse中的乱码问题,包含过滤器源代码,不懂的加Q9402055517。

    java中文过滤器消除乱码问题

    为了有效解决这个问题,开发者通常会使用“中文过滤器”(或者叫做字符编码过滤器)。本篇将详细讲解如何利用这种过滤器来消除Java Web中的乱码问题。 首先,我们需要理解乱码产生的原因。在Java Web应用中,乱码...

    filter过滤器流程及中文乱码解决和客户端IP地址控制

    【filter过滤器流程】 在Java Web开发中,Filter(过滤器)是用于处理HTTP请求和响应的重要组件。它遵循Servlet规范中的Filter接口,允许开发者在请求到达目标Servlet或JSP之前以及响应离开Servlet之后进行拦截和...

    Filter解决中文乱码

    Filter(过滤器)是Servlet规范的一部分,用于在请求处理前后执行一些预处理或后处理任务,解决乱码问题就是其中之一。本篇文章将详细讲解如何使用Filter来解决中文乱码问题,并提供相关源码和配置示例。 首先,...

    JSP用过滤器解决request getParameter中文乱码问题.docx

    解决这个问题的一种常见方法是使用过滤器(Filter)。 过滤器在Servlet容器中扮演着拦截请求和响应的角色,可以在请求到达目标资源(如JSP页面)之前对其进行预处理,包括设置合适的字符编码,以确保中文字符正确...

    用过滤器解决oracle中文乱码问题

    ### 用过滤器解决Oracle中文乱码问题 在开发基于Web的应用程序时,尤其是在使用Java Servlet技术进行开发的过程中,我们经常会遇到从Oracle数据库读取中文数据时出现乱码的情况。这种情况不仅会影响用户体验,还会...

    jsp中文乱码过滤器

    为了解决这个问题,我们可以使用一种叫做“中文乱码过滤器”的工具。本文将深入探讨JSP中文乱码过滤器的工作原理、实现方法以及如何在项目中应用。 **一、乱码问题的来源** 在JSP页面中,如果服务器和客户端的字符...

Global site tag (gtag.js) - Google Analytics