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整合后的编码问题的更多相关文章

  1. Apache Tomcat 整合

    Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.Apache+Tomcat整合是什么: 1.Apache默认访问端口是80,Tomcat默认访问端口是8080 ...

  2. apache+tomcat整合

    一 .Apache与Tomcat的比较 apache支持静态页面,tomcat支持动态的,比如servlet等. 一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是 ...

  3. ubuntu 下 apache+tomcat整合_(mod-jk方法)[转]

    整合的平台是Centos5环境如下: apache源代码包: httpd-2.2.11.tar.gz  下载地址http://labs.xiaonei.com/apache-mirror/httpd/ ...

  4. windows中apache+tomcat整合,使php和java项目能够独立运行

    一.下载和安装 1.安装php  网上有安装教程,不再赘述 2.安装apache 比如安装目录为e:\apache;  项目根目录为e:\www;   网上有安装教程,不再赘述 3.安装jdk  不再 ...

  5. centos7下apache+tomcat整合

    前提 在系统中已经安装好了jdk.tomcat.apache #本人博客中jdk安装连接 http://www.cnblogs.com/xhkj/p/6545111.html #本人博客中tomcat ...

  6. Apache+tomcat的整合

    http://blog.csdn.net/stefyue/article/details/6918542 为什么要做这个整合呢?当然,首先想到是就是Apache和Tomcat的区别.正因为有区别,有各 ...

  7. Apache+tomcat的整合 分类: C_OHTERS 2014-05-07 15:08 293人阅读 评论(0) 收藏

    http://blog.csdn.net/stefyue/article/details/6918542 为什么要做这个整合呢?当然,首先想到是就是Apache和Tomcat的区别.正因为有区别,有各 ...

  8. Apache HTTP Server与Tomcat整合学习记录

    Apache HTTP Server与Tomcat整合 个人环境:Windows10,JDK8,Tomcat8.5,Apache2.4,JK模块1.2.4 前言 ​ 其实网上有很多教程,但问题是得每次 ...

  9. Apache与Tomcat整合

    Apache与Tomcat整合   一 Apache与Tomcat比较联系 apache支持静态页,tomcat支持动态的,比如servlet等. 一般使用apache+tomcat的话,apache ...

随机推荐

  1. paip.取当天记录的方法sql跟hql hibernate

    paip.取当天记录的方法sql跟hql hibernate #------两个方法...函数法和日期计算法.. 函数法: DATEDIFF(d,createTime,GETDATE())=0   / ...

  2. linux nc (NetCat) 命令详解

    原文:http://www.huanxiangwu.com/477/linux-nc-netcat 一.版本通常的Linux发行版中都带有NetCat(简称nc),甚至在拯救模式光盘中也由busybo ...

  3. tomcat文件服务配置

    <Host name="localhost"  appBase=""           unpackWARs="true" auto ...

  4. iOS crash 异常捕获

    // //  UncaughtExceptionHandler.m //  UncaughtExceptions // //  Created by Matt Gallagher on 2010/05 ...

  5. Delphi 2 Unleashed (一) 介绍

    原书作者是作者是 Charles Calvert,国内翻译为<Delphi 2 程序设计大全>,由横空翻译组翻译,机械工业出版社1997年12月出版,看网上评论和介绍,该书是系统学习 De ...

  6. Socket原理与编程基础(转)

    一.Socket简介 Socket是进程通讯的一种方式,即调用这个网络库的一些API函数实现分布在不同主机的相关进程之间的数据交换. 几个定义: (1)IP地址:即依照TCP/IP协议分配给本地主机的 ...

  7. 创建一个Table View

    在本课程中,您将创建应用程序FoodTracker的主屏幕.您将创建第二个,表视图为主场景,列出了用户的菜谱.你会设计定制表格单元格显示每一个菜谱,它是这样的: 学习目标 在课程结束时,你将能够: 创 ...

  8. 利用Mahout实现在Hadoop上运行K-Means算法

    利用Mahout实现在Hadoop上运行K-Means算法 一.介绍Mahout Mahout是Apache下的开源机器学习软件包,目前实现的机器学习算法主要包含有协同过滤/推荐引擎,聚类和分类三个部 ...

  9. 参数传递的四种形式----- URL,超链接,js,form表单

    什么时候用GET,  查,删, 什么时候用POST,增,改  (特列:登陆用Post,因为不能让用户名和密码显示在URL上) 4种get传参方式 <html xmlns="http:/ ...

  10. 更改chrome底色为护目色

    找到chrome目录:C:\Documents and Settings\用户名\Local Settings\Application Data\Google\Chrome\User Data\Def ...