代碼頁過濾
⑴ 編碼過濾器可以統一java工程中的編碼,但是他是怎麼實現的呢
原理:
當在 web.xml 中注冊了一個 Filter 來對某個 Servlet 程序進行攔截處理時,這個 Filter 就成了 Servlet 容器與該
Servlet 程序的通信線路上的一道關卡,該 Filter 可以對 Servlet 容器發送給 Servlet 程序的請求和 Servlet 程序回送給
Servlet 容器相應進行攔截,可以決定是否將請求繼續傳遞給 Servlet 程序,以及對請求和相應信息是否進行修改。
在一個 web 應用程序中可以注冊多個 Filter 程序,每個 Filter 程序都可以對一個或一組 Servlet 程序進行攔截。
若有多個 Filter 程序對某個 Servlet 程序的訪問過程進行攔截,當針對該 Servlet 的訪問請求到達時,web 容器將把多個 Filter 程序組合成一個 Filter 鏈(過濾器鏈)。Filter 鏈中各個 Filter 的攔截順序與它們在應用程序的 web.xml 中映射的順序一致。
實現步驟:
首先編寫Filter的實現類程序。
其次,需要把實現的Filter添加到Web應用程序中,也就是說,需要在Web部署描述文件Web.xml中聲明該Filter。
最後,將相關聯的Filter與應用程序一起打包並部署。
⑵ 編碼過濾器EncodingFilter.java類
你的FILTER實現的不對
⑶ 怎樣過濾字元串中包含的base64編碼
using System;
using System.Text.RegularExpressions;
Regex re = new Regex(@"filename=""(?<filename>[^""]+)""\s+(?<base64>.*)\s+-+=+", RegexOptions.Singleline | RegexOptions.IgnoreCase);
Match m = re.Match(str);
if (m.Success)
{
Console.WriteLine(m.Groups["filename"].Value);
Console.WriteLine(m.Groups["base64"].Value);
}
⑷ struts2編碼過濾器能過濾el表達式的嗎
創建過濾器,web.xml里配置過濾所有請求,過濾器了不是request和response的字元設為utf-8,轉入下一個資源。抱歉沒有相關代碼,別人的電腦。亂碼處理不難,過濾器會就好了
⑸ lt;求助>EnCodeFilter這個編碼過濾器的原理
要實現過濾器,必須實現javax.servlet.Filter介面 並重寫doFilter方法 先貼代碼 在解釋 1 /**2 * 字元過濾器3 * 4 */5 // 實現過濾器的方法 實現filter介面 重寫doFilter方法6 public class EncodeFilter implements Filter {7 8 private String..
⑹ JSP Filter過濾器設置編碼問題。。。
importjava.io.IOException;
importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importorg.omg.CORBA.Request;
{
@Override
publicvoiddestroy(){
//TODOAuto-generatedmethodstub
}
@Override
publicvoiddoFilter(ServletRequestreq,ServletResponseres,
FilterChainchain)throwsIOException,ServletException{
//TODOAuto-generatedmethodstub
System.out.println("字元編碼過濾器");
HttpServletRequestrequest=(HttpServletRequest)req;
HttpServletResponseresponse=(HttpServletResponse)res;
request.setCharacterEncoding("UTF-8");
chain.doFilter(request,response);
}
@Override
publicvoidinit(FilterConfigconfig)throwsServletException{
//TODOAuto-generatedmethodstub
}
}
以上就是Filter過濾器的代碼, 都設置成UTF-8 支持中文, 寫好了以上代碼之後,要在web.xml文件中進行配置。
⑺ jsp !!!servlet!!!為什麼我寫了一個編碼過濾器沒有作用不用粘代碼大神肯定知道怎
你打個斷點看進去過濾器沒, 你是把request和response的編碼都換了嗎?
⑻ JSP編碼過濾器,但是Servlet輸出還是亂碼
別懶,網上多的是。下面給你個常用的,關鍵要理解原理:
關於contentType 和 pageEncoding 的區別以及JSP中文處理內幕
contentType — 指定的是JSP頁最終 Browser(客戶端)所見到的網頁內容的編碼.
就是 Mozilla的 Character encoding, 或者是 IE6的 encoding. 例如 JSPtw Forum 用的contentType就是 Big5.
pageEncoding — 指定JSP編寫時所用的編碼
如果你的是 WIN98, 或 ME 的NOTEPAD記事本編寫JSP, 就一定是常用的是Big5 或 gb2312, 如果是用 WIN2k winXP的NOTEPAD時, SAVE時就可以選擇不同的編,碼, 包括 ANSI(BIG5/GB2312)或 UTF-8 或 UNIONCODE(估是 UCS 16). 因為 JSP要經過 兩次的」編碼」:
第一階段會用 pageEncoding, 第二階段會用 utf-8 至utf-8, 第三階段就是由TOMCAT出來的網頁, 用的是contentType.
階段一是 JSPC的 JSP至JAVA(.java)原碼的」翻譯」, 它會跟據 pageEncoding 的設定讀取JSP. 結果是 由指定的pageEncoding(utf-8,Big5,gb2312)的JSP 翻譯成統一的utf-8 JAVA原碼(.java). 如果pageEncoding設定錯了, 或沒設定(預設 ISO8859-1), 出來的 在這個階段 就已是中文亂碼.
階段二是由 JAVAC的JAVA原碼至JAVA BYTECODE的編譯. 不論JSP的編寫時是用(utf-8,Big5,gb2312),經過階段一的結果全都是utf-8的ENCODING的JAVA原碼.JAVAC用 utf-8的ENCODING讀取AVA原碼, 編譯成字元串是 utf-8 ENCODING的二進制碼(.class). 這是 JAVA VIRTUAL MACNHINE對常數字元串在 二進制碼(JAVA BYTECODE)內表逹的規范.
階段三是TOMCAT(或其的application container)載入和執行階段二得來的JAVA二進制碼, 輸出的結果( 也就是BROWSER(客戶端))
見到的. 這時一早隱藏在階段一和二的參數contentType, 就發揮了功效. (見 階段一的 ).
response.setContentType(」text/html; charset=utf-8″);
出來的可以是 utf-8, Big5, gb2312, 看的就是JSP ? contentType的設定.
<%@ page session=」false」 pageEncoding=」big5″ contentType=」text/html; charset=utf-8″ %>
還有, pageEncoding 和contentType的預設都是 ISO8859-1. 而隨便設定了其中一個, 另一個就跟著一樣了(TOMCAT4.1.27是如此).但這不是絕對, 看的各自JSPC的處理方式. 而pageEncoding不等於contentType, 更有利亞洲區的文字 CJKV系JSP網頁的開發和展示,(例pageEncoding=Big5 不等於 contentType=utf-8).一個簡單的解決方法是在包含和被包含文件的開始部分都加上:
<%@ page contentType=」text/html;charset=GB2312″ language=」java」 %>
---------------------------------------------------------------
ContentType
ContentType屬性指定了MIME類型和JSP頁面回應時的字元編碼方式。MIME類型的默認值是「text/html」; 字元編碼方式的默認值是「ISO-8859-1」. MIME類型和字元編碼方式由分號隔開
pageEncoding的內容只是用於jsp輸出時的編碼,不會作為header發出去的。
pageEncoding 是通知web server jsp的編碼。
pageEncoding
在JSP標準的語法中,如果pageEncoding屬性存在,那麼JSP頁面的字元編碼方式就由pageEncoding決定,否則就由contentType屬性中的charset決定,如果charset也不存在,JSP頁面的字元編碼方式就採用默認的ISO-8859-1。
⑼ get請求使用了過濾器修改編碼,為什麼還是亂碼
你對getParameter的修改有問題,去掉編碼的轉碼。Filter運行在Controller之前,Filter已經設置接收編碼為utf8了
⑽ eclipse web項目的編碼過濾器,統一設置成UTF-8
過濾器中的內容:
private static final long serialVersionUID =85757L;
private String encoding;
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
arg0.setCharacterEncoding(encoding);
arg1.setCharacterEncoding(encoding);
arg2.doFilter(arg0, arg1);
}
public void init(FilterConfig arg0) throws ServletException {
encoding=arg0.getInitParameter("encoding");
}
web.xml文件中 添加過濾器
<filter>
<filter-name>類名</filter-name>
<filter-class>類名全路徑(包括包名)</filter-class>
<init-param><!--參數 與過濾器中的encoding對應 encoding的實際值是utf-8-->
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>