0

使用 google guice,我希望所有服务器请求 (/*) 都流向我的 servlet 文件,静态内容除外。如果需要,我可以将静态内容放入 /static 文件夹。我只需要接收到根的 serverlet 请求。

这是有效的代码:

//Holds @GET @POST, etc
bind(MyTemplateResource1.class);
bind(MyTemplateResource2.class);

// this serves MyTemplateResource1..2... and any other servlet files
serve("/server/*").with(GuiceContainer.class); 

// this serves the static content
serveRegex("/(images|css|html)/.*").with(GuiceContainer.class); 

但是,如果我取出 /server,我的静态内容也会被路由到 MyTemplateResource。例如:

serve("/*").with(GuiceContainer.class); 

即使 servlet url 可以从根目录开始,在将 Servlet 内容路由到一个或多个 Resource 文件时,允许所有静态内容自由流动的最佳方法是什么?

4

1 回答 1

0

我有一个类似的问题(我实际上是在谷歌上搜索一个正则表达式掩码并找到了你的问题),所以基本上:

  1. 为参数创建映射
  2. 添加 WebPageContentRegex 的引用,并添加静态文件 regexps
  3. 确保您使用过滤器而不是服务,并通过地图

在代码中,它是这样工作的:

    bind(HostController.class, LoginController.class, ConfirmInviteController.class, LogoutController.class, ResetPasswordController.class, ChangePasswordController.class);

    Map<String, String> initParams = new TreeMap<String, String>();

    initParams.put("com.sun.jersey.config.property.WebPageContentRegex", "/.*\\.(jpg|ico|png|gif|html|id|txt|css|js)");

    filter("/*").through(GuiceContainer.class, initParams);

希望有帮助

于 2013-02-04T17:14:06.620 回答