簡體   English   中英

Java:過濾到Servlet不能正常工作

[英]Java: filter to a servlet failed to work properly

我正在嘗試向Servlet添加過濾器: filter配置如下:

@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");
}

}

我正在使用注釋來配置servlet和過濾器的映射,因此web.xml文件為空,但是問題是當我嘗試運行Web應用程序時得到了以下輸出:

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

似乎有些程序已調用AFilter 3次,但我無法弄清楚哪一個,以及當我嘗試從Web瀏覽器訪問Aservlethttp://localhost:80/AServlet ,我看到控制台是這樣的:

AServlet
AFilter is working

確實使我感到困惑,似乎我成功訪問了AServletAFilter也正在完成它的工作。 那么有人可以告訴我出什么事了嗎? 提前致謝。 (順便說一句:我正在使用的IDE是Intellij IDEA Ultimate版)

在閱讀Internet上的一些filter-servlet文章后,問題已解決,問題所在的行是: chain.doFilter(req,resp) ,我應該刪除此行代碼,否則filter會將請求和響應發送到目的地我還是去。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM