Как перехватить базовый путь в фильтре сервлетов Java

#java #servlets #servlet-filters

Вопрос:

Я пишу фильтр для Java-сервлета. Я хочу, чтобы он перехватывал как путь «/index», так и путь»/». Фильтр отлично работает для пути «/индекс», но не для базового пути «/».

Это мой класс фильтров:

 @WebFilter(urlPatterns = {"","/","/index" })
 

открытый класс SessionFilterLogged реализует фильтр {

 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException, IOException {

    HttpSession session = ((HttpServletRequest) request).getSession();
    if (session.getAttribute("user") != null) {
        ((HttpServletResponse) response).sendRedirect(((HttpServletRequest) request).getContextPath()   "/home");
    }
    chain.doFilter(request, response);
}


public void init(FilterConfig fConfig) throws ServletException {
}

public void destroy() {
  }
}
 

Я также попытался добавить пустой путь»», но ничего не происходит.

Заранее благодарю вас за помощь!

Комментарии:

1.Из спецификации сервлета 4, гл. 12.2: «Пустая строка ( «» ) — это специальный шаблон URL — адреса, который точно соответствует корневому контексту приложения, т. Е. запросам хоста формы:порт/<контекст-корень>/.>» Так "" должно быть, но это не так. Может быть, ошибка в вашем контейнере сервлетов? Вы пробовали сопоставить сервлет "" И "/index" посмотреть, что произойдет? Если вам нужно только перенаправление, подойдет сервлет.