解決springmvc項目中使用過濾器來解決請求方式為post時出現(xiàn)亂碼的問題
在spring項目中,當(dāng)請求方式為post時,可能在獲取數(shù)據(jù)之后會有亂碼的情況,其中一種解決方法就是在拿到請求參數(shù)之前設(shè)置編碼格式為utf-8,如下
request.setCharacterEncoding("utf-8"); String strId = request.getParameter("id"); String strName = request.getParameter("name"); String strSex = request.getParameter("sex");
但是當(dāng)有多個處理器方法的時候每個方法中都要設(shè)置編碼格式就顯得過于繁瑣,所以推薦第二種解決方案:使用過濾器只要在web.xml中對過濾器進行聲明注冊就可以了
<!--注冊聲明過濾器--> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <!--指定項目的編碼格式--> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> <!--強制請求對象的編碼格式 使用字符集encoding--> <init-param> <param-name>forceRequestEncoding</param-name> <param-value>true</param-value> </init-param> <!--強制響應(yīng)對象使用encoding的字符集編碼--> <init-param> <param-name>forceResponseEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <!--強制所有請求先通過過濾器處理--> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
另外,我們可以看一下CharacterEncodingFilter的實現(xiàn)方法的實現(xiàn)就知道為什么要設(shè)置后邊的encoding,forceRequestEncoding,forceResponseEncoding這三個參數(shù)了,因為這三個參數(shù)是這個方法中的是三個私有屬性
public class CharacterEncodingFilter extends OncePerRequestFilter { @Nullable private String encoding; private boolean forceRequestEncoding; private boolean forceResponseEncoding; public CharacterEncodingFilter() { this.forceRequestEncoding = false; this.forceResponseEncoding = false; } public CharacterEncodingFilter(String encoding) { this(encoding, false); } public CharacterEncodingFilter(String encoding, boolean forceEncoding) { this(encoding, forceEncoding, forceEncoding); } public CharacterEncodingFilter(String encoding, boolean forceRequestEncoding, boolean forceResponseEncoding) { this.forceRequestEncoding = false; this.forceResponseEncoding = false; Assert.hasLength(encoding, "Encoding must not be empty"); this.encoding = encoding; this.forceRequestEncoding = forceRequestEncoding; this.forceResponseEncoding = forceResponseEncoding; }
總結(jié)
到此這篇關(guān)于springmvc項目中使用過濾器來解決請求方式為post時出現(xiàn)亂碼的問題的文章就介紹到這了,更多相關(guān)springmvc post請求亂碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java線程中sleep和wait的區(qū)別詳細(xì)介紹
Java中的多線程是一種搶占式的機制,而不是分時機制。搶占式的機制是有多個線程處于可運行狀態(tài),但是只有一個線程在運行2012-11-11Java Spring的數(shù)據(jù)庫開發(fā)詳解
這篇文章主要介紹了Spring的數(shù)據(jù)庫開發(fā),主要圍繞SpringJDBC和Spring Jdbc Template兩個技術(shù)來講解,文中有詳細(xì)的代碼示例,需要的小伙伴可以參考一下2023-04-04詳解springMVC兩種方式實現(xiàn)多文件上傳及效率比較
本篇文章介紹了springMVC兩種方式實現(xiàn)多文件上傳及效率比較。springMVC實現(xiàn)多文件上傳有兩種,一種是字節(jié)流的方式進行文件上傳,另外一種是使用springMVC包裝好的解析器進行上傳,有興趣的可以了解一下。2016-12-12