使用過濾器(Filter)解決亂碼問題

2021-08-07 09:27:52 字數 2277 閱讀 8456

1.第一種用法:

使用xml配置檔案

//配置檔案,在web.xml中寫入如下**

myfilterconfig

com.zzz.myfilterconfig

encoding

utf-8

//在servlet中寫入如下**

request.setcharacterencoding(this.getservletcontext().getinitparameter("charset"));

2.第二種用法

直接在servlet中寫入

request.setcharacterencoding("utf-8");

分析:第一種用法的好處是,後期如果要修改編碼方式,可以直接修改xml配置檔案即可,不需要修改其他**。

但以上兩種用法都只能解決post提交方式亂碼問題,如果是get方式需進行如下方式解決。

string name = request.getparameter("name");

name= new string(name.getbytes("iso-8859-1"),"utf-8");

分析:上述方式雖然也能解決亂碼問題,但需要針對不同的提交方式使用不同的解決方法。

思路:使用乙個過濾器,在請求到達servlet之前,先對request物件設定編碼

要求所有的請求都要進行設定編碼,因此所有的request都要攔截,具體操作方法如下:

encodingfilter

com.yyy.product.web.filter.encodingfilter

/*//表示對所有請求都進行過濾

public class encodingfilter implements filter 

@override

public void dofilter(servletrequest request, servletresponse response,

filterchain chain) throws ioexception, servletexception

@override

public void init(filterconfig filterconfig) throws servletexception

}

// 自定義request物件

// 對需要增強方法 進行覆蓋

@override

public mapgetparametermap() catch (unsupportedencodingexception e)

} else if (method.equalsignorecase("get")) catch (unsupportedencodingexception e) }}

}hasencode = true;

}return parametermap;

} return super.getparametermap();

} @override

public string getparameter(string name)

return values[0]; // 取回引數的第乙個值

} @override

public string getparametervalues(string name)

}

雖然方式二能很好的解決get和post方式提交的表單,但對於屬性enctype="multipart/form-data"這一種表單會存在以下問題:

偶然一次使用中發現,使用fileitem.getname()方法不會出現亂碼,但使用fileitem.getstring()方法獲取普通表單的中文內容時依然會存在亂碼問題

解決方法:

if("category".equals(fileitem.getfieldname()))
或者

if("name".equals(fileitem.getfieldname()))

使用過濾器

過濾器在資料從作用域傳遞到指令上時進行轉換,但並不改變源資料,這允許在檢視中顯示時能夠靈活地格式化或者轉換資料。angularjs具有兩種型別的內建過濾器 一類是對單個資料進行操作的,另一類是對資料集合進行操作的。用於單個資料的內建過濾器 currency 對貨幣值進行格式化,在過濾器名之後新增冒號...

使用過濾器消除中文亂碼

有時候我們在處理網頁中輸入中文的時候常常會發生中文亂碼的問題,我們可以通過處理請求的類加上以下 解決這個問題 servletrequest.setcharacterencoding utf 8 servletresponse.setcharacterencoding utf 8 servletres...

wepy 使用filter過濾器

作為過濾器,filter的好處不言而喻,使用過vue的雄蝶內心樂開了花 那麼在wepy中,遇到需要計算的資料,要如何使用filter去處理呢 檔名稱 位置自己看著來,當然能夠一目了然最好 而內容就和vue中的filter有什麼區別呢 區別不大 vue是使用export把函式暴露出去的,wepy我是使...