2015-06-08 2 views
0

Я создаю веб-приложение с JSPs и в моем сервлета у меня есть:Выполнение сервлета при запуске приложения

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..">. Я хочу, чтобы всякий раз, когда запускается приложение, сервлет также должен быть выполнен. У меня могла бы быть кнопка на моей первой странице, например «СТАРТ», и там, чтобы вызвать сервлет. Но могу ли я избежать этого?

+0

Что вы считаете «началом»? Укажите, когда контейнер сервлета запускается или указывает, когда пользователь впервые обращается к приложению? – bsiamionau

+0

Сервлет называется, когда вы получите HTTP-запрос, почему вы хотите называть его автоматически, как только начнется приложение, какие-либо конкретные ожидания? –

+0

Хорошо! У меня есть некоторые методы, которые проверяют некоторые вещи, поэтому я хочу, чтобы их проверяли, когда приложение запускается в первый раз. – yaylitzis

ответ

2

Все, что вы хотите сделать, при запуске должно быть сделано с помощью класса, реализующего 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> 
3

Вы можете настроить его в web.xml Tomcat (или соответствующие файлы конфигурации в подобных серверах), как показано ниже с помощью тега <load-on-startup>:

<servlet> 
    <servlet-name>MyOwnServlet</servlet-name> 
    <servlet-class>MyServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
1

С моей точки зрения, это хороший способ, чтобы реализовать Слушатель контекста сервлета. Он прослушивает запуск и завершение работы приложения.

public class YourListener implements javax.servlet.ServletContextListener { 

    public void contextInitialized(ServletContextEvent sce) { 
    } 

    public void contextDestroyed(ServletContextEvent sce) { 
    } 
} 

И потом, вы настроить слушателя в вашем web.xml() или с @WebServletContextListener аннотацию.

Смежные вопросы