代码之家  ›  专栏  ›  技术社区  ›  Andy Dennie

如何将过滤器与谷歌应用引擎app.yaml中的servlet相关联?

  •  2
  • Andy Dennie  · 技术社区  · 11 年前

    对于我的应用程序引擎应用程序,我想为url模式分配一个servlet,但也要设置Objectify过滤器,如下所述: https://code.google.com/p/objectify-appengine/wiki/Setup .

    在我的应用程序中,我有

    handlers:
      - url: /v1/*
        name: v1
        servlet: org.restlet.ext.servlet.ServerServlet
        ...etc...
    

    它将请求路由到我的servlet很好,但我不知道如何安排Objectify过滤器在servlet处理的相同请求上运行。

    这个 GAE docs 比如“过滤器是一个类,它像servlet一样处理请求,但可能允许使用其他过滤器或servlet继续处理请求。”

    好的,很好,这就是我想要的。但这些文档也表示:“一个URL映射可以包括一个过滤器或一个servlet,但不能同时包括两者。”

    那么…我该怎么做呢?

    1 回复  |  直到 11 年前
        1
  •  3
  •   Peter Knego    11 年前

    过滤器在servlet之前运行,并且它们不是独占的。通常,对于一个请求,所有过滤器都会运行,然后为给定的Url选择并执行一个servlet。

    在您的yaml中创建一个新的筛选器部分:

    handlers:
      - url: /v1/*
        name: v1
        servlet: org.restlet.ext.servlet.ServerServlet
      - url: /*    
        name: ObjectifyFilter
        filter: com.googlecode.objectify.ObjectifyFilter
    

    注意:最好对所有请求运行ObjectifyFilter(网址: /* )只是为了确保objectify总是初始化的。