通常JavaWeb項目在第一次啟動時我們需要做一些初始化工作,比如:初始化一個管理員的登錄賬戶和密碼,配置緩存、定時任務等,這些操作可以通過手工修改數據庫完成,但是容易出錯且繁瑣,而且也很麻煩。如果這個java web 項目今天部署在這臺機器上,你又要手動添加初始化的賬戶,明天部署到另一臺機器上你又得重新錄入初始化信息,可想而知老是做著同樣的事情是非常無聊的,也很麻煩。
javaEE提供了自定義啟動初始化的功能-----servlet 可以去監聽服務器在系統啟動時自動運行監聽器內的代碼完成初始化工作。
1)定義一直執行初始化登陸賬號的servlet類,如: Admin.java
package com.init;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import javax.servlet.http.HttpServlet;import org.sPRingframework.web.context.WebapplicationContext;import org.springframework.web.context.support.WebApplicationContextUtils;import com.dao.impl.MySQLDao;public class Admin extends HttpServlet implements ServletContextListener { /** * */ private static final long serialVersionUID = 4167420593469044105L;public void contextDestroyed(ServletContextEvent sce) {System.out.println("這個函數內的代碼將在服務器關閉時執行"); } public void contextInitialized(ServletContextEvent sce) {System.out.println("這個函數內的代碼將在服務器啟動時執行");/** * 獲取spring配置信息,然后得到配置文件中配置的對象 */WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext()); /** * 獲取spring 配置文件的bean mySqlDao * spring配置文件中有<bean id=mySqlDao” class=com.dao.mySqlDao”/> * 的配置信息 * */MySqlDao mySqlDao =(MySqlDao)applicationContext.getBean("mySqlDao");/** * 實例化一個admin */ Administrator admin=new Administrator(); admin.setUsername("admin"); admin.setPassWord("password"); //保存 mySqlDao.save(admin);}}
2)在web.xml中配置監聽器,服務器在系統啟動時自動運行監聽器內的代碼完成初始化
<listener><listener-class>com.init.Admin</listener-class>
</listener
新聞熱點
疑難解答