2012-05-05 13 views
1

ウェブアプリケーションのページソースをすべてのアクションで取得するとします。javaのすべてのアクションに関する情報を取得する最善の方法は何ですか?

public void click() { 
    getPageSource(); 
} 

public void type() { 
    getPageSource(); 
} 

public void select() { 
    getPageSource(); 
} 

私はすべての関数でgetPageSource()を呼び出す必要がありますが、これを達成するためのより良い方法はありますか?

答えて

0

これらは通常、cross-cutting concernsと呼ばれ、オブジェクト指向フレームワークにはうまく適合しません。簡単な答えは、普通の古いJavaでは、実際にこれを行うより良い方法はないということです。

ありソリューションがありますが、それらは広く、私の経験で使用されていない、などを参照してください、あなたのWebアプリケーションフレームワークは、フィルタ、またはリスナー、またはオブザーバー、またはインターセプタ、またはいくつかの種類をサポートしている場合 http://www.eclipse.org/aspectj/

0

を参照してください。アスペクト指向プログラミング。あなたが記述した問題の種類は何度も解決されていますが、特定の開発環境では必ず解決策を見つけるでしょう。

2

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

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>