Java: вопрос о фильтрах и отображении сервлетов - PullRequest
1 голос
/ 17 февраля 2011

У меня есть веб-приложение со следующей структурой:

TOMCAT_HOME
  |
   webapps
     |_myapp
          |-html/
          |-various directories
          |-WEB-INF/
          |-index.html

Приложение имеет различные сервлеты, которые зарегистрированы по разным путям.
Само приложение может быть доступно через http://IP:PORT/myapp/
Этот курс приводит к получению index.html (в списке приветствия).
Мой вопрос заключается в том, как мне зарегистрировать фильтр для доступа к корневому каталогу, но не подкаталогам, т.е. отображение URL , а не , чтобы быть /* Если я размещу как URL-шаблон /, кажется, не работает.
Таким образом, фильтр будет перехватывать только этот запрос http://IP:PORT/myapp/, а не http://IP:PORT/myapp/path или http://IP:PORT/myapp/servlet/path.
Кроме того, фильтр будет перехватывать запрос типа http://IP:PORT/myapp/index.html, который эквивалентен тому, который я нацеливаю.

Спасибо

Ответы [ 2 ]

2 голосов
/ 17 февраля 2011

Почему бы тогда не установить фильтр на /index.html?Это не приведет к фильтрации ваших подкаталогов.

1 голос
/ 17 февраля 2011

Вы можете легко проверить на / и сделать свое дело, в противном случае дайте ему пройти.С шаблоном URL /*.

@Override
public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain)
    throws IOException,ServletException{

    HttpServletRequest request=(HttpServletRequest)req;
    String path=request.getServletPath();

    if(path.equals("/") || path.equals("/index.html"){
        // do your thing
    }

    chain.doFilter(req,res);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...