Пружинный перехватчик / фильтр - PullRequest
0 голосов
/ 22 сентября 2011

Мне нужно написать перехватчик / фильтр в приложении Spring-jersey, которое будет проверять каждый запрос на сессию и в случае успеха передает код соответствующему контроллеру.Передача этого кода - бес, потому что на основе кода контроллер решит дальнейшие действия.

В: 1) Можно ли написать этот тип фильтра входа в Spring?Как?2) Возможно ли передать код контроллеру от перехватчика?Как?

1 Ответ

0 голосов
/ 23 сентября 2011

Нам нужно реализовать интерфейс ContainerRequestFilter для создания фильтра Джерси.Ниже приведен пример кода для перехвата и изменения запроса с использованием фильтра джерси:

import com.sun.jersey.spi.container.ContainerRequest;
import com.sun.jersey.spi.container.ContainerRequestFilter;
import javax.ws.rs.core.MultivaluedMap;
import org.apache.log4j.Logger;

/**
 *
 * @author arnav
 */
public class MyAppFilter implements ContainerRequestFilter{


   public ContainerRequest filter(ContainerRequest request) {

      MultivaluedMap<String, String> headers = request.getRequestHeaders();

      headers.add("code", "MY_APP_CODE");
      request.setHeaders((InBoundHeaders)headers);

      return request;
   }
}

После добавления этого класса нам необходимо зарегистрировать этот фильтр для нашего веб-приложения.Так что теперь мы добавим следующие строки в наш web.xml:

<servlet>
      ..........
      ..........   
      <init-param>
         <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
         <param-value>package.MyAppFilter</param-value>
      </init-param> 
</servlet>
...