#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"
посмотреть, что произойдет? Если вам нужно только перенаправление, подойдет сервлет.