페이지에 대한 내 요청을 가로 채기 필터로 필터링해야하는 경우가 있습니다. 다른 조건에 따라 요청을 다른 페이지로 리디렉션해야합니다.Sling의 필터 및 서블릿 매핑
here에서 큐를 가져 와서 번들을 생성하고 번들 활성화 프로그램에 서블릿과 필터를 등록했습니다.
Hashtable initParams = new Hashtable(); // to pass a dictionary object to
// service.register
initParams.put("sling.servlet.resourceTypes","/login");
initParams.put("sling.servlet.extensions","jsp");
service.registerServlet("/myServlet", this.myServlet, initParams, null);
initParams = new Hashtable();
initParams.put("sling.filter.scope","REQUEST");
service.registerFilter(this.checkPageRequest, "/.*",null, 2, null);
service.registerFilter(this.checkValidSession, "/.*", null, 1, null);
것은 내가 두 가지 문제에 직면하고있다 :
내가 서블릿 대응에 필터를 매핑하고 위치를 식별 할 수 아니에요 다음
는코드 조각입니다. 제 생각에
checkPageRequest
필터가 호출되고이어서checkValidSession
이 호출됩니다.requestdispatcher.forward(..)
이 없으면myServlet
서블릿에 충돌합니다. 필자의 경우 필터는filterChain.doFilter(..)
을 사용하여 예상대로 호출되지만 서블릿은 호출되지 않습니다.내 필터는 모든 페이지 요청을 차단해야하므로 아무 페이지에서나
requestdispatcher.forward(..)
을 수행하면 동일한 필터가 다시 호출되어 루프에 들어갑니다.
DayCQ 환경에 배포 할 OSGi 번들로 개발 중입니다.