Как правильно создать Фильтр в Java EE 8 из кода Java? - PullRequest
1 голос
/ 07 августа 2020

Я хочу программно создать фильтр в Java EE 8 из Java кода, поэтому я сделал этот код в своем приложении.

Захваты Gif: Захват GIF-файлов - захват двух файлов GIF

Мой фильтр 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>

Итак, во время открытия моего браузера с контекстом пути root моего приложения фильтр печатает на выходе текст моего System.out, но мою страницу остается пустым и не показывает мне домашнюю страницу. Я не понимаю, почему это происходит, это должно перенаправить на мою домашнюю страницу, потому что в моей консоли печатается только текст.

может кто-нибудь мне поможет? пожалуйста

1 Ответ

0 голосов
/ 07 августа 2020

Одна проблема в том, что ваш метод doFilter (). Прямо сейчас ваш фильтр просто печатает и не передает запрос следующему фильтру / вашему приложению. Вам просто нужно добавить одну строку.

    @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)
    }
...