1. 程式人生 > >請做一個Filter過濾器的hello world最簡單的一個例子

請做一個Filter過濾器的hello world最簡單的一個例子

1)helloWorld:

馬 克-to-win:請同學們先做本部分的Filter的hello world實驗。之後根據實驗,再返回來學習我接下來的這段話。由於在web.xml當中,我們Filter的url-pattern是/*,所以當用戶 訪問根目錄下的任何目標檔案時,我們這個Filter都會起作用。當發現使用者要訪問home.jsp時,MarkToWinFilter中的 doFilter方法會被執行。其中"之前 filterChain.doFilter"不出意外的會被打印出來。馬克-to-win:接著就是chain.doFilter(request, response);方法。chain是什麼?看那張說明“Filter的攔截的工作過程”的圖了嗎?那裡面的1234567,7個步驟點,你不覺得就像 一個chain(鏈兒)嗎?所以chain.doFilter(request, response);的意思就是順著鏈,繼續往下走一步,就一步而已,繼續執行。馬克-to-win:如果還是Filter,就還是執行 chain.doFilter,如果是Servlet,就執行doXXX方法。Servlet執行完以後,別忘了,還要回來執行doFilter中的 chain.doFilter後面的部分。請大家仔細觀察實驗執行結果。

例 1.2.1
home.jsp:

<%@ page contentType="text/html; charset=GBK" %>
<%System.out.println("inside jsp"); %>

<br>這是在home.jsp<br>

MarkToWinFilter.java:

package com;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class MarkToWinFilter implements Filter {
    public MarkToWinFilter() {
        System.out.println("單獨啟動伺服器時,constructor被執行,先於init");

詳情請見:http://www.mark-to-win.com/index.html?content=Jsp/jspUrl.html&chapter=Jsp/jsp6_web.html#FilterhelloWorld