Latest web development tutorials

서블릿 디버깅

코스의 테스트 / 디버깅 서블릿 개발은 항상 어렵다. 서블릿들은 클라이언트 / 서버 상호 작용의 다수를 포함하지만, 오류를 재현하기 어렵다.

여기 디버그 도움이되는 몇 가지 팁 및 제안 사항입니다.

에서 System.out.println ()

System.out.println에 ()는 코드의 특정 조각이 실행되고 있는지 여부를 테스트하는 데 사용되는 마커로 사용된다. 또한 변수의 값을 출력 할 수있다. 또한 :

  • 시스템 개체 코어 Java 오브젝트의 일부이기 때문에, 그것은 어떤 부가적인 클래스들을 설치할 필요없이 어디에서나 사용될 수있다. 이 서블릿, JSP, RMI, EJB의, 일반 콩 클래스뿐만 아니라 독립 실행 형 응용 프로그램이 포함되어 있습니다.
  • 그것은 특히 유용 때 중단 점에서 다른 정지로, 타이밍하게 어플리케이션의 실행의 통상의 흐름을 방해하지 않는 System.out에 쓰기하는 것은 중요하다.

여기에서 System.out.println ()를 사용하는 구문은 다음과 같습니다

에서 System.out.println ( "디버깅 메시지");

상기 문법에 의해 생성 된 모든 메시지는 웹 서버 로그 파일에 기록된다.

메시지 로그

아주 좋은 생각입니다 모든 디버그, 경고 및 오류 메시지를 기록하는 로그의 적절한 방법을 사용, log4j에 기록 모든 메시지를 사용하는 것이 좋습니다.

다음 서블릿 API는 또한 로그 () 메소드를 이용하여 출력하는 간단한 방법을 제공한다 :

// 가져 오기 필요한 자바 라이브러리 가져 오기 자바 .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이) ( "매개 변수를 누락");
      그렇지 않으면
          context.log는 ( "여기 방문자의 메시지입니다 :"+ 파);
      
      response.setContentType ( "text / html과; 문자셋 = UTF-8");
      를 java.io.PrintWriter 아웃 = response.getWriter ();
      문자열 제목 = "컨텍스트 로그";
      문자열 DOCTYPE = "\ n <DOCTYPE html로!>";
      out.println (DOCTYPE +
        "<HTML> \ n"+
        "<머리> <제목>"+ 제목 + "</ 제목> </ head> \ n"+
        "<BODY BGCOLOR = \"#의 f0f0f0 \ "> \ n"+
        "<H1 정렬 = \"센터 \ ">"+ 제목 + "</ H1> \ n"+
        "<H2 정렬 = \"센터 \ "> 보낸 메시지 </ H2> \ n"+
        "</ BODY> </ HTML>");
    } //의 doGet
}

이는 컨테이너 로그 파일 서블릿 문자 메시지의 ServletContext. 톰캣의 경우, 이러한 로그는 <톰캣 설치 디렉토리> / logs 디렉토리에서 찾을 수 있습니다.

이 로그 파일은 실제로 주파수 오류 신흥하거나 문제가 지침을 제공됩니다. 이 때문에, 우리는 일반적으로 발생하지 않습니다 로그 () 함수 예외 캐치 절을 사용하는 것이 좋습니다.

JDB 디버거를 사용하여

당신은 디버그 서블릿에 애플릿 또는 응용 프로그램 디버깅 JDB 명령을 사용할 수 있습니다.

서블릿을 디버깅하기 위해, 우리는 sun.servlet.http.HttpServer을 디버깅하고 HTTP 브라우저 측 요청에 응답 할 HttpServer에 서블릿으로 실행할 수 있습니다. 이 디버깅 애플릿 작은 프로그램은 매우 유사하다. 그리고 디버깅 애플릿이 다른, 디버깅중인 실제 프로그램은 sun.applet.AppletViewer입니다.

대부분의 디버거가 자동으로 애플릿을 디버깅하는 방법의 세부 사항을 숨 깁니다. 마찬가지로, 서블릿, 당신은 디버거의 도움으로 다음을 수행해야합니다 :

  • 이 sun.servlet.http.Http - 서버 및 관련 클래스를 찾을 수 있도록, 디버거의 클래스 경로 클래스 경로를 설정합니다.
  • 그것은 일반적으로은 server_root / 서블릿과은 server_root / 클래스에서, 서블릿과 지원 클래스를 찾을 수 있도록, 디버거의 클래스 경로 클래스 경로를 설정합니다.

이 서블릿을 다시 사용할 수 없게되므로 사용자는 일반적으로 클래스 경로에 / 서블릿을 SERVER_ROOT 싶지 않아요. 그러나,이 규칙에 포함 된 디버깅에 매우 유용합니다. 이 서블릿은 서블릿에서 중단 점을 설정하기 전에 당신이 HttpServer에 사용자 정의 서블릿 로더에서 디버깅 할 수 있습니다.

올바른 클래스 경로 클래스 경로를 설정 한 경우 sun.servlet.http.HttpServer 디버깅을 시작할 수 있습니다. 서블릿 디버깅 할 코드에 중단 점을 설정 한 다음 웹 브라우저를 사용하여 서블릿을 부여 할 수 있습니다 (에 http : // localhost를 : 8080 / 서블릿 / ServletToDebug) HttpServer에 요청을하게합니다. 당신은 프로그램 실행이 중단 점에서 중지 볼 수 있습니다.

주석을 사용

코드에 댓글 디버깅을 위해 다양한 방법으로 도움이 될 것입니다. 노트 프로세스를 디버깅하는 다른 많은 방법으로 사용될 수있다.

자바 서블릿의 의견과 한 줄 주석 (// ...), 멀티 라인 주석 (/ * ... * /)의 사용은 일시적으로 일부 자바 코드를 제거 할 수 있습니다. 버그가 사라지면, 당신은 주석 코드를보고 문제를 식별 할 수 있습니다.

클라이언트와 서버 측 헤더 정보

때때로, 서블릿이 예상되지 않는 경우, 원래의 HTTP 요청을보고 반응은 매우 유용합니다. 당신이 HTTP 구성에 대해 잘 알고 있다면, 당신은 요청 및 응답을 읽고 어떤 정보를이 헤더를 볼 수 있습니다.

중요 디버깅 기술

다음은 몇 가지 팁 서블릿 디버깅 있습니다 :

  • 은 server_root / 클래스 다시로드하고,은 server_root / 서블릿의 힘되지 않습니다 유의하시기 바랍니다.
  • 그것은 표시되는 페이지의 원본 콘텐츠를 표시하는 브라우저를 요청합니다. 이 문제 형식을 식별하는 데 도움이됩니다. 그것은 일반적으로 "보기"메뉴의 옵션입니다.
  • 전체를 강제로 브라우저 출력 버퍼 전에 요구되지 않도록 페이지를 새로 고침. 넷스케이프 네비게이터에서 Internet Explorer를 사용 Shift 키 새로 고침에서 Shift 키를 다시로드를 사용합니다.
  • 확인 서블릿의 init () 메소드는 매개 변수 ServletConfig를을 받아들이고는 super.init (구성)를 호출합니다.