DynamicMappingFilter를 사용하여 Stripes를 구성 했으므로 "* .action"없이 URL을 사용할 수 있습니다. Stripes가 내 오류 페이지를 처리하기를 원합니다. 안녕하세요DynamicMappingFilter 및 오류 페이지가있는 많은 중첩 요청에
public class ErrorAction extends BaseAction implements ActionBean {
@DefaultHandler
public Resolution action() {
return new ForwardResolution("/WEB-INF/pages/test.jsp");
}
}
/WEB-INF/pages/test.jsp
는 일반 HTML은 다음과 같습니다, 줄무늬 작업을 거의 비어 지금
<jsp:forward page="/support/Error" />
그것은이에 전달하는 : 나는 404 오류를 처리하기 위해 내가 web.xml
에서 참조하는 간단한 error.jsp
페이지를 만든 세계 페이지 (Netbeans에서 생성).
하지만 어떤 이유로 작동하지 않습니다. /WEB-INF/pages/test.jsp
으로 전달한 후 ErrorAction이 다시 요청되고 GlassFish가이를 중지 할 때까지이 루프가 계속됩니다.
이 기록됩니다 것입니다 (/fasdfasdfasdf
존재하지 않는 URL입니다) :
INFO: 14:37:13,646 TRACE StripesFilter:198 - Intercepting request to URL: /fasdfasdfasdf
INFO: 14:37:13,648 DEBUG UrlBindingFactory:187 - No URL binding matches /fasdfasdfasdf
INFO: 14:37:13,648 DEBUG UrlBindingFactory:187 - No URL binding matches /fasdfasdfasdf
INFO: 14:37:13,650 TRACE StripesFilter:198 - Intercepting request to URL: /support/Error
WARNING: PWC4011: Unable to set request character encoding to UTF-8 from context /mycompany-web-seller, because request parameters have already been read, or ServletRequest.getReader() has already been called
INFO: 14:37:13,652 DEBUG UrlBindingFactory:187 - Matched /support/Error to /support/Error
INFO: 14:37:13,653 DEBUG UrlBindingFactory:187 - Matched /support/Error to /support/Error
INFO: 14:37:13,653 TRACE DispatcherServlet:198 - Dispatching request to URL: /support/Error
INFO: 14:37:13,654 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage RequestInit
INFO: 14:37:13,654 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage ActionBeanResolution
INFO: 14:37:13,654 DEBUG UrlBindingFactory:187 - Matched /support/Error to /support/Error
INFO: 14:37:13,655 DEBUG UrlBindingFactory:187 - Matched /support/Error to /support/Error
INFO: 14:37:13,656 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage HandlerResolution
INFO: 14:37:13,656 DEBUG UrlBindingFactory:187 - Matched /support/Error to /support/Error
INFO: 14:37:13,657 DEBUG DispatcherHelper:187 - Resolved event: action; will invoke: ErrorAction.action()
INFO: 14:37:13,657 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage BindingAndValidation
INFO: 14:37:13,658 DEBUG DefaultActionBeanPropertyBinder:187 - Running required field validation on bean class com.mycompany.stripes.support.ErrorAction
INFO: 14:37:13,658 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage CustomValidation
INFO: 14:37:13,659 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage EventHandling
INFO: 14:37:13,659 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage ResolutionExecution
INFO: 14:37:13,660 DEBUG HttpCacheInterceptor:187 - Looking for HttpCache on com.mycompany.stripes.support.ErrorAction.action()
INFO: 14:37:13,660 DEBUG UrlBindingFactory:187 - No URL binding matches /WEB-INF/pages/test.jsp
INFO: 14:37:13,661 DEBUG UrlBindingFactory:187 - No URL binding matches /WEB-INF/pages/test.jsp
INFO: 14:37:13,662 TRACE ForwardResolution:198 - Forwarding to URL: /WEB-INF/pages/test.jsp
INFO: 14:37:13,667 TRACE StripesFilter:198 - Intercepting request to URL: /support/Error
INFO: 14:37:13,668 DEBUG UrlBindingFactory:187 - Matched /support/Error to /support/Error
INFO: 14:37:13,669 DEBUG UrlBindingFactory:187 - Matched /support/Error to /support/Error
INFO: 14:37:13,670 TRACE DispatcherServlet:198 - Dispatching request to URL: /support/Error
INFO: 14:37:13,670 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage RequestInit
INFO: 14:37:13,671 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage ActionBeanResolution
INFO: 14:37:13,671 DEBUG UrlBindingFactory:187 - Matched /support/Error to /support/Error
INFO: 14:37:13,672 DEBUG UrlBindingFactory:187 - Matched /support/Error to /support/Error
INFO: 14:37:13,673 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage HandlerResolution
INFO: 14:37:13,673 DEBUG UrlBindingFactory:187 - Matched /support/Error to /support/Error
INFO: 14:37:13,674 DEBUG DispatcherHelper:187 - Resolved event: action; will invoke: ErrorAction.action()
INFO: 14:37:13,675 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage BindingAndValidation
INFO: 14:37:13,675 DEBUG DefaultActionBeanPropertyBinder:187 - Running required field validation on bean class com.mycompany.stripes.support.ErrorAction
INFO: 14:37:13,676 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage CustomValidation
INFO: 14:37:13,676 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage EventHandling
INFO: 14:37:13,677 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage ResolutionExecution
INFO: 14:37:13,677 DEBUG HttpCacheInterceptor:187 - Looking for HttpCache on com.mycompany.stripes.support.ErrorAction.action()
INFO: 14:37:13,678 DEBUG UrlBindingFactory:187 - No URL binding matches /WEB-INF/pages/test.jsp
INFO: 14:37:13,679 DEBUG UrlBindingFactory:187 - No URL binding matches /WEB-INF/pages/test.jsp
INFO: 14:37:13,679 TRACE ForwardResolution:198 - Forwarding to URL: /WEB-INF/pages/test.jsp
... and again the same
그리고 예외입니다 : 디버거에서 추적 할 때
다음WARNING: ApplicationDispatcher[/mycompany-web-seller] PWC1231: Servlet.service() for servlet default threw exception
javax.servlet.ServletException: PWC1232: Exceeded maximum depth for nested request dispatches: 20
at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:772)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:649)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:483)
at org.apache.catalina.core.ApplicationDispatcher.doDispatch(ApplicationDispatcher.java:454)
at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:350)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:300)
at net.sourceforge.stripes.action.ForwardResolution.execute(ForwardResolution.java:110)
at net.sourceforge.stripes.controller.DispatcherHelper$7.intercept(DispatcherHelper.java:508)
at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:158)
at net.sourceforge.stripes.controller.HttpCacheInterceptor.intercept(HttpCacheInterceptor.java:99)
at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155)
at net.sourceforge.stripes.controller.BeforeAfterMethodInterceptor.intercept(BeforeAfterMethodInterceptor.java:113)
at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155)
at net.sourceforge.stripes.controller.ExecutionContext.wrap(ExecutionContext.java:74)
at net.sourceforge.stripes.controller.DispatcherHelper.executeResolution(DispatcherHelper.java:502)
at net.sourceforge.stripes.controller.DispatcherServlet.executeResolution(DispatcherServlet.java:286)
at net.sourceforge.stripes.controller.DispatcherServlet.service(DispatcherServlet.java:170)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at net.sourceforge.stripes.controller.DynamicMappingFilter$2.doFilter(DynamicMappingFilter.java:431)
at net.sourceforge.stripes.controller.StripesFilter.doFilter(StripesFilter.java:247)
at net.sourceforge.stripes.controller.DynamicMappingFilter.doFilter(DynamicMappingFilter.java:418)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:785)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:649)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:483)
at org.apache.catalina.core.ApplicationDispatcher.doDispatch(ApplicationDispatcher.java:454)
at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:350)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:300)
at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:785)
at org.apache.jsp.error_jsp._jspService(error_jsp.java:48)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:403)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at net.sourceforge.stripes.controller.DynamicMappingFilter.doFilter(DynamicMappingFilter.java:397)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:785)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:649)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:485)
at org.apache.catalina.core.ApplicationDispatcher.doDispatch(ApplicationDispatcher.java:454)
at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:350)
at org.apache.catalina.core.ApplicationDispatcherForward.custom(ApplicationDispatcherForward.java:253)
at org.apache.catalina.core.ApplicationDispatcherForward.status(ApplicationDispatcherForward.java:209)
at org.apache.catalina.core.ApplicationDispatcherForward.commit(ApplicationDispatcherForward.java:131)
at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:353)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:300)
at net.sourceforge.stripes.action.ForwardResolution.execute(ForwardResolution.java:110)
at net.sourceforge.stripes.controller.DispatcherHelper$7.intercept(DispatcherHelper.java:508)
at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:158)
at net.sourceforge.stripes.controller.HttpCacheInterceptor.intercept(HttpCacheInterceptor.java:99)
at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155)
at net.sourceforge.stripes.controller.BeforeAfterMethodInterceptor.intercept(BeforeAfterMethodInterceptor.java:113)
at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155)
at net.sourceforge.stripes.controller.ExecutionContext.wrap(ExecutionContext.java:74)
at net.sourceforge.stripes.controller.DispatcherHelper.executeResolution(DispatcherHelper.java:502)
at net.sourceforge.stripes.controller.DispatcherServlet.executeResolution(DispatcherServlet.java:286)
at net.sourceforge.stripes.controller.DispatcherServlet.service(DispatcherServlet.java:170)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at net.sourceforge.stripes.controller.DynamicMappingFilter$2.doFilter(DynamicMappingFilter.java:431)
at net.sourceforge.stripes.controller.StripesFilter.doFilter(StripesFilter.java:247)
at net.sourceforge.stripes.controller.DynamicMappingFilter.doFilter(DynamicMappingFilter.java:418)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:785)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:649)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:483)
at org.apache.catalina.core.ApplicationDispatcher.doDispatch(ApplicationDispatcher.java:454)
at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:350)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:300)
at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:785)
at org.apache.jsp.error_jsp._jspService(error_jsp.java:48)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:403)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at net.sourceforge.stripes.controller.DynamicMappingFilter.doFilter(DynamicMappingFilter.java:397)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:785)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:649)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:485)
at org.apache.catalina.core.ApplicationDispatcher.doDispatch(ApplicationDispatcher.java:454)
at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:350)
at org.apache.catalina.core.ApplicationDispatcherForward.custom(ApplicationDispatcherForward.java:253)
at org.apache.catalina.core.ApplicationDispatcherForward.status(ApplicationDispatcherForward.java:209)
at org.apache.catalina.core.ApplicationDispatcherForward.commit(ApplicationDispatcherForward.java:131)
at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:353)
... and again the same
는 요청이 실행됩니다 어떻게 (부품 만 중요하다 :
-> /badurl
-> DynamicMappingFilter
-> chain.doFilter
<- 404
* no Stripes ActionBean found for /badurl
<-
-> error.jsp
-> DynamicMappingFilter
-> chain.doFilter
-> error.jsp
-> /support/Error
-> DynamicMappingFilter
-> chain.doFilter
<- 404
* ErrorAction found
-> stripesDispatcher.service
-> ForwardResolution.execute (/WEB-INF/pages/test.jsp)
-> DynamicMappingFilter
-> chain.doFilter
-> /WEB-INF/pages/test.jsp
<-
<- OK
<-
? it does not return to ForwardResolution.execute
-> DynamicMappingFilter
-> chain.doFilter
-> error.jsp
and the loop starts again
누구입니까? test.jsp
으로 전달한 후 /error.jsp
요청이 있는지 확인하십시오. /error.jsp
을 요청하면 /support/Error
이 예상대로 작동합니다. /WEB-INF/pages/test.jsp
이 렌더링되고 요청이 완료됩니다.
편집 : error.jsp
이 /WEB-INF/pages/test
으로 직접 전달되는 경우 루프가 발생하지 않습니다. 그것이 일어날 때 줄무늬 동작을 통과 할 때입니다.
네, 필자가 말한 것처럼 -/error.jsp를 요청하면/support/Error가 예상대로 작동합니다. -/WEB-INF/pages/test.jsp가 렌더링되고 요청이 완료됩니다. '/ WEB-INF/pages/test.jsp'는 직접 요청할 수 없습니다. – piotrek