我将所有请求映射到/ *到特定的servlet.
此配置隐藏了我的静态内容.
如何允许访问特定文件(例如crossdomain.xml)?
解决方法:
当您将/ *映射到特定的servlet时,所有请求都将转发到该servlet,除非您提供对另一个servlet的更明确的映射.
也就是说,如果您将/ *映射到ServletA,并将/ static / *映射到ServletB,则将调用以下Servlet.
http://localhost:8080/abc.jpg -> ServletA
http://localhost:8080/static/abc.jpg -> ServletB
http://localhost:8080/xyz/abc.jpg -> ServletA
因此,您必须采取的一种方法是编写一个Servlet来处理静态内容,该静态内容将抓取文件并将其作为响应返回.您可以将该servlet映射到以/ static / *之类的前缀.这就要求对静态文件的所有URL引用都必须更新为包含此“ / static”部分.
如果那对您不可行,则可能您可以使用相同的servlet,但如下所示映射到多个URL模式(可能通过扩展).
<servlet>
<servlet-name>static-servlet</servlet-name>
<servlet-class>xxx.yyy.StaticServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>static-servlet</servlet-name>
<url-pattern>*.xml</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>static-servlet</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
如果您希望将其细化到每个文件的级别,则也可以将servlet映射到文件URL.