问题描述:应用程序在输入中文条件后进行查询,当进行翻页和导出时,出现乱码并且不能导出数据。
问题处理:
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"/>
分享到:
相关推荐
需要注意的是,Tomcat 5.5已经非常老旧,不再受到官方支持,可能存在安全风险和性能问题。对于新的项目,推荐使用更新的版本,如Tomcat 9.x或更高版本,以获得更好的性能和安全性。同时,JDK 1.5也已过时,建议升级...
《Tomcat 5.5 中文版:程序设计与应用详解》 Apache Tomcat是一款开源、免费的Java Servlet容器,广泛应用于Web应用程序的部署和运行。Tomcat 5.5是其历史上的一个重要版本,提供了许多增强的功能和优化,使得它在...
【标题】"Tomcat5/tomcat5.5安装包" 涵盖了两个不同版本的Apache Tomcat服务器,即Tomcat 5.0和Tomcat 5.5。Tomcat是一个开源的、免费的应用服务器,主要用于部署和运行Java Servlets和JavaServer Pages(JSP)。它...
《深入理解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的服务器集群。Tomcat作为Apache软件基金会的一个开源项目,是Java Servlet和JavaServer Pages(JSP)技术的开源Web应用...
Tomcat 5.5是Apache软件基金会的Jakarta...在实践中,你可能会遇到其他问题,如权限问题、端口冲突等,解决这些问题通常需要检查日志文件或查阅官方文档。如果你对任何步骤有疑问,都可以进一步研究或寻求社区支持。
2. **更好的性能和稳定性**:在5.5版本中,Tomcat对内存管理、线程处理和连接器进行了优化,提高了整体性能,同时也增强了系统的稳定性。 3. **安全管理**:Tomcat 5.5 引入了更强大的安全管理机制,支持基于角色的...
Apache Tomcat 5.5 是一个广泛使用的开源Java Servlet容器,特别用于运行JavaServer Pages (JSP) 和Java Servlets。这个"tomcat5.5安装版"包含了所有必要的组件来搭建一个完整的Tomcat服务器环境。以下是关于Tomcat ...
在IT行业中,Tomcat是一个广泛使用的开源Java Servlet容器,它实现了Java EE的Web部分,包括Servlet和JSP规范。在本教程中,我们将探讨如何将Tomcat 5.5的admin应用部署到Tomcat 7.0上。这是一个常见的升级过程,...
Tomcat 5.5 是一个历史悠久的开源Java应用服务器,主要用作Servlet和JSP容器。这个解压版意味着你无需进行编译或安装过程,只需下载并解压缩到你的计算机上,就可以直接运行,非常方便。以下是关于Tomcat 5.5的一些...
例如,输入`tar -zxvf apache-tomcat-5.5.27.tar.gz`,这将在当前目录下创建一个名为`apache-tomcat-5.5.27`的目录。 3. **选择安装位置**:通常,我们不会直接在 `/usr/local` 目录下解压,而是将其移动到合适的...
《Tomcat5.5中文技术手册》是一份详尽的指南,专为使用Apache Tomcat 5.5版本的开发者和管理员提供。这份手册以中文呈现,方便了中文读者理解和应用Tomcat的相关知识。HTML版的形式使得查阅和学习更加便捷,无需安装...
【标题】"Tomcat5.5以及TomcatPlugin(附详细配置)"主要涵盖了两个核心主题:Tomcat 5.5版本的应用服务器以及Tomcat Plugin在Eclipse集成开发环境中的使用,特别是与Lomboz插件的配合。这些知识点对于Java Web开发者...
在这个解压版中,包含了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 环境配置是 Java 开发中常用的服务器配置,下面将详细介绍其配置过程。 一、下载和安装 jdk 和 tomcat 首先,需要下载最新的 jdk 和 tomcat 软件包。目前,最新的 ...
Apache Tomcat 5.5 安装版
在使用绿色免安装Tomcat 5.5时,首先确保你的计算机上已经安装了Java Runtime Environment (JRE),因为Tomcat运行需要Java环境的支持。JRE是Java程序运行的基础,它包含了执行Java字节码所必需的组件和库。如果没有...
**Tomcat 5.5 中文文档概述** Tomcat 5.5 是一款广泛应用的开源Web服务器和Java Servlet容器,由Apache软件基金会的Tomcat项目开发。它实现了Java Servlet和JavaServer Pages(JSP)规范,是Java EE平台的重要组成...
如果需要对整个Web应用程序进行SSL验证,还需要在`Tomcat\conf\web.xml`中添加安全约束配置: ```xml <web-resource-name>Protected Area <url-pattern>/* <description>Constrain the user data ...