ホームページ  >  記事  >  Java  >  Javaフィルターの実装方法

Javaフィルターの実装方法

(*-*)浩
(*-*)浩オリジナル
2019-05-22 16:51:537166ブラウズ

Java フィルターの実装手順: 1. Filter インターフェースを実装するフィルター クラスを作成します; 2. インターフェースにまだ実装されていないメソッドを実装します (doFilter メソッドの実装に重点を置きます); 3. で構成します。 web.xml (主なことは、どのリソースをフィルタリングするかを構成することです)。

Javaフィルターの実装方法

フィルターはフィルターとも呼ばれます。サーブレット テクノロジの中で最もエキサイティングなテクノロジの 1 つです。WEB 開発者は、フィルタ テクノロジを使用して Web サーバーを管理します。すべての Web リソース: Jsp、サーブレット、静的画像ファイル、静的 html ファイルなどは、いくつかの特別な機能を実現するためにインターセプトされます。たとえば、URL レベルの権限アクセス制御、機密語彙のフィルタリング、応答情報の圧縮などの高度な機能を実装できます。

では、それはどのようにして達成されるのでしょうか?

Filter インターフェイスを実装するフィルター クラスを作成します

インターフェイスにまだ実装されていないメソッドを実装します (doFilter メソッドの実装に重点を置きます)

web.xml での設定 (主にフィルタリングするリソースの設定)

どのように機能しますか?

Filter インターフェイスには doFilter メソッドがあり、Filter を記述してどの Web リソースをインターセプトするかを設定すると、WEB サーバーは Web リソースのサービス メソッドを呼び出す前に毎回このメソッドを呼び出します。したがって、

このメソッドにコードを記述すると、次の目的を達成できます:
ターゲット リソースを呼び出す前にコードの一部を実行します。
ターゲット リソースを呼び出すかどうか (つまり、ユーザーに Web リソースへのアクセスを許可するかどうか)。
ターゲット リソースを呼び出した後、コードの一部を実行します。
Web サーバーが doFilter メソッドを呼び出すと、filterChain オブジェクトが渡されます。filterChain オブジェクトは、フィルタ インターフェイスで最も重要なオブジェクトです。また、
doFilter メソッドも提供します。開発者は、これを呼び出すかどうかを決定できます。このメソッドが呼び出されると、Web サーバーは Web リソースのサービス メソッドを呼び出します。つまり、Web リソースにアクセスされますが、それ以外の場合、Web リソースにはアクセスされません。

フィルターの例:

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;
/**
* @author yangcq
* @description 过滤器Filter的工作原理
*/
public class FilterTest implements Filter{
    public void destroy() {
        System.out.println("----Filter销毁----");
    }
public void doFilter(ServletRequest request, ServletResponse response,FilterChain filterChain) throws IOException, ServletException {
    // 对request、response进行一些预处理
    request.setCharacterEncoding("UTF-8");
    response.setCharacterEncoding("UTF-8");
    response.setContentType("text/html;charset=UTF-8");
    System.out.println("----调用service之前执行一段代码----");
    filterChain.doFilter(request, response); // 执行目标资源,放行
    System.out.println("----调用service之后执行一段代码----");
}
    public void init(FilterConfig arg0) throws ServletException {
        System.out.println("----Filter初始化----");
    }
}

web.xml でフィルターを構成します:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>    
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <!--配置过滤器-->
  <filter>
      <filter-name>FilterTest</filter-name>
      <filter-class>com.yangcq.filter.FilterTest</filter-class>
  </filter>
  <!--映射过滤器-->
  <filter-mapping>
      <filter-name>FilterTest</filter-name>
      <!--“/*”表示拦截所有的请求 -->
      <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

以上がJavaフィルターの実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。