现在遇到一个问题,希望高手能指点迷津。在web应用启动时,执行一个class,该class读取DB中的某个资源表,把资源表设置到application中。不知道该如何实现?
难点一:web应用启动时如何执行某个类? 在web.xml中如何配置?该类是不是应该定义成static方式?
难点二:该类是不是应该配置到DB链接的后面?该怎么配

解决方案 »

  1.   

    难点一:在web.xml中配置你自己的listener即可。想想:spring能做到,你也能。
    具体listener怎么配置GOOGLE出来的都比我讲得好得多。如果数据不大,那么把读出的数据配置成static是可以的难点二:这个...我就不清楚了,自己试验最好,我想应该是配置到DB链接的后面的,如果用了Spring框架就好办了...
      

  2.   

    你需要编写web.xml 设置随tomcat一同启动的参数<?xml version="1.0" encoding="GB2312"?>
    <web-app>
    <servlet>
    <servlet-name>InitServlet</servlet-name>
    <servlet-class>InitServlet</servlet-class>
    <load-on-startup>25</load-on-startup>
    </servlet>
    <welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
    </welcome-file-list>
    </web-app>load-on-startup 是关键请参考下面这个文章,我收集的
    http://www.java2000.net/viewthread.jsp?tid=315
      

  3.   

    呵呵! 那个是我收集的,我看着还不错!只要是标准的servlet 都可以使用的,没必要拘泥。
      

  4.   

    在web.xml中设置一个servlet,然后设置为加载及启动<load-on-startup>25</load-on-startup>,在servlet中写个静态块就可以执行了
      

  5.   

    不用写静态块,在那个 load-on-startup 的 servlet 的 init() 方法里加载。
      

  6.   


    public class InitServlet extends HttpServlet implements Servlet {   public void init() throws ServletException {
    super.init();

    //DB处理方法
    //复值  this.getServletContext().setAttribute(?,?);

    //初始化标准编码
    initSclistContext();
    }   public void doGet(HttpServletRequest request, HttpServletResponse response) throws     ServletException, IOException {
    init();
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    init();
    }}
      

  7.   

    楼上的,按照老紫竹所说的,就已经不用在doGet()或者doPost()中调用init(); 这个方法了吧,也不用写静态方法,只要在init(); 这个方法中从数据库表中获取数据,然后进行相应的存储,就可以了的,tomcat在启动时会自动执行配置文件中的那个servlet中的init()方法.
      

  8.   

    这简单啊,用个Servlet不就解决了吗?