5

我想首先在加载 jsp 页面之前触发 servlet 类,因为我需要在 jsp 页面中填充数据库中的一些数据。web.xml 中的 Servlet 映射

    <servlet>
        <servlet-name>Index</servlet-name>
        <servlet-class>com.Teklabz.Servlets.IndexServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>Index</servlet-name>
        <url-pattern>/index</url-pattern>
    </servlet-mapping>

但它没有用,在跟踪代码时它永远不会到达 servlet 类。我也试图像这个链接一样使用 ServletContextListener ,但我遇到了同样的问题。

监听代码:

public class ServletListener implements ServletContextListener{

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}

web.xml 代码:

    <listener>
        <listener-class>com.techlabz.listener.ServletListener</listener-class>
    </listener>

我不知道做错了什么。

4

2 回答 2

3

有多种方法可以实现这一目标..

  1. 您可以在服务方法中填充数据,com.Teklabz.Servlets.IndexServlet然后在属性中设置数据request,然后转发到该属性jsp
  2. 如果要使用,loadonstartiup则可以在com.Teklabz.Servlets.IndexServletservlet 的init方法中从 db 填充数据,然后将其设置在某个可访问的范围内(request,session,context),并通过直接访问 jsp 从该范围获取数据。
  3. 在侦听器中,您也可以这样做,但在这种情况下,您还需要在某个范围内设置数据。
于 2013-01-08T11:05:29.093 回答
0

您的代码绝对正确。您需要添加注释@WebListener

  @WebListener
   public class ServletListener implements ServletContextListener{
    //your code
   }
于 2013-01-08T10:55:13.803 回答