2012-06-18 2 views
1

У меня есть приложение для веб-приложений весны. Я хотел бы поместить некоторые общие части кода, которые будут выполняться в начале каждого HTTP-запроса, чтобы я мог проверять наличие спама. Я настроил DispatcherServlet в своем web.xml, что означает, что DispatcherServlet является первой точкой входа для каждого HTTP-запроса. Мой вопрос заключается в том, что DispatcherServlet предоставляет какой-либо метод, который будет выполняться первым, а затем элемент управления переходит к запрошенному контроллеру аннотаций?Весна ДиспетчерСервер, код для выполнения перед ним

ответ

3

Я согласен с Дейвом. То, что вы ищете, является фильтром/перехватчиком для всех запросов на отображаемом URL-адресе. Традиционно это было сделано с использованием ServletFilter. Здесь вы помещаете свой собственный код. Например.

public FooFilter implements ServletFilter { 
    @Override 
    void doFilter(ServletRequest request, 
       ServletResponse response, 
       FilterChain chain) 
       throws IOException, 
        ServletException { 
     // My Custom check for spam. 
    } 
} 

После того как вы внедрили свой собственный код в ServletFilter, все, что вам нужно, настройте его в web.xml.

<filter> 
    <filter-name>FooFilter</filter-name> 
    <filter-class>com.foo.servlet.filters.FooFilter</filter-class> 
    <init-param> 
     <param-name>test-param</param-name> 
     <param-value>Test parameter.</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>FooFilter</filter-name> 
    <url-pattern>/*</url-pattern> <!-- The URL to be filtered. --> 
</filter-mapping> 

Его самый простой способ настроить фильтр и перехватить ваши веб-запросы.

При использовании Spring framework вы хотели бы использовать HandlerInterceptor Sping. Очень хорошая публикация, когда нужно использовать то, что можно найти here.

Надеюсь, это поможет.

0

Сервлет-фильтры будут работать, потому что фильтры всегда выполняются перед любым сервлетом. Фильтры будут выполняться до сервлета диспетчера, но перехватчики будут выполняться после сервлета диспетчера и перед фактическим обработчиком!

+0

Это не дает ответа на вопрос. Чтобы критиковать или запросить разъяснения у автора, оставьте комментарий ниже своего сообщения - вы всегда можете прокомментировать свои собственные сообщения, и как только у вас будет достаточно [репутации] (http://stackoverflow.com/help/whats-reputation), вы будете быть в состоянии [прокомментировать любое сообщение] (http://stackoverflow.com/help/privileges/comment). - [Из обзора] (/ review/low-quality-posts/11304032) – semirturgay

+0

Как и я, я заключил два вопроса, которые отвечают на вопрос: один до сервлера диспетчера можно использовать фильтры, а после диспетчера и до контроллеров можно использовать перехватчиков весны, разве это недостаточно? –

Смежные вопросы