java - 在应用程序启动时启动 servlet

标签 java servlets web.xml servlet-listeners

我想首先在加载 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 link ,但我遇到了同样的问题。

监听器代码:

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>

我不知道哪里做错了。

最佳答案

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

  1. 您可以在服务方法 com.Teklabz.Servlets.IndexServlet 中填充数据,然后在 request 属性中设置数据,然后转发到该 jsp
  2. 如果您想使用 loadonstartiup,那么您可以在 com.Teklabz.Servlets.IndexServlet servlet 的 init 方法中填充来自数据库的数据,并且然后将它设置在一些可访问的范围(request,session,context) 并通过直接访问 jsp 从该范围获取数据。
  3. 在监听器中,您也可以这样做,但在那种情况下,您还需要在某个范围内设置数据。

关于java - 在应用程序启动时启动 servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14213162/

相关文章:

java.lang.ClassCastException : com. google.gdata.data.TextContent 无法转换为 com.google.gdata.data.OutOfLineContent

java - 我在使用 doGet 和 doPost 方法时遇到问题

java - ServerEndpoint 和 web.xml

java - 定义整个maven项目的连接范围-spring mvc

servlets - 如何使用 Jersey 为 REST Web 服务中的服务类指定多个包名称

java - 如何检测文件是否被重命名?

java - 使用主要资源而不是测试资源进行 Scalatest

java - 构造函数和类型转换

java - http请求的基本解释

java - 将 "stream"Google Pub/Sub 消息直接发送到前端的最佳方式?服务器发送的事件?