Всегда сложно тестировать/отлаживать программу JSP или сервлет. Программы JSP и сервлеты, как правило, включают в себя большое количество взаимодействий клиент/сервер, что с большой вероятностью приведет к ошибкам, и трудно воспроизвести среду ошибок.
Далее мы дадим несколько советов и предложений, которые помогут вам отладить вашу программу.
System.out.println() может легко отметить, был ли выполнен фрагмент кода. Конечно, мы также можем распечатать различные значения. также:
Поскольку объект System стал основным объектом Java, его можно использовать где угодно, не вводя дополнительных классов. Область использования включает сервлеты, JSP, RMI, EJB, Beans, классы и автономные приложения.
По сравнению с остановкой работы в точке останова использование System.out для вывода не окажет существенного влияния на работающий процесс приложения. Эта функция очень полезна в приложениях, где механизм синхронизации очень важен.
Синтаксис использования System.out.println() приведен ниже:
System.out.println("Сообщение об отладке");Вот простой пример использования System.out.print():
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html><head><title>System.out.println</title></ head><body><c:forEach var="counter" Begin="1" end="10" Step="1" > <c:out value="${counter-5}"/></br> <% System.out.println( "counter= " + pageContext.findAttribute("counter") ); %></c:forEach></body></html>Теперь, если вы запустите приведенный выше пример, он даст следующие результаты:
-4-3-2-1012345Если вы используете сервер Tomcat, вы сможете найти следующее дополнительное содержимое в файле stdout.log в каталоге журналов:
счетчик=1счетчик=2счетчик=3счетчик=4счетчик=5счетчик=6счетчик=7счетчик=8счетчик=9счетчик=10Используя этот метод, переменные и другую информацию можно вывести в системный журнал для анализа и поиска основной причины проблемы.
Платформа ведения журнала J2SE предоставляет службы ведения журнала для любого класса, работающего в JVM. Таким образом, мы можем использовать эту структуру для записи любой информации.
Давайте перепишем приведенный выше код, чтобы использовать API-интерфейс регистратора в JDK:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@page import="java.util.logging.Logger" %><html> <head><title>Logger.info</title></head><body><% Logger logger=Logger.getLogger(this.getClass().getName());%><c:forEach var="counter " Begin="1" end="10" шаг="1" > <c:set var="myCount" value="${counter-5}" /> <c:out value="${myCount}"/ ></br> <% String message = "counter=" + pageContext.findAttribute("counter") + " myCount=" + pageContext.findAttribute("myCount"); logger.info( message ); :forEach></body></html>Результаты аналогичны предыдущему, однако он может выводить дополнительную информацию в файл stdout.log. Здесь мы используем метод info в logger. Ниже мы приводим снимок файла stdout.log:
24 сентября 2013 г. 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=1 myCount=-424 сентября 2013 г. 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=2 myCount=- 324-сен-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=3 myCount=-224-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=4 myCount=-124-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=5 myCount=024-сен-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=6 myCount=124-сен-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter= 7myCount=224 сентября 2013 г. 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=8 myCount=324-сен-2013 23:31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=9 myCount=424-сен-2013 23: 31:31 org.apache.jsp.main_jsp _jspServiceINFO: counter=10 myCount=5Сообщения можно отправлять с различными приоритетами, используя методы sever(), alert(), info(), config(), Fine(), Finer() и Finest(). Метод Finest() используется для записи наилучшей информации, а метод sever() — для записи наиболее серьезной информации.
Используйте платформу Log4J для регистрации сообщений в различных файлах, которые классифицируются по серьезности и важности.
NetBeans — это древовидная структура и комплексная среда разработки Java с открытым исходным кодом, которая поддерживает разработку независимых приложений Java и сетевых приложений, а также поддерживает отладку JSP.
NetBeans поддерживает следующие основные функции отладки:
точка останова
Одношаговое отслеживание
наблюдательный пункт
Подробную информацию можно найти в руководстве NetBeans.
Вы можете использовать команды jdb в JSP и сервлетах для отладки, как и в обычных приложениях.
Обычно мы отлаживаем объект sun.servlet.http.HttpServer напрямую, чтобы увидеть, как HttpServer выполняет JSP/сервлеты в ответ на HTTP-запросы. Это очень похоже на отладку апплетов. Разница в том, что на самом деле отлаживается программа-апплет sun.applet.AppletViewer.
Большинство отладчиков могут автоматически игнорировать некоторые детали при отладке апплетов, поскольку они знают, как отлаживать апплеты. Если вы хотите перенести объект отладки в JSP, вам необходимо сделать следующие две вещи:
Задайте путь к классам отладчика, чтобы он мог найти sun.servlet.http.Http-Server и связанные классы.
Задайте путь к классам отладчика, чтобы он мог найти ваши файлы JSP и связанные классы.
После установки пути к классам начните отладку sun.servlet.http.Http-Server. Вы можете установить точку останова в любом месте файла JSP по своему усмотрению, а затем использовать браузер для отправки запроса на сервер, и вы должны увидеть, что программа остановилась в точке останова.
Комментарии в программе играют определенную роль при отладке программы во многих отношениях. Комментарии можно использовать во многих аспектах отладки программы.
JSP использует аннотации Java. Если ошибка исчезла, внимательно посмотрите на код, который вы только что прокомментировали, и обычно вы сможете понять, почему.
Иногда также полезно просмотреть необработанные HTTP-запросы и ответы, когда JSP не ведет себя должным образом. Если вы знакомы со структурой HTTP, вы можете напрямую наблюдать за запросом и ответом и видеть, что происходит с этими модулями заголовков.
Здесь мы раскрываем еще два совета по отладке JSP:
Используйте браузер для отображения исходного содержимого страницы, чтобы определить, есть ли проблема с форматом. Обычно эта опция находится в меню «Вид».
Убедитесь, что браузер не записывает выходные данные предыдущего запроса при принудительной перезагрузке страницы. Если вы используете браузер Netscape Navigator, используйте Shift-Reload; если вы используете браузер IE, используйте Shift-Refresh;