我试图让Struts2 webapp和Jetty发挥得很好。由于某些原因,Struts拦截器和FilterDispatcher已配置,我的欢迎文件永远不会被拾取我总是遇到404.我的webapp中有index.jsp但由于某些原因访问http://localhost/webapp时我总是遇到404。
现在我已经在struts.xml中将default-action-ref设置为我的index.jsp,但这意味着即使对于真正不存在的文件,用户也会被重定向到索引页面。有没有更清洁的方法来确保Jetty获取欢迎文件?如果使用struts FilterDispatcher 不,欢迎文件会被拾取,所以我认为它与struts的配置方式有关?
web.xml是一个相当标准的web.xml,没有任何花哨的东西(?!)。正如我之前所说,我怀疑它与struts.xml配置有关。
struts.xml中:
<constant name="struts.serve.static" value="true"/>
<constant name="struts.codebehind.pathPrefix" value="/WEB-INF/pages/"/>
<constant name="struts.configuration.classpath.defaultParentPackage" value="cms-default"/>
<constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory"/>
<constant name="struts.custom.i18n.resources" value="cms-messages,cms-version"/>
<constant name="struts.multipart.maxSize" value="31457280"/>
<package name="cms-default" extends="codebehind-default">
<interceptors>
<interceptor-stack name="cmsStack">
<interceptor-ref name="alias" />
<interceptor-ref name="params" />
<interceptor-ref name="servletConfig" />
<interceptor-ref name="prepare" />
<interceptor-ref name="i18n" />
<interceptor-ref name="chain" />
<interceptor-ref name="modelDriven" />
<interceptor-ref name="fileUpload" />
<interceptor-ref name="checkbox" />
<interceptor-ref name="staticParams" />
<interceptor-ref name="conversionError" />
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="cmsStack" />
<default-action-ref name="index"></default-action-ref>
<global-results>
<result name="redirectToUrl" type="redirect">${redirectedToURL}</result>
</global-results>
<action name="index">
<result>/index.jsp</result>
</action>
</package>
<constant name="struts.serve.static" value="true"/>
<constant name="struts.codebehind.pathPrefix" value="/WEB-INF/pages/"/>
<constant name="struts.configuration.classpath.defaultParentPackage" value="cms-default"/>
<constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory"/>
<constant name="struts.custom.i18n.resources" value="cms-messages,cms-version"/>
<constant name="struts.multipart.maxSize" value="31457280"/>
<package name="cms-default" extends="codebehind-default">
<interceptors>
<interceptor-stack name="cmsStack">
<interceptor-ref name="alias" />
<interceptor-ref name="params" />
<interceptor-ref name="servletConfig" />
<interceptor-ref name="prepare" />
<interceptor-ref name="i18n" />
<interceptor-ref name="chain" />
<interceptor-ref name="modelDriven" />
<interceptor-ref name="fileUpload" />
<interceptor-ref name="checkbox" />
<interceptor-ref name="staticParams" />
<interceptor-ref name="conversionError" />
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="cmsStack" />
<default-action-ref name="index"></default-action-ref>
<global-results>
<result name="redirectToUrl" type="redirect">${redirectedToURL}</result>
</global-results>
<action name="index">
<result>/index.jsp</result>
</action>
</package>
FWIW,我遇到的问题与this电子邮件主题中提到的几乎相同。
已更新了解有关设置的详细信息。是的,webapp这个名字只是一个例子:)