0

我们正在尝试获取服务器名称、会话 ID 浏览器信息...以将信息保存在 MDC 中以进行日志记录。

为此,我们正在尝试在RequestCycleof 中onBeginRequest()添加一个侦听器IRequestCycleListener。我添加了一个类,如下所示:

public class RequestRListener implements IRequestCycleListener
{
  @Override
  public void onBeginRequest(RequestCycle cycle)
  {
      //TODO 
  } 
}

现在在哪里添加侦听器以获取上述信息?

4

1 回答 1

3

在您的扩展类WebApplication或函数中AuthenticatedWebApplicationinit()

您需要获取请求周期侦听器并将新侦听器添加到列表中。

因此,如果您想输出请求的 URI,您可以执行以下操作:

getRequestCycleListeners().add( 
new AbstractRequestCycleListener()
{       
    public void onBeginRequest(RequestCycle cycle) 
    {                   
        if( cycle.getRequest().getContainerRequest() instanceof HttpServletRequest )
        {
            HttpServletRequest containerRequest = 
                (HttpServletRequest)cycle.getRequest().getContainerRequest();
            System.out.println("URI="+containerRequest.getRequestURI() );
        }
    };
}
);

获取浏览器信息几乎可以在任何地方完成,不一定只是在请求中。

String userAgent = WebSession.get().getClientInfo().getUserAgent();
于 2013-05-20T13:11:57.100 回答