如何从 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)
}
我想通过 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)
}