apache+tomcat整合后的编码问题
apache+tomcat整合提供webserver服务的方式是为了实现两个目的:一是方便利用apache http server将客户请求均衡的分给tomcat1,tomcat2....去处理,即负载均衡;二是由于tomcat的html和图片解析功能相对其他服务器如apche等较弱,所以,一般都是集成起来使用,只有jsp和servlet服务交由tomcat处理,而静态的内容,都是由apache来完成。
利用apache的mod_jk模块和tomcat的ajp协议,我们在应用中实现了这一整合,但在测试过程中发现,包含汉字的url(比如用户上传的中文文件名的图片或者文件)不能通过apache被访问,返回404错误,本来以为是apache的编码问题,由于以前在linux上配置apache经常会发生这个问题,所以一直围绕apache的httpd.conf中的language和charset配置作文章,半天未果,郁闷!!!
后来忽然想到,一直以来直接通过IP和端口访问tomcat是正常的,那么问题或者发生在apache和tomcat之间,于是思路豁然开朗。打开tomcat的配置文件server.xml,发现配置如下: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/> 这里,对8080端口(HTTP)的访问指定了URI编码采用UTF-8,而8009端口(AJP)却未指定编码。既然未指定,tomcat缺省会使用ISO-8859-1编码,难怪汉字全成了乱码!!!操作系统接收到乱码的路径无法定位,服务器只好给出一个资源路径不能访问的404错误。于是立即给ajp端口也加上URIEncoding="UTF-8",变成: <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/>
重启tomcat,一切正常,天下大定。
总结一: 包含汉字的url编码问题一直以来都是最让人头疼的,尤其是多系统整合时经常会出现乱码问题。因此,保持汉字编码在各个子系统或子模块中的一致性尤其重要。对于非国人编制的系统,其默认配置中的编码往往忽略了这个问题。
总结二: IE的默认设置中,URL采用UTF-8编码格式提交,apache2.2以后的windows版本默认的url解码也是utf-8,当apache2.2将请求通过ajp传递给tomcat时,必须保证tomcat在该端口也使用utf-8编解码,否则就会乱码。
apache+tomcat整合后的编码问题的更多相关文章
- Apache Tomcat 整合
Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.Apache+Tomcat整合是什么: 1.Apache默认访问端口是80,Tomcat默认访问端口是8080 ...
- apache+tomcat整合
一 .Apache与Tomcat的比较 apache支持静态页面,tomcat支持动态的,比如servlet等. 一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是 ...
- ubuntu 下 apache+tomcat整合_(mod-jk方法)[转]
整合的平台是Centos5环境如下: apache源代码包: httpd-2.2.11.tar.gz 下载地址http://labs.xiaonei.com/apache-mirror/httpd/ ...
- windows中apache+tomcat整合,使php和java项目能够独立运行
一.下载和安装 1.安装php 网上有安装教程,不再赘述 2.安装apache 比如安装目录为e:\apache; 项目根目录为e:\www; 网上有安装教程,不再赘述 3.安装jdk 不再 ...
- centos7下apache+tomcat整合
前提 在系统中已经安装好了jdk.tomcat.apache #本人博客中jdk安装连接 http://www.cnblogs.com/xhkj/p/6545111.html #本人博客中tomcat ...
- Apache+tomcat的整合
http://blog.csdn.net/stefyue/article/details/6918542 为什么要做这个整合呢?当然,首先想到是就是Apache和Tomcat的区别.正因为有区别,有各 ...
- Apache+tomcat的整合 分类: C_OHTERS 2014-05-07 15:08 293人阅读 评论(0) 收藏
http://blog.csdn.net/stefyue/article/details/6918542 为什么要做这个整合呢?当然,首先想到是就是Apache和Tomcat的区别.正因为有区别,有各 ...
- Apache HTTP Server与Tomcat整合学习记录
Apache HTTP Server与Tomcat整合 个人环境:Windows10,JDK8,Tomcat8.5,Apache2.4,JK模块1.2.4 前言 其实网上有很多教程,但问题是得每次 ...
- Apache与Tomcat整合
Apache与Tomcat整合 一 Apache与Tomcat比较联系 apache支持静态页,tomcat支持动态的,比如servlet等. 一般使用apache+tomcat的话,apache ...
随机推荐
- R 报错:package ‘***’ is not available (for R version ****) 的解决方案
R 安装sparklyr,ggplot2等包出现如下warning package '****' is not available (for R version 3.0.2) 系统环境 ubuntu1 ...
- mysql输入密码后闪退怎么办?
第一: 首先需要想到的是mysql的服务可能没开,首先打开mysql的服务 第二: 打开Mysql的命令行输入密码即可 第三: 登录成功 第四: 顺便验证自己安装的mysql是否成功 输入显示所有数据 ...
- Leetcode 7 Reverse Integer 数论
题意:将整数倒置,该题简单但是需要注意数据的范围,难得的好题. 如果出现1000000003或者-2000000003,倒置后的数超过int的范围,因此返回0,出现这种情况可以使用long long, ...
- 《软件性能测试与LoadRunner实战教程》新书上市
作者前三本书<软件性能测试与LoadRunner实战>.<精通软件性能测试与LoadRunner实战>和<精通软件性能测试与LoadRunner最佳实战>面市后,受 ...
- 高端PCB设计相关知识整理
PCB的设计布局布线实际上是一门很复杂而且大部分靠经验来做的学问,很多东西也有点玄乎,但有很多经验性的结论和公式还是可以参考的 保证原创,一天不一定写的完 CH.1 更加严重的电磁干扰 首先基本上微电 ...
- SQL Developer 4.0 启动报错“unable to create an instance of the java virtual machine located at path”
安装了Oracle之后,第一件事情就是想想怎么去连接,进而操作.SQL Developer是官方提供的强大工具,个人看来也是第一选择. 目前官网提供的最新版是4.0.1.14.48,下载下来之后,就跃 ...
- DRAM 内存介绍(二)
参考资料:http://www.anandtech.com/show/3851/everything-you-always-wanted-to-know-about-sdram-memory-but- ...
- Scala 具体的并行集合库【翻译】
原文地址 本文内容 并行数组(Parallel Array) 并行向量(Parallel Vector) 并行范围(Parallel Range) 并行哈希表(Parallel Hash Tables ...
- THinkphp开启静态(动态)缓存的用法
<?php return array( //开启静态缓存 'HTML_CACHE_ON' => true, 'HTML_CACHE_RULES' => array( 'News:in ...
- Django 源码小剖: Django ORM 查询管理器
ORM 查询管理器 对于 ORM 定义: 对象关系映射, Object Relational Mapping, ORM, 是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换.从 ...