通過反編譯跟蹤JSP頁面

 

  新學 struts.今日在跟蹤一個JSP頁面錯誤 錯誤提示如下:

View Code
at org.apache.struts.taglib.logic.CompareTagBase.condition(CompareTagBase.java:121)
 at org.apache.struts.taglib.logic.EqualTag.condition(EqualTag.java:43)
 at org.apache.struts.taglib.logic.ConditionalTagBase.doStartTag(ConditionalTagBase.java:160)
 at jsp_servlet._air._export._jobcosting.__pop_add_cost_mawb._jspService(__pop_add_cost_mawb.java:2783)
 at weblogic.servlet.jsp.JspBase.service(JspBase.java:35)
 at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
 at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
 at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
 at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:27)
 at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:43)
 at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378)
 at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
 at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
 at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
 at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:99)
 at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
 at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
 at org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp(SessionFixationProtectionFilter.java:53)
 at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:54)
 at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
 at org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)
 at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:54)
 at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
 at org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:92)
 at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:54)
 at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
 at org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:278)
 at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:54)
 at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
 at org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:90)
 at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:54)
 at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
 at org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:194)
 at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:54)
 at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
 at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:176)
 at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
 at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:168)
 at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:43)
 at org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleSignOutFilter.java:100)
 at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:43)
 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
 at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:43)
 at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:503)
 at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:251)
 at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1084)
 at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:295)
 at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:396)
 at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:348)
 at com.kln.sdk.KLNRequestProcessor.process(KLNRequestProcessor.java:410)
 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1914)
 at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:450)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:821)
 at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
 at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
 at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
 at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:27)
 at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:43)
 at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378)
 at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
 at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
 at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
 at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
 at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
 at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
 at org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp(SessionFixationProtectionFilter.java:68)
 at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:54)
 at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
 at org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)
 at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:54)
 at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
 at org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:92)
 at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:54)
 at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
 at org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:278)
 at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:54)
 at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
 at org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:90)
 at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:54)
 at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
 at org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
 at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:54)
 at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
 at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:176)
 at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
 at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:168)
 at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:43)
 at org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleSignOutFilter.java:100)
 at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:43)
 at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:97)
 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
 at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:43)
 at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3496)
 at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
 at weblogic.security.service.SecurityManager.runAs(Unknown Source)
 at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180)
 at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086)
 at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406)
 at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
 at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

 

  這個頁面總共有3000多行,而且是算年代比較久遠的代碼.裏面參數眾多,逐個慢慢排除的話,頗為不智.
通過

 at org.apache.struts.taglib.logic.CompareTagBase.condition(CompareTagBase.java:121)
 at org.apache.struts.taglib.logic.EqualTag.condition(EqualTag.java:43)

  大致判斷出來是某個<logic:equal>的標籤出問題

  在http://www.cnblogs.com/weeky/archive/2012/11/14/JSP.html 這個篇中有介紹JSP的基本原理.出問題的JSP頁面是pop_add_cost_mawb.JSP.它對應的java類就是_pop_add_cost_mawb.class 因為我用的是weblogic 所以我們可以在weblogic的目錄下 搜索_pop_add_cost_mawb.class .

 

  

  找到它然後用反編譯工具打開(我用的是JAVA Decompiler 下載路徑http://download.csdn.net/detail/sadtime200/4802594).從上面錯誤堆棧中看到出問題的在2783行

  如此在結合JSP頁面的源碼 找出有問題的Tag.下面的操作就不在敘述.

 

 

posted @ 2012-11-23 17:06  刀口舔蜜  阅读(862)  评论(0编辑  收藏  举报