我在论坛上http://blog.csdn.net/yun15291li/archive/2005/05/04/372142.aspx
看到了解决显示中文的文章,可里面的配置filter看不懂,,,不知道如何配置,那位高手教教我如何配置wed.xml

解决方案 »

  1.   

    其实文中的Filter在Tomcat自己带的例子中就有了,你按下面步骤做1 实现一个Filter.设置处理字符集为GBK。
      在tomcat的webapps/servlet-examples目录有一个完整的例子。
      请参考web.xml和SetCharacterEncodingFilter的配置。  1)只要把%TOMCAT安装目录
        webapps\servlets-examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.class
        文件拷到你的webapp目录/filters下,如果没有filters目录,就创建一个。
      2)在你的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>
      3)完成.2.get方式的解决办法
      1)打开tomcat的server.xml文件,找到Connector区块,加入如下一行:
        URIEncoding=”GBK”
        完整的应如下:
        <Connector port="80"  maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                   enableLookups="false" redirectPort="8443" acceptCount="100"
                   debug="0" connectionTimeout="20000" disableUploadTimeout="true"
                   URIEncoding="GBK"/>  2)重启tomcat,一切OK。
      

  2.   

    我用的是sunone服务器,没有server.xml文件怎么办?
      

  3.   

    你直接在jsp页面设置中文编码方式不行吗?比如:<%@ page contentType="text/html; charset=gbk" language="java" import="java.sql.*" %>或<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" %>或<%@ page contentType="text/html; charset=GB18030" language="java" import="java.sql.*" %>
      

  4.   

    请问楼上的,你说的在wed.xml里配置Fileter  要怎么配置?
      

  5.   

    看web.xml的DTD。你就知道怎么配了。
      

  6.   

    其实解决 JAVA 程序中的汉字编码问题的方法往往很简单,但理解其背后的原因,定位问题,还需要了解现有的汉字编码和编码转换。相信这样的东西大家都见过了
    new String(request.getParameter("test").getBytes("iso-8859-1"),"GBK")
    但这样的代码相信不是一个解决的办法,这样会增加程序的复杂度,写数据库,提交表单,URL中传中文参数,到处都是中文问题!作为一个连走路都要算计最短距离的懒人,当然不愿天天叨念着new String(request.getParameter("test").getBytes("iso-8859-1"),"GBK"),然汉战战兢兢的处理各种字符转换的问题,我跋山涉水,翻山越岭,终于找到了完美的解决方式,在TOMCAT中只需要简单的配置,引入2个文件就可以轻松搞定。
    前提条件,每个页面使用
    <%@ page contentType="text/html; charset=GBK" language="java" import="java.sql.*" errorPage="" %>
    <meta http-equiv="Content-Type" content="text/html; charset=GBK">
    步骤1:添加过滤器
    在TOMCAT中找到这2个文件RequestDumperFilter.java,SetCharacterEncodingFilter.java,他们位于D:\Tomcat5.0.27\webapps\jsp-examples\WEB-INF\classes\filters,加到你的工程文件里去,编译他们。
    步骤2:配置WEB.XML
    在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>
    ……
    这样你就不用写那些麻烦的转换代码了,当然这样还不足以解决问题。
    步骤3:修改server.xml
    在server.xml修改2个地方
    <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='GBK'/>
    <Connector className="org.apache.coyote.tomcat5.CoyoteConnector" port="8009" minProcessors="5" maxProcessors="75" enableLookups="true" redirectPort="8443"
    acceptCount="10" debug="0" connectionTimeout="0" useURIValidationHack="false" protocol="AJP/1.3" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" 
    URIEncoding='GBK'/>
      

  7.   

    我用的是SunOne服务器,难道在SunOne下就没有好的解决办法?
      

  8.   

    那就使用utf8,所有文字格式的显示都能解决
      

  9.   

    能说一下utf8具体怎么用吗?
      

  10.   

    1.把java,jsp文件等的存储格式都设置为utf8(可以通过设置eclipse中编码格式实现)
    2.使用request之前,设置request.setCharacterEncoding("UTF-8");
    3.在jsp页面的页首<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    4.需要使用?来进行doget传递的时候,非ansi参数要用URLEncoder.encode(strParameter, "UTF-8")