Трябва да имам достъпен обект чрез приложението в моето JSP приложение. Обектът трябва да бъде инстанциран веднъж и след това същият екземпляр трябва да се използва за живота на приложението.
Аз съм просто начинаещ в jsp, така че видях 2 начина да постигна това:
Имам клас MyMenu, който е bean - има сетери/гетери и няма конструктор на аргументи.
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 страниците.
Какъв е предпочитаният начин и защо?