在java web项目中,最常用的就是使用listener来实现初始化了。
下面是实现代码
1 public class StartupListener extends ContextLoaderListener implements
2 ServletContextListener {
3
4 private Logger logger = LoggerFactory.getLogger(getClass());
5
6 /**
7 * web容器启动时调用
8 */
9 public void contextInitialized(ServletContextEvent event) {
10 logger.info("application servlet initialized");
11
12 ServletContext context = event.getServletContext();
13
14 //从spring中获得bean,由这个bean进行相应操作,结果存到context中
15 ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(context);
16 ProductClassManager productClassManager = (ProductClassManager)ctx.getBean("productClassManager");
17
18 String prodClassTreeJson = productClassManager.generateProdClassTree();
19
20 context.setAttribute(Constants.PRODUCT_CLASS_JSON_STRING, prodClassTreeJson);
21 }
22
23
24 /**
25 * web容器销毁时调用
26 */
27 public void contextDestroyed(ServletContextEvent event){
28 logger.info("application servlet destroyed");
29 }
30
31 }
这里面还调用 了spring的bean,所以listener要配置在spring的那个listener下面,否则可能出错。
这样我们就可以在系统启动的时候将一些常用的数据及配置信息都放到内存(即serlvetContext里面),在struts2中,我们可以通过这种方式获得
ServletContext context = ServletActionContext.getServletContext();
然后就可以使用存放在context里面的数据了。
就这么简单。