摘要:在開發(fā)應用的時候經(jīng)常會遇到令人頭痛的字符編碼問題,期中一個就是客戶端發(fā)送過來的請求的編碼在請求頭里并沒有,開發(fā)人員需要在后端自己選擇合適的來解析過來的參數(shù)。但是這里有個陷阱,整個應用里,這個的攔截順序必須是第一個,否則還是會出現(xiàn)亂碼問題。
在開發(fā)java web應用的時候經(jīng)常會遇到令人頭痛的字符編碼問題,期中一個就是客戶端發(fā)送過來的請求的編碼在請求頭里并沒有,開發(fā)人員需要在后端自己選擇合適的encoding來解析request過來的參數(shù)。
這個問題的解決辦法很簡單,就是寫一個filter來過濾所有請求,然后設置一下request的characterEncoding,比如:
public class CharacterEncodingFilter implements Filter { protected String encoding = "utf-8"; public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding(encoding); chain.doFilter(request, response); } public void init(FilterConfig filterConfig) throws ServletException { String initEncoding = filterConfig.getInitParameter("encoding"); if (Strings.isNotBlank(initEncoding)) { this.encoding = initEncoding; } } public void destroy() { encoding = null; } }
把這個filter在web.xml里配置一下所攔截的url pattern就行了。
但是這里有個陷阱,整個web應用里,這個filter的攔截順序必須是第一個,否則還是會出現(xiàn)亂碼問題。這是因為(至少在tomcat里):
request對象的parameter并不是一開始就解析的,它是等你第一次調(diào)用getParameter*等凡和獲得請求參數(shù)有關的方法的時候才解析的
paramter一旦被解析過一次,那就不會再次被解析
所以如果在CharacterEncodingFilter之前有另外一個filter,而這個filter調(diào)用了getParameter*方法,那么就有可能使用錯誤的encoding來解析,從而造成亂碼問題。
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/76294.html
摘要:在開發(fā)應用的時候經(jīng)常會遇到令人頭痛的字符編碼問題,期中一個就是客戶端發(fā)送過來的請求的編碼在請求頭里并沒有,開發(fā)人員需要在后端自己選擇合適的來解析過來的參數(shù)。但是這里有個陷阱,整個應用里,這個的攔截順序必須是第一個,否則還是會出現(xiàn)亂碼問題。 在開發(fā)java web應用的時候經(jīng)常會遇到令人頭痛的字符編碼問題,期中一個就是客戶端發(fā)送過來的請求的編碼在請求頭里并沒有,開發(fā)人員需要在后端自己選擇...
摘要:在開發(fā)應用的時候經(jīng)常會遇到令人頭痛的字符編碼問題,期中一個就是客戶端發(fā)送過來的請求的編碼在請求頭里并沒有,開發(fā)人員需要在后端自己選擇合適的來解析過來的參數(shù)。但是這里有個陷阱,整個應用里,這個的攔截順序必須是第一個,否則還是會出現(xiàn)亂碼問題。 在開發(fā)java web應用的時候經(jīng)常會遇到令人頭痛的字符編碼問題,期中一個就是客戶端發(fā)送過來的請求的編碼在請求頭里并沒有,開發(fā)人員需要在后端自己選擇...
摘要:在開發(fā)應用的時候經(jīng)常會遇到令人頭痛的字符編碼問題,期中一個就是客戶端發(fā)送過來的請求的編碼在請求頭里并沒有,開發(fā)人員需要在后端自己選擇合適的來解析過來的參數(shù)。但是這里有個陷阱,整個應用里,這個的攔截順序必須是第一個,否則還是會出現(xiàn)亂碼問題。 在開發(fā)java web應用的時候經(jīng)常會遇到令人頭痛的字符編碼問題,期中一個就是客戶端發(fā)送過來的請求的編碼在請求頭里并沒有,開發(fā)人員需要在后端自己選擇...
摘要:第一次寫技術文章,主要內(nèi)容是使用創(chuàng)建一個簡單的項目,如有操作或理解錯誤請務必指出,當謙虛學習。基本思想其實就是一個項目引用別的模塊包,最終項目被打成包發(fā)布。 第一次寫技術文章,主要內(nèi)容是使用maven創(chuàng)建一個簡單的SpringMVC WEB 項目,如有操作或理解錯誤請務必指出,當謙虛學習。做這一次的工作主要是因為想加強一下自己對Spring Web 項目的理解,因為平時都是直接寫業(yè)務代...
閱讀 3014·2021-11-16 11:42
閱讀 3651·2021-09-08 09:36
閱讀 950·2019-08-30 12:52
閱讀 2481·2019-08-29 14:12
閱讀 769·2019-08-29 13:53
閱讀 3583·2019-08-29 12:16
閱讀 644·2019-08-29 12:12
閱讀 2469·2019-08-29 11:16