我必须使用一些监听器类来监听所有页面。根据网址,我必须拆分并得到一些信息。
例如:
x.domain.com/$member
我想通过url获取成员名称,获取以下bean并检索一些数据库信息。
所以,我创建了一个 PhaseListener 来完成这项工作,但是每次我需要它时都不会调用它,例如404错误。
我该怎么办?
非常感谢:)
PS:我正在使用Glassfish 4.1。
答案 0 :(得分:2)
使用映射在正常和错误页面请求上的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.
}