java-具有默认servlet时如何允许访问静态内容

我将所有请求映射到/ *到特定的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.

上一篇:java-如何参数化Web应用程序(而不是servlet)的初始化


下一篇:java-在servlet之间共享配置参数