Eclipseとは無関係

 プラグインというとEclipseの同名の仕組みが有名ですが、このページでは無関係です。


Struts PlugIn

 Strutsにはプラグイン(PlugIn)という仕組みがあり、 ServletContextやActionServletに追加の設定情報を持たせるのに使います。 同様の目的には、サーブレットのリスナー(Listener)機構を使うこともでき、 どちらがよいというわけではないと思いますが、 Strutsの動作に依存するものであれば、プラグインを使う方が分かりやすいのかと思います。

 独自のプラグインを作成するには、org.apache.struts.action.PlugIn インターフェースを実装したクラスを1個作るだけです。 PlugInインターフェースでは、init、destroyの2つのメソッドが定義されているので、 それらを実装します。

package shiten.struts;

import javax.servlet.ServletException;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.action.PlugIn;
import org.apache.struts.config.ModuleConfig;

public class TestPlugIn implements PlugIn {
    private String encoding = null;

    public void setEncoding(String encoding){
        this.encoding = encoding;
    }

    public String getEncoding(){
        return encoding;
    }

    public void init(ActionServlet servlet, ModuleConfig config) throws ServletException {
        System.out.println("TestPlugIn is initialized. encoding=" + encoding);
        //ServletContext context = servlet.getServletContext();
        //context.setAttribute("encoding", encoding);
    }

    public void destroy() {
        System.out.println("TestPlugIn is destroyed. encoding=" + encoding);
    }
}

ちなみにencodingというのは仮のプロパティ名です。 一般のアプリケーションでありがちな名前なので、仮に使ってみただけで、 プラグインの動作に何か関係があるというわけではありません。

<plug-in className="shiten.struts.TestPlugIn">
    <set-property property="encoding" value="default2" />
</plug-in>

struts-config.xmlには上のように書きます。 property=で指定するプロパティ名が、 PlugIn実装クラスのアクセサ・メソッドに対応します。 つまり、property=属性の値が "encoding" だと、 PlugIn実装クラスの初期化時に "setEncoding" メソッドがコールされます。

Server Side Java Index Top

(first uploaded 2004/06/05 last updated (not ever), URANO398)