在WebLogic 12.1.3上部署应用程序时,出现“找不到Struts调度程序”错误

在尝试在WebLogic 12.1.3上运行我的应用程序时出现以下错误。

Struts调度程序找不到。 这通常是由于使用没有关联filter的Struts标签造成的。 Struts标签只有在请求通过它的servletfilter时才可用,它初始化这个标签所需的Struts调度器。

这是我的web.xml文件:

 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name>SybUI</display-name> <!-- location of log4j config file --> <!-- <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/classes/log4j2.xml</param-value> </context-param> --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.util.Log4jConfigListener </listener-class> </listener> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <listener> <listener-class>org.springframework.web.context.request.RequestContextListener </listener-class> </listener> <!-- <filter> <filter-name>SessionFilter</filter-name> <filter-class>com.syb.core.filter.SessionFilter</filter-class> <init-param> <param-name>avoid-urls</param-name> <param-value>/timeOut,/pages/timeOut.jsp,/test,/pages/test.jsp,/testMsg.action,/pages/invalidToken.jsp,/login.jsp,/logoutUser,/loginUser.action, /common/postloginheader.html,/js/jquery.mobile.custom.min.js,http://img.dovov.complus_cyn_40.png,/js/custom.js,/css/bootstrap.min.css,/css/aos-style.css, /css/style.css,/js/bootstrap.min.js,/js/modernizr.min.js,/css/custom.css,/js/jquery.validate.min.js,/js/respond.min.js,/js/session1.js,/js/aos-custom.js, http://img.dovov.comwres009899.png,http://img.dovov.comfdic.png,http://img.dovov.comheader_1024.jpg,http://img.dovov.comblue-arrow.png </param-value> </init-param> </filter> <filter-mapping> <filter-name>SessionFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>--> <!--<session-config> <session-timeout>10</session-timeout> </session-config> --> <welcome-file-list> <welcome-file>/jsp/ao/ApplicationStartUp.jsp</welcome-file> </welcome-file-list> <error-page> <error-code>404</error-code> <location>/jsp/common/error/Error-PageNotFound.jsp</location> </error-page> <error-page> <exception-type>java.lang.Throwable</exception-type> <location>/jsp/common/error/Error-PageNotFound.jsp</location> </error-page> 

如果您在JSP页面中使用了在welcome-file-list列出的Struts标签,则应该删除它。

web.xml welcome-file-list

web-appwelcome-file-list元素用于定义一个欢迎文件列表。 它的子元素是welcome-file ,用于定义欢迎文件。

如果不指定任何文件名,则欢迎文件是由服务器自动调用的文件。

因此没有关联的filter。 将关联的filter定义为struts2映射到/* 。 这意味着它应该服务于所有请求,除非欢迎文件由Web服务器提供。

通常情况下,您不应该直接访问JSP页面,而无需事先执行操作,并返回dispatcher的types结果。 在这个结果中,您可以指定要访问的JSP文件的位置。

如果您导航到Web内容层次结构的文件夹(例如,如果您没有在URL中使用.action扩展名,并且里面有一个welcome-file ,则welcome-file-list文件由Web容器处理)而且没有任何操作映射到该url。 在这种情况下,你不能在welcome-file使用struts标签,因为你正在试图运行它而没有关联filter,或者struts2filter已经处理了另一个请求。

你可能在JSP里面使用Struts标签

 /jsp/ao/ApplicationStartUp.jsp 

但是没有通过一个行动就被调用了。

要么通过Action,要么从直接调用的JSP中删除Struts标记。

对于一个受欢迎的文件,我会跟随后者。