1

たとえば、すべてのアクションで Web アプリケーションのページ ソースをキャプチャするとします。

public void click() {
    getPageSource();
}

public void type() {
    getPageSource();
}

public void select() {
    getPageSource();
}

すべての関数で getPageSource() を呼び出す必要がありますが、これを実現するためのより適切な方法はありますか?

4

3 に答える 3

2

Java Web アプリケーションで作業している場合は、フィルタを作成して、アプリケーションで行われたすべてのリクエストをインターセプトする必要があります。以下にサンプルを示します。

Java クラス

package edu.home;

import javax.servlet.*;

public class MyFilter implements Filter {

    public void init(FilterConfig filterConfig) throws ServletException {
    }

    public void destroy() {
    }

    public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain filterChain) throws IOException, ServletException {
        System.out.println("New request in the application!");
        //here you can add getPageSource() and send request/response
    }
}

web.xml でフィルターを構成する

<!--declare the filter -->
<filter>
    <filter-name>MyFilter</filter-name>
    <filter-class>edu.home.FISesionExpirada</filter-class>
</filter>
<!-- declare where the filter should be used -->
<filter-mapping>
    <filter-name>MyFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
</filter-mapping>
于 2012-05-05T21:00:16.630 に答える
0

このようなことは通常、横断的関心事と呼ばれ、オブジェクト指向のフレームワークにうまく適合しません。簡単な答えは、単純な古い Java では、これを行うためのより良い方法がないということです。

解決策はありますが、私の経験では広く使用されていません。たとえば、 http://www.eclipse.org/aspectj/を参照してください。

于 2012-05-05T20:50:39.693 に答える
0

Web アプリケーション フレームワークがフィルター、リスナー、オブザーバー、インターセプター、またはある種のアスペクト指向プログラミングをサポートしているかどうかを確認してください。あなたが説明した種類の問題は何度も解決されています。特定の開発環境では解決策が確実に見つかります。

于 2012-05-05T20:52:36.437 に答える