JSP アプリケーションでアプリケーションを介してオブジェクトを使用できるようにする必要があります。オブジェクトは 1 回インスタンス化する必要があり、アプリケーションの存続期間中は同じインスタンスを使用する必要があります。
私はjspの初心者なので、これを達成するための2つの方法を見てきました:
私は Bean であるクラス MyMenu を持っています - セッター/ゲッターを持ち、引数コンストラクターはありません。
1) web.xml でリスナーを使用して、次のようなクラスをセットアップします。
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class Config implements ServletContextListener {
public void contextInitialized(ServletContextEvent event) {
// Do stuff during webapp's startup.
MyMenu appmenu = new MyMenu();
event.getServletContext().setAttribute("appmenu", appmenu);
}
public void contextDestroyed(ServletContextEvent event) {
// Do stuff during webapp's shutdown.
MyMenu appmenu = (MyMenu)event.getServletContext().getAttribute("appmenu");
appmenu.clear();
}
}
2) 次のように jsp:useBean を使用してリスナーを使用しない:
<jsp:useBean id="menu" class="net.myjsp1.MyMenu"
scope="application" />
どちらも ${menu} または ${appmenu} オブジェクトを JSP ページで使用できるようにします。
jspページのコードを見ると、2番目の方法で「メニュー」オブジェクトがどこから来たのかがより明確になると思います。
好ましい方法とその理由は何ですか?