Latest web development tutorials

Servlet debugowanie

Testowanie / debugowanie rozwój Servlet kursu jest zawsze trudne. Serwlet często obejmuje wiele interakcji klient / serwer, ale może być trudne do odtworzenia błędu.

Oto kilka porad i wskazówek, które mogą pomóc debug.

System.out.println ()

System.out.println () służy jako znacznik, stosowany do testowania, czy dany fragment kodu jest wykonywane. Możemy również wydrukować wartości zmiennej. Ponadto:

  • Ponieważ obiekty systemowe są częścią podstawowych obiektów Java, można go używać w dowolnym miejscu bez konieczności instalowania żadnych dodatkowych klas. Obejmuje Servlet, JSP, RMI, EJB, wspólne fasoli i klas, jak również samodzielne aplikacje.
  • Z różnych przystankach przy zerwaniu, napisz do System.out nie zakłócać normalnego przepływu wykonywania aplikacji, co sprawia, że ​​czas ma kluczowe znaczenie, gdy jest to szczególnie cenne.

Oto składnia używać System.out.println () jest:

System.out.println ( "komunikat debugowania");

Wszystkie wiadomości, które są generowane przez wyżej gramatyki zostaną zapisane w plikach logów serwera WWW.

Dziennik wiadomość

Zastosuj odpowiednią metodę logowania, aby nagrać cały debugowania, ostrzeżenia i komunikaty o błędach, co jest bardzo dobrym pomysłem, to zaleca się stosowanie rekord LOG4J wszystkie wiadomości.

Interfejs API dostarcza też prosty sposób produkcji, przy zastosowaniu metody log () w następujący sposób:

// Importu konieczne java biblioteki import java.io. *;
import javax.servlet * .;
import javax.servlet.http * .;

public class ContextLog rozszerza HttpServlet {
  public void doGet (HttpServletRequest request, 
      Odpowiedź HttpServletResponse) wyrzuca ServletException,
         java.io.IOException {
    
      Ciąg par = request.getParameter ( "par1");
      // Wywołanie ServletContext.log dwie metody ServletContext context = getServletContext ();

      if (par == null || par.equals ( ""))
      // Zapis parametrów przez Throwable wersji context.log ( "Nie Odebrano wiadomość:",
          Nowy IllegalStateException ( "Brakujący parametr"));
      więcej
          context.log ( "Oto przesłanie gościa:" + par);
      
      response.setContentType ( "text / html; charset = UTF-8");
      java.io.PrintWriter out = response.getWriter ();
      tytuł String = "Kontekst Log";
      Ciąg DOCTYPE = "\ n <DOCTYPE html!>";
      out.println (DOCTYPE +
        "<Html> \ n" +
        "<Head> <title>" + nazwa + "</ title> </ head> \ n" +
        "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
        "<H1 align = \" center \ ">" + nazwa + "</ h1> \ n" +
        "<H2 align = \" center \ "> Wiadomości wysyłane </ h2> \ n" +
        "</ Body> </ html>");
    } // DoGet
}

ServletContext jest tekst wiadomości do serwletu plik dziennika kontenera. Dla Tomcat, te dzienniki można znaleźć w sekcji <Tomcat-instalacji-katalogu> katalogu / logs.

Te pliki dziennika są rzeczywiście pojawiają się błędy lub problemy częstotliwości podane są instrukcje. Z tego powodu zalecamy korzystanie z log () Klauzula Wyjątkiem Funkcja catch zazwyczaj nie stało.

Użyj JDB debuggera

Można użyć polecenia JDB apletu lub debugowania aplikacji do debugowania Servlet.

Aby debugować serwletu, możemy debugować sun.servlet.http.HttpServer, a następnie uruchomić go jako HTTPServer Servlet odpowiedzi na zapytania HTTP po stronie przeglądarki. Ten niewielki program debugowania aplet jest bardzo podobna. I debugowania aplet jest inny, rzeczywisty program jest pozbawione błędów jest sun.applet.AppletViewer.

Większość debugerów automatycznie ukryć szczegóły dotyczące debugowania apletu. Podobnie dla apletu, należy wykonać następujące czynności za pomocą debuggera:

  • Ustaw swój debugger w ścieżce klasy ścieżki klasy, dzięki czemu można go znaleźć sun.servlet.http.Http-Server i powiązanych klas.
  • Ustaw swój debugger w ścieżce klasy ścieżki klasy, dzięki czemu można go znaleźć serwletu oraz zajęcia dodatkowe, zazwyczaj w server_root / serwlety i server_root / klas.

Zwykle nie chcą server_root / serwlety w ścieżce klas, ponieważ wyłącza załaduj aplet. Jednak zasada ta znajduje jest bardzo przydatna do debugowania. To pozwala na debugowanie w HTTPServer ładowarki zwyczaju przed Servlet Servlet ustawić punkt przerwania w serwletu.

Jeśli ustawiono prawidłową classpath classpath można rozpocząć debugowanie sun.servlet.http.HttpServer. Aplet może ustawić punkty przerwania w kodzie chcesz debugowania, a następnie podane serwletu przy użyciu przeglądarki sieci Web (http: // localhost: 8080 / servlet / ServletToDebug) występuje z wnioskiem do HTTPServer. Zobaczysz wykonanie programu zatrzymuje się przy zerwaniu.

Użyj komentarzy

Komentarze w kodzie pomoże w różny sposób do debugowania. Notatki mogą być wykorzystywane na wiele innych sposobów proces debugowania.

Zastosowanie Java Servlet uwag i komentarzy pojedynczej linii (// ...), komentarze multi-line (/ * ... * /) mogą być stosowane tymczasowo usunąć niektóre kodu Java. Jeśli błąd zniknie, wystarczy spojrzeć na komentowanej kodu i zidentyfikować problem.

Informacje o klienta i po stronie serwera nagłówek

Czasem, gdy aplet nie jest zgodnie z oczekiwaniami, zobaczyć oryginalne żądanie HTTP i odpowiedź jest bardzo przydatna. Jeśli jesteś zaznajomiony z konfiguracją HTTP, można przeczytać na żądanie i odpowiedź i zobaczyć, jakie informacje te nagłówki.

Ważne techniki debugowania

Oto kilka wskazówek, Servlet debugowanie:

  • Należy pamiętać, server_root / klas nie będą przeładowane, a server_root / serwlety potęga.
  • Zwraca się do przeglądarki, aby wyświetlić oryginalną treść strony jest wyświetlana. Przyczynia się to do określenia formatu problem. Zwykle jest to opcja w menu "Widok".
  • Zmuszając pełne przeładowanie strony, aby upewnić się, że przeglądarka nie jest żądaniem przed buforem wyjściowym. W Netscape Navigator, użyj Shift przeładować, w programie Internet Explorer, Shift-Refresh.
  • Upewnij się, że metody apletu init () akceptuje ServletConfig parametru i zwraca super.init (config).