如何从 Java 代码在 Java EE 8 中正确创建过滤器?

How to create correctly a Filter in Java EE 8 from Java code?

我想通过 Java 代码在 Java EE 8 中以编程方式创建一个过滤器,所以我在我的应用程序中编写了这段代码。

Gif 截图:gif capture one - gif capture two

我的过滤器是LoginFilter.java

package afrominga.filters;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

@WebFilter
public class LoginFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("Hello from LoginFilter.");
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println("I am running the LoginFilter tasks.");
    }

    @Override
    public void destroy() {
        System.out.println("Goodbie from LoginFilter");
    }
}

我有 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <display-name>Archetype Created Web Application</display-name>

    <filter>
        <filter-name>LoginFilter</filter-name>
        <filter-class>afrominga.filters.LoginFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>LoginFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <error-page>
        <error-code>404</error-code>
        <location>/error/404.jsp</location>
    </error-page>
    <error-page>
        <error-code>500</error-code>
        <location>/error/500.jsp</location>
    </error-page>
</web-app>

因此,在使用我的应用程序的根路径上下文打开我的浏览器时,过滤器在我的 System.out 的输出文本中打印,但我的页面留空并且不显示我的主页。我不明白为什么会这样,这必须转发到我的主页,因为只在我的控制台中打印文本。

有人可以帮助我吗?请

一个问题是您的 doFilter() 方法。现在,您的过滤器只是打印而不是将请求传递给下一个 filter/your 应用程序。你只需要添加一行。

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println("I am running the LoginFilter tasks.");
        filterChain.doFilter(request, response)
    }