为所有页面创建监听器

Create a listener for all pages

我必须使用一些 监听器 class 来监听所有页面。根据url,我必须拆分它并获取一些信息。

例如:

x.domain.com/$member

我想通过url获取成员名称,获取以下bean并检索一些数据库信息。

所以,我创建了一个 PhaseListener 来完成这项工作,但并不是每次我需要它时都会调用它,例如在出现 404 错误的情况下。

我该如何进行?

非常感谢:)

PS : 我正在使用 Glassfish 4.1。

使用映射到正常和错误页面请求的 servlet filter

<filter-mapping>
    <filter-name>yourFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>ERROR</dispatcher>
</filter-mapping>

在过滤器内部,您可以通过是否存在以 RequestDispatcher#ERROR_REQUEST_URI 键控的请求属性来检查它是否在错误页面上被触发。

String errorRequestURI = (String) request.getAttribute(RequestDispatcher.ERROR_REQUEST_URI);

if (errorRequestURI != null) {
    // Error page was triggered on the given URI.
}