gpt4 book ai didi

java - useBean 与 ServletContextListener

转载 作者:行者123 更新时间:2023-12-01 05:02:07 27 4
gpt4 key购买 nike

我需要有一个可通过 JSP 应用程序中的应用程序使用的对象。该对象必须实例化一次,然后在应用程序的生命周期中应使用同一个实例。

我只是 jsp 的初学者,所以我看到了两种实现此目的的方法:

我有一个 MyMenu 类,它是一个 bean - 有 setter/getters 并且没有参数构造函数。

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 页面中的代码时,第二种方法可以更清楚地显示“菜单”对象的来源。

首选方式是什么?为什么?

最佳答案

像 useBean 这样的 JSP 操作已经是过去的事情了,不应该再使用了。 JSP 的作用是作为一个 View ,它根据 Controller 准备的数据生成标记。创建菜单不是它的责任。应首选监听器方法。

关于java - useBean 与 ServletContextListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13253847/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com