English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
테스트하기 위해/JSP나 servlet 프로그램을 디버깅하는 것은 항상 어렵습니다. JSP와 Servlets 프로그램은 많은 클라이언트/서버 간의 상호작용은 오류가 발생할 가능성이 높으며, 오류가 발생한 환경을 재현하는 것이 어려울 수 있습니다.
다음은 프로그램을 디버깅하는 데 도움이 되는 몇 가지 작은 팁과 조언을 제공할 것입니다.
System.out.println()는 코드가 실행되었는지 확인하는 데 매우 편리합니다. 물론, 다양한 값들을 출력할 수도 있습니다. 또한:
System 객체가 Java 핵심 객체가 되면서, 추가 클래스를 소유하지 않고 어디서든 사용할 수 있습니다. 사용 범위는 Servlets, JSP, RMI, EJB's, 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 -1 0 1 2 3 4 5
Tomcat 서버를 사용하는 경우 logs 디렉토리에 있는 stdout.log 파일에서 다음과 같은 추가 내용을 찾을 수 있습니다:
counter=1 counter=2 counter=3 counter=4 counter=5 counter=6 counter=7 counter=8 counter=9 counter=10
이 방법을 사용하면 변수와 다른 정보를 시스템 로그에 출력할 수 있으며, 문제의 근본 원인을 분석하고 찾아내는 데 사용됩니다.
J2SE 기록 프레임워크는 JVM에서 실행되는 모든 클래스에 기록 서비스를 제공할 수 있습니다. 따라서 이 프레임워크를 이용하여 어떤 정보든 기록할 수 있습니다.
让我们来重写以上代码,使用JDK中的 logger API:
<%@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" step="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); %> </c:forEach> </body> </html>
이의 실행 결과는 이전과 유사하지만, stdout.log 파일에 추가 정보를 출력할 수 있습니다. 여기서는 logger의 info 메서드를 사용했습니다. 아래는 stdout.log 파일의 일부 사진입니다:
24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=1 myCount=-4 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=2 myCount=-3 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=3 myCount=-2 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=4 myCount=-1 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=5 myCount=0 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=6 myCount=1 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=7 myCount=2 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=8 myCount=3 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=9 myCount=4 24-Sep-2013 23:31:31 org.apache.jsp.main_jsp _jspService INFO: counter=10 myCount=5
메시지는 sever(), warning(), info(), config(), fine(), finer(), finest() 메서드를 사용하여 다양한 우선순위로 전송할 수 있습니다. finest() 메서드는 최상의 정보를 기록하며, sever() 메서드는 가장 심각한 정보를 기록합니다.
Log 사용4J 프레임워크를 사용하여 여러 파일에 메시지를 기록하고, 이 메시지는 중요성과 심각성에 따라 분류됩니다.
NetBeans는 트리 구조를 가진 오픈 소스 Java 통합 개발 환경으로, 독립적인 Java 애플리케이션과 네트워크 애플리케이션을 개발하는 데 지원하며, 또한 JSP 디버깅을 지원합니다.
NetBeans는 다음과 같은 기본 디버깅 기능을 지원합니다:
브레이크 포인트
단계별 추적
ウォ치포인트
자세한 정보는 NetBeans 사용 설명서를 참조하세요.
JSP와 Servlet에서 jdb 명령어를 사용하여 디버깅할 수 있습니다. 이는 일반 애플리케이션과 마찬가지로 디버깅할 수 있습니다.
일반적으로, HttpServer가 HTTP 요청에 응답할 때 JSP를 실행하는 HttpServer 객체를 직접 디버깅합니다./Servlet의 경우. 이는 애플릿 디버깅과 매우 유사합니다. 차이점은 애플릿 프로그램이 실제로 디버깅하는 것은 sun.applet.AppletViewer입니다.
대부분의 디버거는 애플릿을 디버깅할 때 일부 세세한 부분을 자동으로 무시할 수 있습니다. 이는 애플릿을 디버깅하는 방법을 알기 때문입니다. 디버깅 대상을 JSP로 옮기려면 다음 두 가지를 준비해야 합니다:
디버거의 classpath를 설정하여 sun.servlet.http.Http를 찾을 수 있도록 합니다-서버와 관련된 클래스。
디버거의 classpath를 설정하여 JSP 파일과 관련된 클래스를 찾을 수 있도록 합니다。
classpath를 설정한 후, sun.servlet.http.Http를 디버깅하기 시작합니다-서버 。JSP 파일의 어디서든 브레이크 포인트를 설정할 수 있으며, 좋아하는대로 서버에 요청을 보내면 프로그램이 브레이크 포인트에서 멈추게 됩니다。
프로그램의 주석은 많은 면에서 프로그램 디버깅에 도움이 됩니다. 주석은 디버깅 프로그램의 여러 면에 사용될 수 있습니다。
JSP는 Java 주석을 사용합니다.BUG가 사라지면, 새로 주석을 달았던 코드를 주의 깊게 확인하세요. 일반적으로 이곳에서 원인을 찾을 수 있습니다。
JSP가 예상한 방식으로 실행되지 않을 때, 원시 HTTP 요청과 응답을 확인하는 것도 매우 유용할 수 있습니다. HTTP 구조에 익숙하다면, request와 response를 직접 관찰하고 이 헤더 모듈이 무엇이 문제인지 확인할 수 있습니다。
이곳에서는 JSP 디버깅에 대한 두 가지 작은 팁을 공유합니다:
브라우저를 사용하여 원래 페이지 내용을 표시하여 형식 문제인지 확인할 수 있습니다. 이 옵션은 일반적으로 View 메뉴 아래에 있습니다。
브라우저가 페이지를 강제로 다시 로드할 때 이전의 request 출력을 잡지 않도록 설정되어 있는지 확인하세요. Netscape Navigator 브라우저를 사용하는 경우 Shift-재로드;IE 브라우저를 사용하는 경우 Shift-새로 고침。