敏感な単語のJavaWebフィルタフィルタケース

要件:

  図1は、データ入力day17_caseケースは敏感ワードフィルタである
  2、SRC敏感字句基準パス下の「.txtの敏感な単語」
  ***それは敏感である場合、単語、置換3

分析:

  1、強化され、要求に従います。法適用関連獲得パラメータ強化
  2、リリースを。配信エージェントオブジェクト

コードの実装:

1つの インポートorg.springframework.cglib.proxy.InvocationHandler。
2  インポートorg.springframework.cglib.proxy.Proxy。
3  
4  インポートのjavax.servlet。* ;
5  輸入javax.servlet.annotation.WebFilter。
6  インポートjava.io.BufferedReader。
7  インポートjava.io.FileReader。
8  インポートにjava.io.IOException;
9  インポートjava.lang.reflect.Methodオブジェクト。
10  インポートjava.util.ArrayListの。
11  インポートjava.util.Listに。
12  
13  / ** 
14 *敏感词汇过滤器
 15   * / 
16 @WebFilterは( "/ *" 17の パブリック クラス SensitiveWordsFilterが実装フィルタ{
 18  
19  
20      公共の ボイドのdoFilter(のServletRequest REQ、たServletResponse RESP、れるFilterChain鎖)スローServletExceptionが、IOExceptionが{
 21          // 1创建代理对象、增强のgetParameter方法
22          のServletRequest proxy_req =(のServletRequest)たとえば、Proxy.newProxyInstance(req.getClass()のgetClassLoader()、req.getClass()でgetInterfaces()、新規のInvocationHandler(){
 23              @Override
 24              公衆(オブジェクトO、メソッド、メソッド、[]引数オブジェクト)オブジェクトを呼び出すスローのThrowable {
 25  
26である                 // のgetParameter強調方法
 27                  //の方法があるかどうかを決定する
28                  IF(等号( "のgetParameter"。method.getName(){))
 29                      // 拡張戻り値
 30                      //の値を返し
31である                      文字列値= (文字列)Method.invoke(REQ、引数);
 32  
33は、                     IF(値!= NULL ){
 34がある                         ため(STR文字列:リスト){
 35                              IF (値.Contains(STR)){
 36                                 = value.replaceAll値(STR、 "***" );
 37                              }
 38である                         }
 39                      }
 40  
41であり                     、戻り  値は、
 42である                 }
 43である 
44れる                 戻りMethod.invoke(REQ、引数を);
 45              }
 46である         });
 47          // 2リリース、配信プロキシオブジェクト増強
48  
49          chain.doFilter(proxy_req、RESPを);
 50      }
 51は、 
52である 
53である     プライベートリストの<string>一覧= 新しい新ArrayListの<文字列>();   // 敏感なワードがセット
54がある     公共 のボイドのinit(に、FilterConfig configが)スローServletExceptionが{
 55  
56は 
57で         試して{
 58              // 1つのロードファイル。
 59              // 実際のパスファイルの取得
60              のServletContext =のServletContext config.getServletContext( );
 61である              文字列のrealpath =にServletContext.getRealPath( "/ WEB-INF /クラス/感受性単語が.txtで" );
 62である             // 2ファイル読み込み
63である 
64              BufferedReaderのBR = 新しい新しい BufferedReaderの(新しい新FileReaderの(実パス));
 65  
66              // ファイル3の各ラインは、リストに追加された
67  
68              列ライン= NULL ;
 69              ながら((ライン= br.readLine())!= NULL ){
 70                  List.add(ライン);
 71である             }
 72  
73である             )(br.close;
 74  
75              のSystem.out.println(一覧);
 76          } キャッチ(例外E){
 77              e.printStackTrace();
 78          }
 79  
80      }
 81  
82  
83     公共 ボイドは(){破棄
 84      }
 85  
86 }

 

おすすめ

転載: www.cnblogs.com/niujifei/p/11628109.html