日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

ApacheTomcat解析请求参数的过程

發布時間:2025/7/25 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ApacheTomcat解析请求参数的过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  今天幫小伙伴解決了一個請求參數亂碼問題,大概花費2個小時吧,要不是前段時間自己稍微花時間看了看spring mvc框架的源碼,估計今天要花好長時間解決這個問題了。起先我讓小伙伴試試利用tomcat源碼來進行調試一下,小伙伴感覺有些吃力,就交給我幫忙解決一下,還好幫他搞定了這個問題。

  tomcat的參數解析涉及到如下幾個類:

  org.apache.coyote.Request

  低級別類,用于包裝socket的請求了。

  org.apache.tomcat.util.http.Parameters

  集中存放解析的參數,post請求參數個get請求的參數

  org.apache.catalina.connector.RequestFacade

  請求門面,包裝請求,是請求的實現類,但其實是誰的門面呢?是coyoteRequest,

  springmvc框架會調用request的getParameterValues方法,而這個方法又調用實際的coyoteRequest的getParameterValues方法,這個方法會首先判斷以前是否已經解析過參數了,如果沒有解析參數,那么就發生第一次解析參數的操作。

  調用parseParameters方法解析所有的參數,包括url的參數,這個函數里面,會調用Rquest類的getParameters方法,你敢相信,每當來一個請求,就創建一個Request對象,我們的參數就預先創建放到Request對象里面了。

  獲得Parameters對象,則要解析url里面的參數,還要解析請求體里面的參數。一個參數一個參數地解析,每解析一個就存放到paramHashValues對象里面。這個對象是個HashMap對象。

  小伙伴出現亂碼的原因就是Filter放置的順序有些問題,設置編碼的Filter應該放置在第一個位置,首先進行配置編碼,而小伙伴的這個Filter放在了一個XSS處理的Filter的后面,可想而知,XSS提前進行了參數解析,沒有使用UTF-8編碼,然后緩存了起來,后續設置編碼的Filter沒有起到任何作用,從而發生了亂碼問題。

  網絡程序真是io密集型的啊,解析參數并非簡簡單單,基本上就是從socket里面取數據,都是一個字節一個字節的解析的。具體的參數格式啥的,我們就不深究了,感覺沒有必要啊,到時候有時間再進行集中式的回顧學習,加深對java web程序的理解和掌握。

  感覺針對我們開發常用的開發框架,還是要稍微了解點源碼,否則,面對陌生的源碼環境,感覺未必能在非常短的時間內解決問題啊。

?

轉載于:https://www.cnblogs.com/weiguangyue/p/9374512.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的ApacheTomcat解析请求参数的过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。