[英]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瀏覽器訪問Aservlet
: http://localhost:80/AServlet
,我看到控制台是這樣的:
AServlet
AFilter is working
確實使我感到困惑,似乎我成功訪問了AServlet
而AFilter
也正在完成它的工作。 那么有人可以告訴我出什么事了嗎? 提前致謝。 (順便說一句:我正在使用的IDE是Intellij IDEA Ultimate版)
在閱讀Internet上的一些filter-servlet文章后,問題已解決,問題所在的行是: chain.doFilter(req,resp)
,我應該刪除此行代碼,否則filter會將請求和響應發送到目的地我還是去。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.