【问题标题】:How to exclude/redirect certain url pattern in web.xml or Guice servlet module?如何在 web.xml 或 Guice servlet 模块中排除/重定向某些 url 模式?
【发布时间】:2011-09-16 17:25:39
【问题描述】:

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

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

谢谢!

【问题讨论】:

标签: java regex guice deployment-descriptor


【解决方案1】:

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

排除特定文件夹:

^/(?!css|images).*

或包含特定文件夹:

^/myservlet/.*

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

【讨论】:

  • 谢谢!我试图使用过滤器来实现这一点,但这更优雅!
  • 请注意,这仅适用于 Guice,不适用于问题标题中提到的 web.xml。 web.xml url-pattern 仅支持简单路径和扩展映射通配符:/*.*
【解决方案2】:

这应该适合你:

让你所有的图片/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>

【讨论】:

    猜你喜欢
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    • 2022-10-19
    • 1970-01-01
    • 2010-10-04
    • 2021-06-15
    • 1970-01-01
    • 2015-12-04
    相关资源
    最近更新 更多