2017-06-11 1 views
0

を仕事に失敗した私は、サーブレットにフィルタを追加しようとしています: filter設定はこのようなものです:のJava:サーブレットへのフィルタが正しく

@WebFilter(filterName = "AFilter",urlPatterns = "/*", servletNames = "AServlet") 

    public class AFilter implements Filter { 
     public void destroy() { 
    System.out.println("filter is dying"); 
} 
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { 
    chain.doFilter(req, resp); 
    System.out.println("filter is working"); 
} 
    public void init(FilterConfig config) throws ServletException { 
    System.out.println("filter is born"); 
} 

と私のAServletはこのようなものです:

@WebServlet(name = "AServlet",urlPatterns = "/AServlet") 

public class AServlet extends HttpServlet { 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

} 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    System.out.println("AServlet"); 
} 
howeve、私は、サーブレットとフィルタのマッピングを設定するには、アノテーションを使用していますので、 web.xmlファイルが空である

}

私はこの出力を得たWebアプリケーションを実行しようとすると、Rの問題がある:

AFilter is born 
AFilter is working 
AFilter is working 
AFilter is working 

いくつかのプログラムがAFilter 3回を起動していると私はアクセスしようとしたとき、私はこれ、とも把握することができなかったようですWebブラウザからAservlet

AServlet 
AFilter is working 

これは、私が成功しAServletを訪問し、AFilterが同様にその仕事をしているようだということは本当に紛らわしいです:http://localhost:80/AServletは、私は、コンソールは、このようなものです参照してください。誰かが間違っていることを教えてもらえますか?前もって感謝します。 (私が使用しているIDEはIntellij IDEA Ultimate版です)

+0

フィルタ 'doFilter'メソッドがWebアプリケーションの起動時に3回呼び出され、urlpattern ="/* "の下にある' index.jsp'がデフォルトのランディングページである理由を知りましたが、だからurlpattern = '/ web/service /'を変更し、フィルタは作業行になっていますが、 'AServlet'にアクセスすると、上記の問題はまだ残っています。 – User3301

答えて

0

インターネットでいくつかのフィルタサーブレットの記事を読んだ後に問題が解決しました。問題は次の行です:chain.doFilter(req,resp)、このコード行を削除してくださいそうでなければ、フィルターは私がとにかく訪れる行き先に要求と応答を送ります。

+0

あなたのためにあなた自身がそれを解決してくれてうれしいです。 –

+0

ありがとう、幸せなコーディング – User3301

+0

この質問はすでに回答しています....私はあなたがチェーンを削除する必要がありますと言ったとき混乱している。それを削除したら、どのようにリクエストを適切なリソースに転送するのですか? –

関連する問題