0

私は、aspectJ を使用して HttpServlet.do*(リクエスト、レスポンス) をインターセプトし、HTML テキストを取得しようとしています (タイトルを抽出し、おそらく html をファイルに保存する必要があります)。

HttpServletResponse への参照を取得したら、応答本文 (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?

    }
}
4

1 に答える 1

1

これはあなたの質問に対する正確な答えではないかもしれませんが、ここで提案されているように応答を抽出してみてください: How can I read an HttpServletReponses output stream? フィルターを作成する必要はありません。渡す HttpServletResponseWrapper だけです。

続行 (リクエスト、ラッパー)。

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
}
于 2013-08-05T19:40:01.743 に答える