tomcat不提供静态文件

3lxsmp7m  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(342)

在这件事上我已经穷途末路了。我试图得到一个超级简单的webapp了,我似乎不能让tomcat不404静态文件。
我正在使用gradle tomcat插件和tomcat版本7.0.39
我的html文件位于 hey-world/src/main/webapp/index.html 我的 web.xml 看起来像这样:

<servlet>
    <servlet-name>Resteasy</servlet-name>
    <servlet-class>
        org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
    </servlet-class>
    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>HeyWorldApplication</param-value>
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/static/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>Resteasy</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

所以我想这个设置会 localhost:8080/hey-world/static/index.html 但每次都是404。这是gradle tomcat插件中的一些约定的问题吗?

gjmwrych

gjmwrych1#

web.xml/servlet-mapping中使用的url模式通常有点简单化。我认为在您的例子中,resteasy的/模式将作为一个包罗万象的模式来工作,因此其他Map都不重要。
为了进行调试,我建议您完全删除resteasyservlet,并查看是否可以使用Map从自定义url为静态文件提供服务器。如果可行,请重新启用resteasy,但使用不同的url模式(例如/rest/
)。
如果可以的话,那么一切都很好,只是/*的urlMap阻止了其他任何东西的工作。
最简单的解决方案可能是按照默认值(无Map)为静态文件提供服务器,并从另一个url提供rest内容。
或者使用两个web应用程序。一个是context root“/静态”,一个是context root“/”。

相关问题