Filter對Request的改變:HttpServletRequestWrapper的工作原理
8)Filter對Request的改變:HttpServletRequestWrapper的工作原理
馬 克-to-win:有了HttpServletResponseWrapper的基礎,就好理解HttpServletRequestWrapper了。 無疑它就是想在Request到達伺服器之前,先把它處理一下。比如過濾掉一些政治敏感字。意義嘛,也好理解。比如n個html頁面都需要過濾,如果都在 n個servlet當中過濾的話,會造成未來程式碼維護困難。馬克-to-win:HttpServletRequestWrapper的使用方法就是靠 著:1)MarkToWinRequestWrapper hsr =new MarkToWinRequestWrapper((HttpServletRequest)request); 和 2)chain.doFilter(hsr, response);
這兩句話以後MarkToWinRequestWrapper的例項hsr取 代了request,之後在servlet呼叫的request.getParameter(String name)方法當然就是MarkToWinRequestWrapper類的getParameter方法。如果servlet想呼叫request的其 他方法,MarkToWinRequestWrapper這個類也可以覆蓋掉它。
例 1.2.8
package com;
import javax.servlet.http.*;
public class MarkToWinRequestWrapper extends HttpServletRequestWrapper {
public MarkToWinRequestWrapper(HttpServletRequest request) {