<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # JSP 過濾器 Servlet和JSP中的過濾器都是Java類,它們存在的目的如下: * 在請求訪問后端資源時攔截它 * 管理從服務器返回給客戶端的響應 下面列出了多種常用的過濾器類型: * 認證過濾器 * 數據壓縮過濾器 * 加密過濾器 * 觸發資源訪問事件的過濾器 * 圖像轉換過濾器 * 登錄和驗證過濾器 * MIME類型鏈過濾器 * 令牌過濾器 * 轉換XML內容的XSL/T過濾器 過濾器將會被插入進web.xml文件中,然后映射servlet、JSP文件的名字,或URL模式。部署描述文件web.xml可以在 &lt;Tomcat-installation-directory&gt;\conf 目錄下找到。 當JSP容器啟動網絡應用程序時,它會創建每一個過濾器的實例,這些過濾器必須在部署描述文件web.xml中聲明,并且按聲明的順序執行。 ## Servlet過濾器方法 一個過濾器就是一個Java類,它實現了javax.servlet.Filter 接口。javax.servlet.Filter接口定義了三個方法: | 方法 | 描述 | | --- | --- | | **public void doFilter (ServletRequest, ServletResponse, FilterChain)** | 該方法在每次一個請求/響應對因客戶端在鏈的末端請求資源而通過鏈傳遞時由容器調用。 | | **public void init(FilterConfig filterConfig)** | 該方法由 Web 容器調用,指示一個過濾器被放入服務。 | | **public void destroy()** | 該方法由 Web 容器調用,指示一個過濾器被取出服務。 | ## JSP過濾器示例 這個例子將會打印IP地址和每次訪問JSP文件的日期時間。當然,這只是個簡單的例子,讓您了解一些簡單的過濾器用法,但是可以使用這些概念來自行構造更復雜的程序。 ``` // 引入Java包 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; // 實現 Filter 類 public class LogFilter implements Filter { public void init(FilterConfig config) throws ServletException{ // 獲取初始化參數 String testParam = config.getInitParameter("test-param"); //打印初始化參數 System.out.println("Test Param: " + testParam); } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws java.io.IOException, ServletException { // 獲取客戶端ip地址 String ipAddress = request.getRemoteAddr(); // 輸出ip地址及當前時間 System.out.println("IP "+ ipAddress + ", Time " + new Date().toString()); // 傳遞請求道過濾器鏈 chain.doFilter(request,response); } public void destroy( ){ /* 在Filter實例在服務器上被移除前調用。*/ } } ``` 編譯LogFilter.java文件,然后將編譯后的class文件放在&lt;Tomcat安裝目錄&gt;/webapps/ROOT/WEB-INF/classes目錄下。 ## web.xml文件中的JSP過濾器映射 過濾器被定義,然后映射成一個URL或JSP文件名,與servlet被定義然后映射的方式差不多。在部署描述文件web.xml中,使用&lt;filter&gt;標簽來進行過濾器映射: ``` <filter> <filter-name>LogFilter</filter-name> <filter-class>LogFilter</filter-class> <init-param> <param-name>test-param</param-name> <param-value>Initialization Paramter</param-value> </init-param> </filter> <filter-mapping> <filter-name>LogFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` 上述過濾器將會應用在所有servlet和JSP程序中,因為我們在配置中指定了" /*"。您也可以指定一個servlet或JSP路徑,如果您只想要將過濾器應用在少數幾個servlet或JSP程序中的話。 現在,像平常一樣訪問servlet或JSP頁面,您就會發現服務器日志中產生了關于此次訪問的記錄。您也可以使用Log4J記錄器來把日志記錄在其它文件中。 ## 使用多重過濾器 您的網絡應用程序可以定義很多不同的過濾器。現在,您定義了兩個過濾器,AuthenFilter和LogFilter,其它的步驟與前面講的一樣,除非要創建一個不同的映射,就像下面這樣: ``` <filter> <filter-name>LogFilter</filter-name> <filter-class>LogFilter</filter-class> <init-param> <param-name>test-param</param-name> <param-value>Initialization Paramter</param-value> </init-param> </filter> <filter> <filter-name>AuthenFilter</filter-name> <filter-class>AuthenFilter</filter-class> <init-param> <param-name>test-param</param-name> <param-value>Initialization Paramter</param-value> </init-param> </filter> <filter-mapping> <filter-name>LogFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>AuthenFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` ## 過濾器的應用順序 在web.xml中&lt;filter&gt;元素的映射順序決定了容器應用這些過濾器的順序。要反轉應用的順序,您只需要反轉web.xml中&lt;filter&gt;元素的定義順序就行了。 比如,上面的例子會首先應用 LogFilter然后再應用AuthenFilter,但是下面這個例子將會反轉應用的順序: ``` <filter-mapping> <filter-name>AuthenFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>LogFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看