关于Tomcat上请求的编解码问题

简介:

最近翻阅《深入分析 Java Web 技术内幕》(作者:许令波),关于Tomcat上Web请求的编解码问题,少了一个小点,可能影响了部分读者的理解,我特意查证了一下,特总结如下:

1. 请求的PathInfo部分用Tomcat的Connector元素的URIEncoding属性指定的编码来解码。

具体使用可参考:https://tomcat.apache.org/tomcat-8.5-doc/config/http.html


2. 第二先说请求体(POST正文)的解析,Tomcat按下次顺序去获取字符编码:

  1)用户通过类似代码指定:<%request.setCharsetEncoding("utf-8")%>

  2) 请求报文content-type请求头指定的编码。

  3)应用web.xml配置的统一编码(这个目前在Servlet4.0规范中)

  4) 系统默认的ISO8859-1

  

3. 另外就是QueryString部分的解析,默认情况下Tomcat采用与1)相同的URIEncoding来解析QueryString。 但同时Tomcat提供了另一个参数useBodyEncodingForURI。字面意思用报文体编码来解析QueryString。  若该参数为true.则Tomcat采用与2)相同的编码来解析QueryString。


本文转自 anranran 51CTO博客,原文链接:http://blog.51cto.com/guojuanjun/1953674

相关文章
|
11天前
|
应用服务中间件
从零手写实现 tomcat-03-请求和响应的抽象
该文档介绍了 MiniCat 项目,它是一个简单的 HTTP 服务器实现。v1 版本中, MiniCatRequest 对象解析 HTTP 请求,包括方法、URL 和输入流,而 MiniCatResponse 使用输出流处理响应。start 方法使用这些封装后的对象处理网络通信。在 v2 版本,服务器添加了返回静态资源文件的功能,如 HTML,通过解析 URL 并读取对应本地文件内容来响应请求。测试示例展示了如何访问和显示 index.html。
|
5月前
|
JSON 前端开发 Java
图解HTTP请求Tomcat服务器实现前后端交互-2
图解HTTP请求Tomcat服务器实现前后端交互
57 0
|
5月前
|
前端开发 JavaScript Java
图解HTTP请求Tomcat服务器实现前后端交互-1
图解HTTP请求Tomcat服务器实现前后端交互
107 0
|
11月前
|
前端开发 Java 应用服务中间件
TOMCAT 源码分析 -- 一次请求
TOMCAT 源码分析 -- 一次请求
68 0
|
12月前
|
应用服务中间件
Tomcat - 源码分析Tomcat是如何处理一个Servlet请求的
Tomcat - 源码分析Tomcat是如何处理一个Servlet请求的
61 0
|
Java 应用服务中间件 容器
Tomcat原理系列之三:对请求的过程详细分析
Tomcat原理系列之三:对请求的过程详细分析
Tomcat原理系列之三:对请求的过程详细分析
|
应用服务中间件
Tomcat请求特殊字符参数问题:Invalid character found in the request target. The valid characters are defined in
Tomcat请求特殊字符参数问题:Invalid character found in the request target. The valid characters are defined in
599 0
Tomcat请求特殊字符参数问题:Invalid character found in the request target. The valid characters are defined in
|
SQL 应用服务中间件
Tomcat 无法及时响应,http请求一直pending状态
Tomcat 无法及时响应,http请求一直pending状态
600 0
Tomcat 无法及时响应,http请求一直pending状态
|
应用服务中间件
解决Tomcat8及Tomcat7下http的post、get请求中参数中文乱码问题
解决Tomcat8及Tomcat7下http的post、get请求中参数中文乱码问题
225 0
|
druid Java 应用服务中间件
多次请求后tomcat网页无法响应请求,假死【控制台始终可以正常响应】
多次请求后tomcat网页无法响应请求,假死【控制台始终可以正常响应】
363 0
多次请求后tomcat网页无法响应请求,假死【控制台始终可以正常响应】