我想首先在加载 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>
我不知道哪里做错了。
最佳答案
有很多方法可以实现这一目标..
- 您可以在服务方法
com.Teklabz.Servlets.IndexServlet
中填充数据,然后在request
属性中设置数据,然后转发到该jsp
。 - 如果您想使用
loadonstartiup
,那么您可以在com.Teklabz.Servlets.IndexServlet
servlet 的init
方法中填充来自数据库的数据,并且然后将它设置在一些可访问的范围(request,session,context)
并通过直接访问 jsp 从该范围获取数据。 - 在监听器中,您也可以这样做,但在那种情况下,您还需要在某个范围内设置数据。
关于java - 在应用程序启动时启动 servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14213162/