如何在web.xml或Guice servlet模块中排除/重定向某些url模式?

时间:2011-09-16 17:25:40

标签: java regex guice deployment-descriptor

我需要使用url模式"/*"为我的主应用程序提供服务,因此这个模式与Servlet匹配。 我遇到的问题是现在位于“/css/all.css”,“/ images /”等的所有css文件和图像都经过这个Servlet,这是不可取的。我希望直接访问这些文件。 处理这种情况的更好方法是什么?

注意:我正在使用Guice的Servlet模块来配置模式。

谢谢!

2 个答案:

答案 0 :(得分:5)

我们需要具体了解哪些请求应该路由到您的servlet,以便我们知道如何编写规则。我不知道是否a)除了CSS和图像之外的所有请求都应该发送到你的servlet,或者b)你的servlet应该只处理对特定文件夹/目录集的请求。您可能希望做以下两件事之一:

排除特定文件夹:

^/(?!css|images).*

或包含特定文件夹:

^/myservlet/.*

如果您在之前的问题中指出,您希望在模式*之后至少需要一个字符,则应将这些+符号更改为/

答案 1 :(得分:0)

这应该适合你:

让所有图片/ css等资源都通过default servlet。并制作这样的映射:

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.xml</url-pattern>
    <url-pattern>*.html</url-pattern>
    <url-pattern>*.png</url-pattern>
    <url-pattern>*.jpg</url-pattern>
    <url-pattern>*.gif</url-pattern>
    <url-pattern>*.js</url-pattern>
    <url-pattern>*.css</url-pattern>
</servlet-mapping>