2013-01-08 23 views
5

Chcę rozpocząć od wypalenia klasy serwletów przed załadowaniem strony jsp, ponieważ muszę wypełnić niektóre dane z bazy danych na stronie jsp. Servlet mapowanie w web.xmlUruchamianie serwletu podczas uruchamiania aplikacji

<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> 

ale to nie działa, gdy śledzenie kodu nigdy nie docierają do klasy serwletu. Również próbowałem użyć ServletContextListener jak ten link, ale miałem do czynienia z tym samym problemem.

kod słuchacz:

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."); 
    } 
} 

kod web.xml:

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

Nie wiem co robię źle.

+0

Twoje pytanie jest mylące. Proszę wyjaśnić, co nie działa? I co chcesz osiągnąć. Chętnie ci pomożemy. –

+0

Co oznacza uruchomienie apletu? Kontener może załadować serwlet przy uruchomieniu oznacza to, co kiedykolwiek wewnątrz metody 'init' zostanie wykonane przy uruchomieniu – amicngh

+1

To brzmi dla mnie tak, jakbyś chciał nawigować lub przekazywać do serwletu, a następnie - do przodu - do strony JSP. W ten sposób serwlet może wykonywać operacje na bazie danych, przygotowywać ładną strukturę obiektów w zakresie żądania, a następnie strona JSP może pobrać te informacje i wyświetlić je. – Gimby

Odpowiedz

3

Istnieje wiele sposobów można to osiągnąć ..

  1. Albo można wypełnić dane w metodzie usługi com.Teklabz.Servlets.IndexServlet, a następnie ustaw dane w atrybucie request, a następnie przesyłaj dalej do tego jsp.
  2. Jeśli chcesz użyć loadonstartiup następnie można wypełnić dane z db w init metody com.Teklabz.Servlets.IndexServlet serwletu, a następnie ustawić go w jakimś dostępnym zakresie (request,session,context) i bezpośrednim umożliwiająca dostęp JSP uzyskać dane z tego zakresu.
  3. W detektorze możesz to zrobić, ale w takim przypadku musisz ustawić dane w pewnym zakresie.
0

kod jest absolutnie right.you trzeba dodać adnotację @WebListener

@WebListener 
    public class ServletListener implements ServletContextListener{ 
    //your code 
    } 
+0

Uwaga adnotacja jest kolejnym sposobem uniknięcia definicji w web.xml. –

Powiązane problemy