我需要在我的JSP应用程序中通过应用程序提供一个对象。对象必须实例化一次,然后在应用程序的生命周期中使用相同的实例。
我只是jsp的初学者,所以我已经看到了两种实现这一目标的方法:
我有一个MyMenu类,它是一个bean -有setter/getter,没有参数构造函数。
1)在web.xml中使用listener设置一个类,如下所示:
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页面中的代码时,第二种方法使"menu“对象的来源变得更加清晰。
首选的方式是什么?为什么?
发布于 2012-11-07 06:17:41
像useBean这样的JSP操作已经过时了,不应该再使用了。JSP的角色是视图,它从控制器准备的数据生成标记。创建菜单不是它的责任。应该首选侦听器方法。
https://stackoverflow.com/questions/13253847
复制相似问题