【问题标题】:ServletFilter Not Called on AppEngineApp Engine 上未调用 Servlet 过滤器
【发布时间】:2023-03-11 10:12:02
【问题描述】:

我正在使用 Guice 设置过滤器来处理 AppEngine 上的所有请求。 Guice 设置如下:

public void configureServlets() {
    filter("*").through(RedirectFilter.class);
}

过滤器:

@Singleton
public class RedirectFilter implements Filter {
    private static final Logger logger = Logger.getLogger(RedirectFilter.class.getName());

    @Override
    public void doFilter(ServletRequest req, ServletResponse res,
            FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;

        URL url = new URL(request.getRequestURL().toString());
        String domain = url.getHost();

        logger.info("host: " + domain + " path: " + url.getPath());

        if (!domain.startsWith("www")) {
            if (domain.startsWith("en")) {
                response.sendRedirect("http://www.mysite.com/en" + url.getPath());
            }
        }
        chain.doFilter(req, res);
    }
    ...
}

但是,没有针对任何请求调用过滤器。

关于为什么它可能不被调用的任何想法?

更新:过滤器似乎是用http://en.mysite.com/xxx等URL调用的,但不是http://en.mysite.com

【问题讨论】:

    标签: java google-app-engine guice servlet-filters


    【解决方案1】:

    来自AppEngine documentation on static files

    在很多情况下,您希望将静态文件直接提供给 网络浏览器。图片、CSS 样式表、JavaScript 代码、电影和 Flash 动画通常都直接提供给浏览器。为了 效率,App Engine 从不同的服务器提供静态文件,而不是 那些调用 servlet。

    默认情况下,App Engine 将 WAR 中的所有文件作为静态文件提供 除了 JSP 和 WEB-INF/ 中的文件之外的文件。对一个 URL 的任何请求 路径匹配一个静态文件,将文件直接提供给 浏览器——即使路径也匹配 servlet 或过滤器映射。你 可以配置 App Engine 将哪些文件视为静态文件,使用 appengine-web.xml 文件。

    有关此主题的更多信息at this link

    要在请求静态 HTML 文件时调用您的过滤器,请将以下内容放入您的 appengine-web.xml 文件中:

    <static-files>
      <include path="/**.png" />
      <!-- other includes go here -->
      <exclude path="/**.html" />
    </static-files>
    

    有关 AppEngine 静态文件配置的更多信息,请访问 this link

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-15
      • 1970-01-01
      • 2015-08-23
      • 1970-01-01
      • 2015-12-10
      • 2020-12-28
      • 1970-01-01
      • 2011-12-06
      相关资源
      最近更新 更多