分享

用Servlet实现项目运行之前(初始化)加载一些配置数据

 Go_Ahead 2012-12-03
        从这个例子中,学习到很多,之前也遇到过这种问题可能是没有注意总结,呵呵,真有点惋惜~做一个笔记以提醒自己,下次遇到类似的需求可以借鉴此种方法,学习其中的优势。因为,之前做过一些JSP 、Servlet的项目,但只是在web.xml中配置一些基本的servlet信息,其它的一些关于servlet的配置没有使用过,其实它的其它配置还是很强大的,如果运用灵活在项目中就非常方便了。
        用Servlet实现在服务器启动的时候就去初始化一些数据,主要分为两步:
        1、建一个Servlet类,重写其init和destroy方法(注意,这里不需要重写doGet/doPost方法,因为我们并不是需要用servlet作请求)
                public class myInitializeServlet extends HttpServlet {
                          @Override
                           public void destroy() {
                                     // TODO Auto-generated method stub
                                      super.destroy();
                           }
                         
                          @Override
                           public void init() throws ServletException {
                                     //这里就在初始化的时候连接数据库
                                     FruitManager fruitManager = (FruitManager) ApplicationContextHolder
                                                          .getBean("fruitManager");
                                     List<Dict> fruitList = fruitManager.findAll();
                                     //这里要做到的一个目的是:把[ruitList]集合中的数据分类别先放在一个List集合中,然后再把此List放到Map里,以供在页中显示
                                     //如下所示fruitMap集合
                                     Map<String, List<Fruit>> fruitMap = null;
                                     if (null != fruitList && fruitList.size() > 0) {
                                                    fruitMap = new HashMap<String, List<Fruit>>();
                                                    for (Fruit fruit: fruitList) {
                                                          if (null != fruit) {
                                                                  String category = fruit.getCategory();
                                                                  //认真理解并在以后的程序中使用[不用那么麻烦,2步就搞定]
                                                                  List<Fruit> list = fruitMap.get(category);
                                                                  if (null == list) {
                                                                                list = new ArrayList<Fruit>();
                                                                  }
                                                                  list.add(fruit);
                                                               fruitMap.put(category, list);

                                                      }
                                                }
                                   }
                     //把查询出来的数据保存起来,然后在项目中用
                     getServletContext().setAttribute(Constants.APPLICATION_KEY_DICT_MAP,
                                                         dictMap);

                     super.init();
 }
}
 
      2、Servlet完成以后,就需要在web.xml中配置(让程序启动的时候就调用此servlet,初始化数据)--关于Servlet的配置有很多,可多查阅查阅相关文档
             <servlet>
                         <servlet-name>myInitializeServlet </servlet-name>
                         <servlet-class>com.system.util.myInitializeServlet </servlet-class>
                          <load-on-startup>1</load-on-startup><!--这里的配置表示:此Servlet第一个执行(当项目中有多个初始化的Servlet的时候)-->
             </servlet>
             <servlet-mapping>
                           <servlet-name>myInitializeServlet</servlet-name>
                           <url-pattern>/myInitializeServlet</url-pattern>
            </servlet-mapping>           
 
两步都完成以后,就可以启动程序,可以在日志里面看到初始化的数据信息。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多