1. 程式人生 > >JavaWeb 實現第一個Filter過濾器程式(教材學習筆記)

JavaWeb 實現第一個Filter過濾器程式(教材學習筆記)

Filter被稱作過濾器,其基本功能就是對Servlet容器呼叫Servlet的過程進行攔截,從而實現一些特殊功能,

Filter介面包含了三個方法

init()方法主要就是用來初始化過濾器,只會在web程式載入的時候呼叫一次

doFilter()方法是響應客戶端請求的,只要有請求就會被呼叫

destroy()方法在web伺服器解除安裝Filter物件時被呼叫,

下面通過一個樣例實現一下Filter是如何對servlet程式的呼叫進行攔截的

1、建立名為web-chapter08  的web專案,並在專案中建立一個名為cn.itcast.chapter08.filter包,在該包下建立一個名為MyServlet的servlet

程式碼如下:

package cn.itcast.chapter08.filter;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.*;

public class MyServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.getWriter().write("Hello MyServlet");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

並在web.xml檔案中進行配置,

配置程式碼如下:

<servlet>
    <description></description>
    <display-name>MyServlet</display-name>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>cn.itcast.chapter08.filter.MyServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/MyServlet</url-pattern>
  </servlet-mapping>

將web-chapter08部署到tomcat上,並啟動tomcat,在瀏覽器網址欄輸入http://localhost:8080/web-chapter08/MyServlet結果如下:

2、建立名為MyFilter的Filter類

在cn.itcast.chapter08.filter包中建立MyFilter,該類用於攔截MyServlet程式,實現程式碼如下:

package cn.itcast.chapter08.filter;
import java.io.*;
import javax.servlet.Filter;
import javax.servlet.*;

public class MyFilter implements Filter {

	public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
	}

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		PrintWriter out =response.getWriter();
		out.write("Hello MyFilter!");
	}
    
	public void destroy() {
		// TODO Auto-generated method stub
	}
}

同樣需要在web.xml中進行配置,程式碼如下:

<filter>
      <filter-name>MyFilter</filter-name>
      <filter-class>cn.itcast.chapter08.filter.MyFilter</filter-class>
  </filter>
  <filter-mapping>
      <filter-name>MyFilter</filter-name>
      <url-pattern>/MyServlet</url-pattern>
  </filter-mapping>

啟動tomcat,在瀏覽器網址欄輸入http://localhost:8080/web-chapter08/MyServlet結果如下:

可以看到雖然網址訪問的是MyServket,但是出現的結果還是MyFilter的內容,至此我們的第一個Filter程式就正式完成了