Latest web development tutorials

Servlet Отладка

Тестирование / отладка разработка сервлетов курса всегда трудно. Сервлетов часто включает в себя большое количество взаимодействия клиент / сервер, но может быть трудно воспроизвести ошибку.

Вот некоторые советы и рекомендации, которые могут помочь в отладке.

System.out.println ()

System.out.println () используется в качестве маркера, используемого для проверки, выполняется ли конкретный фрагмент кода. Мы также можем распечатать значение переменной. Кроме того:

  • Поскольку объекты системы являются частью ядра Java объектов, он может быть использован в любом месте без необходимости установки каких-либо дополнительных классов. Это включает в себя Servlet, JSP, RMI, EJB'S, Общие Фасоль и классы, а также автономные приложения.
  • С различными остановками на контрольной точке, напишите System.out не мешает нормальному течению исполнения приложения, что делает его выбор времени имеет решающее значение, когда это особенно ценно.

Вот синтаксис использовать System.out.println () является:

System.out.println ( "Отладка сообщение");

Все сообщения, генерируемые выше грамматики будут записаны в лог-файлы веб-сервера.

Журнал сообщений

Используйте подходящий способ регистрации для записи всех отладки, предупреждения и сообщения об ошибках, что является очень хорошей идеей, рекомендуется использовать Log4j записи сообщений.

API сервлетов также обеспечивает простой способ вывода, используя метод Log (), следующим образом:

// Импорт необходимо Java библиотеки импорта java.io. *;
импорт javax.servlet * .;
импорт javax.servlet.http * .;

Открытый класс ContextLog расширяет HttpServlet {
  общественного недействительными doGet (HttpServletRequest запрос, 
      ответ HttpServletResponse) бросает ServletException,
         java.io.IOException {
    
      Строка п = request.getParameter ( "par1");
      // Вызов ServletContext.log два метода ServletContext контекст = getServletContext ();

      если (п == NULL || par.equals ( ""))
      // Запись параметров по Throwable версии context.log ( "не получил сообщение:",
          новый IllegalStateException ( "Missing параметр"));
      еще
          context.log ( "Вот сообщение посетителя:" + пар);
      
      response.setContentType ( "текст / html; Charset = UTF-8");
      java.io.PrintWriter из = response.getWriter ();
      Название String = "Контекст Log";
      Строка DOCTYPE = "\ п <DOCTYPE HTML!>";
      out.println (DOCTYPE +
        "<HTML> \ п" +
        "<Head> <название>" + название + "</ title> </ голова> \ п" +
        "<Body BGCOLOR = \" # f0f0f0 \ "> \ п" +
        "<H1 ALIGN = \" центр \ ">" + название + "</ h1> \ п" +
        "<H2 Align = \" центр \ "> Сообщения, отправленные </ h2> \ п" +
        "</ Body> </ html>");
    } // DoGet
}

ServletContext это текстовые сообщения в сервлет файл журнала контейнера. Для Tomcat, эти журналы можно найти в каталоге <Tomcat-установки-каталог> / каталога журналов.

Эти файлы журнала действительно появляются частотные ошибки или проблемы, приведены инструкции. Из-за этого, мы рекомендуем использовать журнал () пункт функция исключения улова обычно не бывает.

Используйте JDB отладчик

Вы можете использовать команду JDB апплета или отладки приложения для отладки сервлетов.

Для отладки Servlet, мы можем отладить sun.servlet.http.HttpServer, а затем выполнить его как HTTPServer Servlet, чтобы ответить на HTTP-запросы на стороне браузера. Эта отладка апплет небольшая программа очень похожа. И отладка апплет отличается, фактическая отлаживаемая программа sun.applet.AppletViewer.

Большинство отладчиков будет автоматически скрывать подробности того, как отлаживать апплет. Аналогично, для сервлета, необходимо выполнить следующие действия с помощью отладчика:

  • Установка пути к классам вашего пути к классам отладчика, так что он может найти sun.servlet.http.Http-Server и связанные с ним классы.
  • Установка пути к классам вашего пути к классам отладчика, так что он может найти свой сервлет и вспомогательные классы, как правило, в server_root / сервлетов и server_root / классов.

Вы обычно не хотите server_root / сервлеты в вашем пути к классам, поскольку он отключает перезагрузить сервлет. Тем не менее, это правило содержит очень полезно для отладки. Это позволяет отлаживать в HTTPServer пользовательских Servlet загрузчика перед тем Servlet установить контрольные точки в сервлет.

Если вы установили правильный путь к классам пути к классам, вы можете начать отладку sun.servlet.http.HttpServer. Servlet можно установить точки останова в коде, который требуется для отладки, а затем дал сервлета с помощью веб-браузера (HTTP: // локальный: 8080 / Сервлетам / ServletToDebug) делает запрос к HttpServer. Вы увидите, выполнение программы останавливается на точке останова.

Используйте комментарии

Комментарии в коде поможет различными способами для отладки. Заметки могут быть использованы во многих других отношениях процесс отладки.

Использование Java Servlet комментарии и однострочных комментариев (// ...), многострочные комментарии (/ * ... * /) можно использовать для временного удаления некоторого Java-кода. Если ошибка исчезает, вы только посмотрите на закомментированного кода и идентифицировать проблему.

Информация о клиенте и на стороне сервера заголовок

Иногда, когда сервлет не как ожидалось, посмотреть исходный запрос HTTP и ответ очень полезно. Если вы знакомы с конфигурацией HTTP, вы можете прочитать запрос и ответ и видеть, какую информацию эти заголовки.

Важные методы отладки

Вот некоторые советы Servlet отладки:

  • Обратите внимание, что server_root / классы не перегружается, а server_root / сервлеты мощь.
  • Он просит браузер отображать исходное содержание страницы, она показывает. Это помогает определить формат проблемы. Это, как правило, опция в меню "Вид".
  • Заставив полной перезагрузки страницы, чтобы гарантировать, что браузер не запрос до выходного буфера. В Netscape Navigator, используйте Shift-Reload, в Internet Explorer, используйте Shift-Refresh.
  • Убедитесь, что метод сервлета инициализации () принимает параметр ServletConfig и вызывает super.init (конфигурации).