我用JSP构建一个Web应用程序,在我的servlet中我有:
public class MyServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
init();
HttpSession session = request.getSession(true);
//more code...
}
}
直到现在我的serlvet被调用,当JSP页面调用它时<a href="MyServlet..">
。我想要的是每当应用程序启动时,也要执行servlet。我可以在第一页中找到一个按钮,例如&#34; START&#34;然后调用servlet ..但是,我可以避免这种情况吗?
答案 0 :(得分:4)
您可以使用标记<load-on-startup>
在Tomcat的web.xml(或类似服务器中的相应配置文件)中进行配置,如下所示:
<servlet>
<servlet-name>MyOwnServlet</servlet-name>
<servlet-class>MyServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
答案 1 :(得分:3)
无论你想在启动时做什么都应该由一个实现ServletContextListener
的类来完成,所以你应该编写这样一个类,例如:
public class MyContextListener
implements ServletContextListener{
@Override
public void contextDestroyed(ServletContextEvent arg0) {
//do stuff
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
//do stuff before web application is started
}
}
然后你应该在web.xml中声明它:
<listener>
<listener-class>
com.whatever.MyContextListener
</listener-class>
</listener>
答案 2 :(得分:2)
在我看来,一个好方法是实现一个Servlet Context Listener。它监听应用程序启动和关闭。
public class YourListener implements javax.servlet.ServletContextListener {
public void contextInitialized(ServletContextEvent sce) {
}
public void contextDestroyed(ServletContextEvent sce) {
}
}
然后,在web.xml()中或使用@WebServletContextListener注释配置侦听器。