解決springmvc項目中使用過濾器來解決請求方式為post時出現(xiàn)亂碼的問題
在spring項目中,當請求方式為post時,可能在獲取數(shù)據(jù)之后會有亂碼的情況,其中一種解決方法就是在拿到請求參數(shù)之前設置編碼格式為utf-8,如下
request.setCharacterEncoding("utf-8");
String strId = request.getParameter("id");
String strName = request.getParameter("name");
String strSex = request.getParameter("sex");
但是當有多個處理器方法的時候每個方法中都要設置編碼格式就顯得過于繁瑣,所以推薦第二種解決方案:使用過濾器只要在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> <!--強制響應對象使用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)就知道為什么要設置后邊的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;
}
總結
到此這篇關于springmvc項目中使用過濾器來解決請求方式為post時出現(xiàn)亂碼的問題的文章就介紹到這了,更多相關springmvc post請求亂碼內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java Spring的數(shù)據(jù)庫開發(fā)詳解
這篇文章主要介紹了Spring的數(shù)據(jù)庫開發(fā),主要圍繞SpringJDBC和Spring Jdbc Template兩個技術來講解,文中有詳細的代碼示例,需要的小伙伴可以參考一下2023-04-04
詳解springMVC兩種方式實現(xiàn)多文件上傳及效率比較
本篇文章介紹了springMVC兩種方式實現(xiàn)多文件上傳及效率比較。springMVC實現(xiàn)多文件上傳有兩種,一種是字節(jié)流的方式進行文件上傳,另外一種是使用springMVC包裝好的解析器進行上傳,有興趣的可以了解一下。2016-12-12

