`

使用Tomcat 5.5在输入中文条件进行翻页查询时乱码问题解决

阅读更多

问题描述:应用程序在输入中文条件后进行查询,当进行翻页和导出时,出现乱码并且不能导出数据。

 

问题处理:

      Tomcat服务器在处理请求时,对get和post两种请求方式采取了不同的处理方式,如果是post请求方式(也就是我们提交表单时常用的方式)则我们在web.xml中如果配置了用于处理字符编码的过滤器,此过滤器的行为将会对后续的请求处理产生影响,而如果是get方式(通常情况下是点击链接发送出的请求)过滤器的行为则不会对请求产生影响。

     处理方法是:修改Tomcat服务器目录下%Tomcat%\conf\server.xml,增加一句URIEncoding="GB2312"即可。

 

      原来配置:

 <Connector port="8088" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true"/>

     新配置:

 <Connector port="8088" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GB2312"/>

  重启服务器,乱码问题消失。

 

 

网友总结的POST和GET请求的处理方法:

      表单提交时(post和Get方法),使用request.getParameter方法得到乱码,这是因为tomcat处理提交的参数时默认的是iso-8859-1,表单提交get和post处理乱码问题不同,下面分别说明。

 

(1)POST处理
    对post提交的表单通过编写一个过滤器的方法来解决,过滤器在用户提交的数据被处理之前被调用,可以在这里改变参数的编码方式,过滤器的代码如下:

 

package example.util;

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 {

	protected String encoding = null;

	protected FilterConfig filterConfig = null;

	protected boolean ignore = true;

	public void destroy() {

		this.encoding = null;
		this.filterConfig = null;

	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {

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

	}

	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 String selectEncoding(ServletRequest request) {

		return (this.encoding);

	}

}

 在web.xml中的配置:

<filter>  
     <filter-name>Encoding</filter-name>  
     <filter-class>  example.util.SetCharacterEncodingFilter  </filter-class>  
     <init-param>  
     	<param-name>encoding</param-name>  
    	<param-value>gbk</param-value>  
    	<!--gbk或者gb2312或者utf-8-->  
     </init-param>  
     <init-param>  
     	<param-name>ignore</param-name>  
    	<param-value>true</param-value>  
     </init-param>  
</filter>  

<filter-mapping>  
    <filter-name>Encoding</filter-name>  
    <servlet-name>/*</servlet-name>  
</filter-mapping>
 

(2) Get方法的处理
 tomcat对post和get的处理方法不一样,所以过滤器不能解决get的乱码问题,它需要在其他地方设置。
 打开<tomcat_home>\conf目录下server.xml文件,找到对8080端口进行服务的Connector组件的设置部分,给这个组件添加一个属性:URIEncoding="GBK"。修改后的Connector设置为:

 <Connector port="8088" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GB2312"/>
分享到:
评论
1 楼 xnxqs 2009-12-11  
最好设置成  useBodyEncodingForURI="true" 这样不管是什么语言都会根据你在web.xml设置的过滤方式来进行编码提交了。

相关推荐

    tomcat5.5 免安装版+配置教程

    需要注意的是,Tomcat 5.5已经非常老旧,不再受到官方支持,可能存在安全风险和性能问题。对于新的项目,推荐使用更新的版本,如Tomcat 9.x或更高版本,以获得更好的性能和安全性。同时,JDK 1.5也已过时,建议升级...

    Tomcat5.5中文版

    《Tomcat 5.5 中文版:程序设计与应用详解》 Apache Tomcat是一款开源、免费的Java Servlet容器,广泛应用于Web应用程序的部署和运行。Tomcat 5.5是其历史上的一个重要版本,提供了许多增强的功能和优化,使得它在...

    tomcat5/tomcat5.5安装包

    【标题】"Tomcat5/tomcat5.5安装包" 涵盖了两个不同版本的Apache Tomcat服务器,即Tomcat 5.0和Tomcat 5.5。Tomcat是一个开源的、免费的应用服务器,主要用于部署和运行Java Servlets和JavaServer Pages(JSP)。它...

    tomcat5.5官方版

    《深入理解Tomcat5.5官方版》 Tomcat,作为一个开源且免费的Java Servlet容器,是Apache软件基金会Jakarta项目的重要组成部分。Tomcat5.5版本是其历史上的一个重要里程碑,它为开发者提供了稳定、高效的Java应用...

    tomcat5.5中文手册tomcat5.5中文手册tomcat5.5中文手册tomcat5.5中文手册

    tomcat5.5中文手册tomcat5.5中文手册tomcat5.5中文手册tomcat5.5中文手册tomcat5.5中文手册tomcat5.5中文手册tomcat5.5中文手册tomcat5.5中文手册tomcat5.5中文手册tomcat5.5中文手册tomcat5.5中文手册tomcat5.5中文...

    tomcat5.5集群完整版

    【标题】"Tomcat5.5集群完整版"所涉及的知识点主要集中在如何构建和管理一个基于Tomcat5.5的服务器集群。Tomcat作为Apache软件基金会的一个开源项目,是Java Servlet和JavaServer Pages(JSP)技术的开源Web应用...

    tomcat5.5 admin配置

    Tomcat 5.5是Apache软件基金会的Jakarta...在实践中,你可能会遇到其他问题,如权限问题、端口冲突等,解决这些问题通常需要检查日志文件或查阅官方文档。如果你对任何步骤有疑问,都可以进一步研究或寻求社区支持。

    TOMCAT5.5下载

    2. **更好的性能和稳定性**:在5.5版本中,Tomcat对内存管理、线程处理和连接器进行了优化,提高了整体性能,同时也增强了系统的稳定性。 3. **安全管理**:Tomcat 5.5 引入了更强大的安全管理机制,支持基于角色的...

    tomcat5.5安装版

    Apache Tomcat 5.5 是一个广泛使用的开源Java Servlet容器,特别用于运行JavaServer Pages (JSP) 和Java Servlets。这个"tomcat5.5安装版"包含了所有必要的组件来搭建一个完整的Tomcat服务器环境。以下是关于Tomcat ...

    将tomcat5.5 admin部署到 Tomcat7.0上

    在IT行业中,Tomcat是一个广泛使用的开源Java Servlet容器,它实现了Java EE的Web部分,包括Servlet和JSP规范。在本教程中,我们将探讨如何将Tomcat 5.5的admin应用部署到Tomcat 7.0上。这是一个常见的升级过程,...

    tomcat5.5 解压版

    Tomcat 5.5 是一个历史悠久的开源Java应用服务器,主要用作Servlet和JSP容器。这个解压版意味着你无需进行编译或安装过程,只需下载并解压缩到你的计算机上,就可以直接运行,非常方便。以下是关于Tomcat 5.5的一些...

    Tomcat5.5_admin在Linux下跌安装文件

    例如,输入`tar -zxvf apache-tomcat-5.5.27.tar.gz`,这将在当前目录下创建一个名为`apache-tomcat-5.5.27`的目录。 3. **选择安装位置**:通常,我们不会直接在 `/usr/local` 目录下解压,而是将其移动到合适的...

    Tomcat5.5中文技术手册(真正的)

    《Tomcat5.5中文技术手册》是一份详尽的指南,专为使用Apache Tomcat 5.5版本的开发者和管理员提供。这份手册以中文呈现,方便了中文读者理解和应用Tomcat的相关知识。HTML版的形式使得查阅和学习更加便捷,无需安装...

    tomcat5.5以及tomcatplugin(附详细配置)

    【标题】"Tomcat5.5以及TomcatPlugin(附详细配置)"主要涵盖了两个核心主题:Tomcat 5.5版本的应用服务器以及Tomcat Plugin在Eclipse集成开发环境中的使用,特别是与Lomboz插件的配合。这些知识点对于Java Web开发者...

    tomcat5.5和tomcat6.0解压版

    在这个解压版中,包含了Tomcat的两个不同版本:Tomcat 5.5和Tomcat 6.0。 Tomcat 5.5是在2005年发布的,它是Tomcat的一个重要版本,引入了许多新特性和改进。其中,最重要的是对Servlet 2.4和JSP 2.0规范的支持,这...

    jdk5.5+tomcat5.5 环境配置

    jdk5.5+tomcat5.5 环境配置 jdk5.5+tomcat5.5 环境配置是 Java 开发中常用的服务器配置,下面将详细介绍其配置过程。 一、下载和安装 jdk 和 tomcat 首先,需要下载最新的 jdk 和 tomcat 软件包。目前,最新的 ...

    Apache Tomcat 5.5 安装版

    Apache Tomcat 5.5 安装版

    绿色免安装 tomcat 5.5

    在使用绿色免安装Tomcat 5.5时,首先确保你的计算机上已经安装了Java Runtime Environment (JRE),因为Tomcat运行需要Java环境的支持。JRE是Java程序运行的基础,它包含了执行Java字节码所必需的组件和库。如果没有...

    Tomcat 5.5 中文文档 (html)

    **Tomcat 5.5 中文文档概述** Tomcat 5.5 是一款广泛应用的开源Web服务器和Java Servlet容器,由Apache软件基金会的Tomcat项目开发。它实现了Java Servlet和JavaServer Pages(JSP)规范,是Java EE平台的重要组成...

    Tomcat5.5配置SSL

    如果需要对整个Web应用程序进行SSL验证,还需要在`Tomcat\conf\web.xml`中添加安全约束配置: ```xml &lt;web-resource-name&gt;Protected Area &lt;url-pattern&gt;/* &lt;description&gt;Constrain the user data ...

Global site tag (gtag.js) - Google Analytics