백엔드/JSP

JSP lifestyle

두개의 문 2023. 6. 10. 22:42
JSP lifestyle

 

JSP의 대략적인 처리 방식

 

 

JSP lifestyle에 대해 자세히 알아보자.

 

Dynamic Web Project : HelloJSP 생성

JSP 파일 : ex01.jsp 생성

 

 

브라우저에서 ex01.jsp를 호출해보자

톰캣 : ex01._jsp.java – ( 컴파일 ) → ex01._jsp.class – ( new ex01.jsp(); ) → 객체 생성하여 메모리에 적재시킴

 

- 처음 실행할 때만 jspInit( ) 메서드 호출

- 새로고침을 누를 때마다 변수 num1의 값 증가

 

 

왜 num1의 값만 계속 증가하는 걸까? 스크립트 요소에 대해 알아보자

 

 

▷ 스크립트 요소
JSP Page에서는 선언문(Declaration), 스크립트릿(Scriptlet), 표현식(Expression)이라는 3가지의 스크립트 요소를 제공함 

선언문(Declaration)  <%!    %>

    - JSP Page 내에서 멤버변수(전역변수)나 메서드가 필요할 때 선언해 사용하는 요소

    - 서블릿으로 변환 시, _jspService( ) 메서드 외부에 선언됨

스크립트릿(Scriptlet)  <%    %>

    - 가장 일반적으로 많이 쓰이는 스크립트 요소

    - 주로 프로그래밍의 로직을 기술할 때 사용 → JSP Page가 요청을 받을 때 실행되어야 할 자바 코드를 작성하는 영역

    - 서블릿으로 변환 시, _jspService( ) 메서드 외부에 선언됨

    - 스크립트릿에서 선언된 변수는 지역변수

    - 선언부에서 정의한 메서드 호출만 가능, 다은 메서드 선언 불가 

표현식(Expression)  <%=    %>

    - JSP Page에서 웹 브라우저에 출력할 부분을 표현 → 즉, 화면에 출력하기 위한 것으로 실행 결과 하나의 값이 남는 문장

    - 스크립트릿 내에서 출력한 부분은 내장객체인 out 객체의 print( ) 또는 println( ) 메서드를 사용해서 출력

 

 

• 브라우저에서 동일한 요청을 한 경우

: _jspService( ) 메서드만 호출되어 응답함

  ⇒ 변수 num1 : 멤버변수

       변수 num2 : 지역변수 ( ∵ _jspService( ) 메서드 내에 Scriptlet 존재 )

        ∴ 동일한 요청을 할 때마다 num1의 값만 연속적으로 증가

 

• 만약 jsp 파일의 내용이 수정된 경우

톰캣은 다시 java파일 생성, 컴파일 진행하여 객체 생성시켜야 함

현재 메모리에 동일한 이름의 객체가 존재 → Destroy( ) 메서드 호출 : 객체 제거 →  Init( ) 메서드 호출 : 초기화 작업

→ Service( ) 메서드 호출을 통해 응답

 

 

• 톰캣에 의해 생성된 java파일과 class파일은 아래의 경로에 생성됨 ( 즉, 이 파일로 서비스함 )

/Users/dahee/Desktop/dev/server/apache-tomcat-9.0.75/work/Catalina/localhost/ROOT/org/apache/jsp

 

 

다시 정리해보자면,

 

- 웹 브라우저(클라이언트)가 jsp를 요청할 경우

① WAS 내 웹 서버가 jsp임을 확인하고 Web Container로 전달

② Web Container에서는 서블릿 클래스에 이 jsp와 맞는 클래스 파일이 존재하는지 확인

③ 없는 경우, jsp → java(servlet) → class로 컴파일까지 진행

④ 서블릿 컨테이너, JSP 컨테이너에서 해당 class 파일을 실행하여 비즈니스 로직, DB 연동 처리 후 나온 HTML 결과를 웹 서버에 전달

⑤ 웹 서버에서는 전달을 확인하고 클라이언트에게 응답함

 

-  Web Container(JSP Container = Servlet Container) 를 통해 jsp파일을 컴파일하는 과정에서 java코드를 실행하여 HTML 결과를 생성함

 


[ 참고자료 ]

https://maivve.tistory.com/179


 

'백엔드 > JSP' 카테고리의 다른 글

JSP Servlet 기초 (3) : JSP 태그  (0) 2023.06.11
내장객체 request와 response  (0) 2023.06.11
JSP Servlet 기초 (2)  (0) 2023.06.09
JSP Servlet 기초(1)  (0) 2023.06.08
Tomcat 다운로드 및 서버 연동시키기  (0) 2023.06.07