我正在尝试使用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
}