Aspectj:从HttpServlet响应中获取响应主体(HTML文本)



我正在尝试使用aspectJ来拦截HttpServlet.do*(请求、响应)并获取HTML文本(需要提取标题并可能将HTML存储到文件中)。

一旦我引用了HttpServlet响应,访问响应主体(html文本)的最佳方式是什么?

这是我的密码。

public aspect HttpRequestHandlerAspect {
pointcut getRequest(HttpServletRequest request, HttpServletResponse response) 
    : execution(protected * javax.servlet.http.HttpServlet.*(HttpServletRequest, HttpServletResponse))  
    && args(request, response);
  Object around(HttpServletRequest request, HttpServletResponse response) : getRequest(request, response) {
      Object ret = proceed(request, response);
              // now how do I access the HTML response text ( and get the title of the page) in here?
    }
}

这可能不是您问题的确切答案,但请尝试提取此处建议的响应:我如何读取HttpServletReponses输出流?您不必创建过滤器,只需创建一个传递给的HttpServlet ResponseWrapper

继续(请求,包装)。

Object around(HttpServletRequest request, HttpServletResponse response): getRequest(request, response) {
    MyHttpServletResponseWrapper wrapper = new MyHttpServletResponseWrapper(response);
    Object ret = proceed(request, wrapper);
    // The MyHttpServletReponseWrapper class captures everything and doesn't forward to the original stream, so we have to do this
    response.getWriter().write(wrapper.toString());
    // use wrapper.toString() to access response
}

最新更新