url 重写 - 如何使用正则表达式将所有请求路由到 servlet *除了*静态文件"/(images|css|jsp|html)/.*"



使用google guice,我想让所有服务器请求(/*)流到我的servlet文件除了静态内容。如果需要,我很擅长将静态内容放入/static文件夹。我只需要挑选到根服务器的servlet请求。

下面是有效的代码:
//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内容路由到一个或多个资源文件时,即使Servlet url可以从根目录开始,允许所有静态内容自由流动的最好方法是什么?

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

  1. 创建参数映射
  2. 为WebPageContentRegex添加一个引用,并添加静态文件regexp
  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);

希望有帮助

相关内容

最新更新