在我的vaadin项目中,我希望能够直接访问图像作为静态资源。当我将图像放在SRC/Main/WebApp/vaadin/themes/...的下方时,它起作用。如果图像位于src/main/webapp/images中?到目前为止,我该怎么办才能访问图像,我已经看到我可以将此Servlet映射放在我的Web.xml中:
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/images/*</url-pattern>
</servlet-mapping>
不幸的是,它不起作用,我得到了这个错误:
Caused by: com.ibm.ws.exception.RuntimeWarning: SRVE0303E: Servlet name for the servlet mapping /images/* could not be found.
我的应用程序正在WebSphere上运行,因此我还尝试了SipperFileservlet作为Servlet-name:
<servlet-mapping>
<servlet-name>SimpleFileServlet</servlet-name>
<url-pattern>/images/*</url-pattern>
</servlet-mapping>
仍然导致与上述相同的错误。
任何帮助都将受到赞赏!
更新
其他servlet mappings:
<servlet-mapping>
<servlet-name>QuarzServlet</servlet-name>
<url-pattern>/QuarzServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>RunJUnitServlet</servlet-name>
<url-pattern>/RunJUnitServlet</url-pattern>
</servlet-mapping>
尝试通过URL打开WebBrowser中的图像(位于SRC/Main/WebApp/images/Images/)时,它只是加载Vaadin应用程序。当我打开使用图像的页面时,Firebug告诉我找不到图像。
从您的更新中,似乎vaadin servlet映射到/*(或使用向静态文件映射到vaadin servlet的url pattern)。由于Vaadin Servlet的映射与请求URI匹配,因此WebSphere将为Vaadin Servlet提供服务,这是可能尝试使用静态文件的人。该请求将永远不会浏览WebSphere文件服务机制。您可以验证您的vaadin servlet,以查看是否具有如下的注释:
@WebServlet(value = "/*")
如果是这种情况,并且您仍然希望WebSphere提供静态文件,则需要修改此映射以更具体,并让静态文件的请求通过WebSphere文件服务机制。您可以在此处找到有关如何设置Vaadin Servlet的其他信息:
在另外,这个stackoverflow问题对此问题有一些可能的解决方案:
如何从vaadin/spring应用程序中提供静态资源?