【发布时间】:2017-06-11 23:53:12
【问题描述】:
我正在尝试向 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.xmlfile 是空的,但是问题是当我尝试运行 Web 应用程序时,我得到了这个输出:
AFilter is born
AFilter is working
AFilter is working
AFilter is working
似乎有些程序调用了AFilter 3 次,但我无法弄清楚是哪个,当我尝试从网络浏览器访问Aservlet 时:http://localhost:80/AServlet,我看到控制台是这样的:
AServlet
AFilter is working
这真的很令人困惑,我似乎成功地访问了AServlet,而AFilter 也在做它的工作。那么有人可以告诉我出了什么问题吗?提前致谢。 (顺便说一句:我使用的 IDE 是 Intellij IDEA Ultimate edition)
【问题讨论】:
-
我已经弄清楚为什么过滤器
doFiltermethod在Web应用程序启动时调用了3次,index.jsp(在urlpattern="/*"下)是默认的登陆页面,所以我更改了我的urlpattern=/web/service/,过滤器工作行不见了,但是当我访问AServlet时,我上面提到的问题仍然存在。
标签: java servlets intellij-idea servlet-filters