Java フィルターの実装手順: 1. Filter インターフェースを実装するフィルター クラスを作成します; 2. インターフェースにまだ実装されていないメソッドを実装します (doFilter メソッドの実装に重点を置きます); 3. で構成します。 web.xml (主なことは、どのリソースをフィルタリングするかを構成することです)。
フィルターはフィルターとも呼ばれます。サーブレット テクノロジの中で最もエキサイティングなテクノロジの 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 サイトの他の関連記事を参照してください。