возврат после вызова doFilter () GenericFilterBean при загрузке Spring - PullRequest
0 голосов
/ 04 февраля 2019

Я использую GenericFilterBean в качестве фильтра в моем загрузочном проекте Spring.

В некоторых случаях я хочу передать следующий фильтр моей логике фильтра.

Мой фильтр выглядит следующим образом;

public class MyFilter extends GenericFilterBean {

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

            HttpServletRequest httpServletRequest = (HttpServletRequest) request;

            if (anyCondition){
                chain.doFilter();
                return;         
            }

            if (anyCondition){
                chain.doFilter();
                return;         
            }

            if (anyCondition){
                chain.doFilter();
                return;         
            }

            chain.doFilter();

        }

    }

он вызывает другой chain.doFilter (), если я не вернусь, то я вернусь.

Это вызовет какие-либо проблемы с возвратом после вызова chain.doFilter ()?

Это правильный способ справиться с этой ситуацией?

1 Ответ

0 голосов
/ 04 февраля 2019

Ваш код всегда будет вызывать chain.doFilter (не doChain)

, например

    public class MyFilter extends GenericFilterBean {

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

            HttpServletRequest httpServletRequest = (HttpServletRequest) request;

            //this gets executed before other filters
            some code here

            //now we execute other filters
            chain.doFilter(request, response); 

            //this code gets executed after the 'next' filters are done
            some code here

        }

    }

Но ваш код всегда выполняет фильтр next и затем завершается,Ваш код в порядке, но вы можете сделать это с помощью оператора if then else вместо

    public class MyFilter extends GenericFilterBean {

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

            HttpServletRequest httpServletRequest = (HttpServletRequest) request;

            if (condition1){
                //do something for condition1
            } else if (condition2) {
                //do something for condition2
            }  else if (condition3) {
                //do something for condition3
            }
            chain.doChain();

        }

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