Servlet編程(3)

Servlet過濾器

filter的應用java


由於以前看過struts2的內容,對於這相似的知識比較所熟悉。 web

主要的注意力集中在web.xml文件的配置上。

  1. 過濾器的概念和定義
      概念:同filter的中文含義相同。
      定義: 後端

    動態地攔截請求和響應,以變換或使用包含在請求或響應中的信息。服務器

  2. 做用 app

    • 在客戶端的請求訪問後端資源以前,攔截這些請求。
    • 在服務器的響應發送回客戶端以前,處理這些響應。

3.examplize
- fliter的action類 implements Filteride

package com.Demo.Dao;

import java.io.IOException;

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 InitOperation implements Filter {

    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
            throws IOException, ServletException {
        // TODO Auto-generated method stub
        // 輸出站點名稱
        System.out.println("站點網址:http://www.runoob.com");
        // 把請求傳回過濾鏈
        arg2.doFilter(arg0,arg1);
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
       String information=arg0.getInitParameter("information");
       System.out.println("我想表達的是"+information);
    }

}
  • web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
    <filter>
        <filter-name>initialization</filter-name>
        <filter-class>com.Demo.Dao.InitOperation</filter-class>
        <init-param>
            <param-name>information</param-name>
            <param-value>"我愛林允兒"</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>initialization</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <servlet>
        <servlet-name>HelloWorld</servlet-name>
        <servlet-class>com.Demo.Dao.HelloWorld</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloWorld</servlet-name>
        <url-pattern>/HelloWorld</url-pattern>
    </servlet-mapping>
</web-app>

運行結果:
init()只調用一次url

相關文章
相關標籤/搜索