快生活 - 生活常识大全

用实现项目运行之前初始化加载一些


  从这个例子中,学习到很多,之前也遇到过这种问题可能是没有注意总结,呵呵,真有点惋惜~做一个笔记以提醒自己,下次遇到类似的需求可以借鉴此种方法,学习其中的优势。因为,之前做过一些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();</dict>
  //这里要做到的一个目的是:把[ruitList]集合中的数据分类别先放在一个List集合中,然后再把此List放到Map里,以供在页中显示
  //如下所示fruitMap集合
  Map&lt;String, List<fruit>&gt; fruitMap = null;</fruit>
  if (null != fruitList &amp;&amp; fruitList.size() &gt; 0) {
  fruitMap = new HashMap&lt;String, List<fruit>&gt;();</fruit>
  for (Fruit fruit: fruitList) {
  if (null != fruit) {
  String category = fruit.getCategory();
  //认真理解并在以后的程序中使用[不用那么麻烦,2步就搞定]
  List<fruit>list = fruitMap.get(category);</fruit>
  if (null == list) {
  list = new ArrayList<fruit>();</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>
  <servlet-name>myInitializeServlet</servlet-name>
  <servlet-class>com.system.util.myInitializeServlet</servlet-class>
  <load-on-startup>1</load-on-startup><!--这里的配置表示:此Servlet第一个执行(当项目中有多个初始化的Servlet的时候)-->
  <servlet-mapping></servlet-mapping>
  <servlet-name>myInitializeServlet</servlet-name>
  <url-pattern>/myInitializeServlet</url-pattern>
  两步都完成以后,就可以启动程序,可以在日志里面看到初始化的数据信息。
网站目录投稿:山彤