Tomcat 7源码学习笔记

本文深入探讨了Tomcat中GET和POST请求的字符编码配置方法,包括如何通过server.xml及servlet配置实现不同场景下的编码控制。

接触tomcat7一段时间了,但对这个http请求的字符编码耿耿于怀,网上很多的文章只写皮毛,而且也忽视Tomcat版本,我发现这篇文章从源码角度分析的比较彻底,拿来收藏,望对各位有用.

转载自:http://www.17jquery.com/java/48506/

 

 

原文:

一.概述

Tomcat对http请求的字符编码支持得有些混乱,使用起来动不动就发生乱码的情况。通过窥探tomcat的源码,对http request的字符编码这块的处理机制作一个总结。

内容来自17jquery

tomcat内部对于http request,有两种字符编码的配置:

 

1. 对应get方式的http请求的字符编码

 

2. 对应post方式的http请求的字符编码 内容来自17jquery

二.get方式的字符编码 内容来自17jquery

第一种情况:get和post的编码保持一致,post方式的编码是什么,get方式的编码就是什么。

 

server.xml中进行如下配置的话,get方式的字符编码和post方式的字符编码保持一致。 内容来自17jquery

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"useBodyEncodingForURI="true"/>

 

第二种情况:不指定useBodyEncodingForURI或者useBodyEncodingForURI="false"。

这时get和post的字符编码各自设置,互相没有关系。配置方法如下:

通过server.xml文件的URIEncoding进行设置,如果没有配置URIEncoding,那么用缺省的ISO-8859-1。一起jquery,17jquery

17jquery.com

<Connector port="8080" maxThreads="150" minSpareThreads="25"
maxSpareThreads="75" enableLookups="false" redirectPort="8443"
acceptCount="100" debug="99" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="UTF-8"/>

三.post方式的字符编码

一起jquery,17jquery

1. 如果在servlet的doPost方法中或者filter中设置了request的字符编码,那么就以设置的为准。

public void doPost(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException{

//必须在getParameter,getParameterNames,getParameterValues方法调用之前进行设置17jquery.com

request.setContentType("UTF-8"); 内容来自17jquery

} jquery.com

web.xml中配置filter 17jquery.com

<filter>
<filter-name>SetCharacterEncoding</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter> 一起jquery,17jquery

2. 如果没有进行1.的配置,那么从http header中取出content-type,然后从content-type的值中取出charset的值,

 

用charset的值作为post的字符编码。

如:content-type=application/x-www-form-urlencoded;charset=utf-8

那么,post的字符编码就是utf-8。

如果从http header中没有取到content-type或者charset,那么,就使用缺省的ISO-8859-1。

内容概要:本文档是一份关于交换路由配置的学习笔记,系统地介绍了网络设备的远程管理、交换机与路由器的核心配置技术。内容涵盖Telnet、SSH、Console三种远程控制方式的配置方法;详细讲解了VLAN划分原理及Access、Trunk、Hybrid端口的工作机制,以及端口镜像、端口汇聚、端口隔离等交换技术;深入解析了STP、MSTP、RSTP生成树协议的作用与配置步骤;在路由部分,涵盖了IP地址配置、DHCP服务部署(接口池与全局池)、NAT转换(静态与动态)、静态路由、RIP与OSPF动态路由协议的配置,并介绍了策略路由和ACL访问控制列表的应用;最后简要说明了华为防火墙的安全区域划分与基本安全策略配置。; 适合人群:具备一定网络基础知识,从事网络工程、运维或相关技术岗位1-3年的技术人员,以及准备参加HCIA/CCNA等认证考试的学习者。; 使用场景及目标:①掌握企业网络中常见的交换与路由配置技能,提升实际操作能力;②理解VLAN、STP、OSPF、NAT、ACL等核心技术原理并能独立完成中小型网络搭建与调试;③通过命令示例熟悉华为设备CLI配置逻辑,为项目实施和故障排查提供参考。; 阅读建议:此笔记以实用配置为主,建议结合模拟器(如eNSP或Packet Tracer)动手实践每一条命令,对照拓扑理解数据流向,重点关注VLAN间通信、路由选择机制、安全策略控制等关键环节,并注意不同设备型号间的命令差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值