JSP 개요와 Tomcat 설치
JSP 개요
JSP 페이지 처리 과정 ( Client - Server Flow )
JSP 페이지는 하나의 서블릿 프로그램으로 변환되어 실행됨
💡 Client → Server → JSP Contianer → Server → Client
- Client
- Client 가 Server에 JSP를 요청함 ( 확장자가 .jsp 인 파일 )
- Server
- Client 의 요청 파일이 JSP인걸 확인하고 JSP continaer에 요청을 보냄
- JSP Container ( = Sevelt Continaer )
- 해당 JSP 파일로 생성된 Sevelt이 있는지 확인
- 생성된 Sevelt이 없다면 JSP를 Sevelt으로 번역 ( .jsp → .java )
- Sevelt 을 컴파일 ( .java → .class )
- 컴파일된 Sevelt class를 메모리에 적재 후 실행
- 웹 서버에 실행 결과를 취합해 응답 ( HTML )
- Server
- Client에 JSP continaer로부터 전달받은 HTML을 전달함으로서 요청에 응답
- Client
- 응답받은 HTML 파일을 Browser가 화면에 표시함
JSP 생명주기
번역 단계 ( translation )
- JSP 컨테이너가 JSP 소스파일을 자바코드로 변환
- JSP 파일을 읽고 구문을 분석함
컴파일 단계 ( compilation )
- JSP 컨테이너가 자바코드를 컴파일하여 클래스파일 생성
- 컴파일단계에서는 자바의 모든 구문을 검사함
로딩 및 초기화 단계 ( loading, initializatoin )
- 컴파일된 클래스 파일을 메모리에 적재하고 클래스의 인스턴스를 작성
- 인수가 없는 생성자 사용
- JSP 컨테이너는 init(), jspInit()를 호출하여 인스턴스가 된 객체를 초기화
- 데이터베이스 연결, 파일열기, 룩업테이블 등을 생성, 초기화
실행 단계 ( execution )
- JSP컨테이너가 요청 및 응답 객체를 전달하는 _jspService()메소드를 실행
- _jspService()는 Overriding이 불가능함
- 웹브라우저가 페이지를 요청하여 페이지가 로딩, 초기화 될때마다 _jspService() 메소드를 호출
- 응답객체 전달
- JSP 생명주기가 끝날때까지 모든 클라이언트 요청에 대해 상호작용
소멸 단계 ( destruction )
- JSP 컨테이너는 실행되고 있는 JSP를 jspDestory() 메소드를 사용하여 제거
- 데이터베이스 또는 열려 있는 파일 연결해제
Tomcat
💡 Tomcat은 위에서 언급한 과정의 Server, JSP Continaer 기능을 동시에 지원함
Tomcat 설치 ( Version 9 )
Intellij IDEA - MacOS
-
homebrew를 사용한 설치
-
brew search tomcat
설치 가능한 tomcat 버전 확인
-
brew install tomcat@9
-
zshrc | bshrc 등에 path 등록
- hombrew m1 버전의 경우
PATH=”$PATH:/opt/homebrew/opt/tomcat@9/bin
-
Intellij IDEA 프로젝트 구성 설정
IntelliJ로 JSP 프로젝트 생성
-
Add Run Configuations
- Tomcat server / local
-
Application Server
-
configure
-
tomcat home & base directory
/opt/homebrew/Cellar/tomcat@9/9.0.62/libexec
-
depolyment 추가
- URL 설정 ~_main_war_exploded/ 삭제하고 싶다면 Deployment 에 application context 를 공란으로 비우기
- Route는 $ROOT_URL/[JSP 파일 이름] 으로 설정됨
-
Windows 에서 생성한 프로젝트는 VM option에 encoding option 추가 필요
-Dfile.encoding=UTF-8
Eclips - Windows 10
- Workspace 생성
- Create new server
- Apache Tomcat v9.0
- Tomcat 설치 경로 설정
- New Project
- Web - Dynamic Web projcet
- Encoding UTF8 설정
JSP 문법
스크립틀릿
<% 지역변수 선언부 %>
표현문
<%=변수%>
<%=리턴 값이 있는 메소드 %>
<%=수식(변수 또는 리턴 값이 있는 메소드를 포함할 수 있음) %>
선언문
<%! 선언문 내용 %>
- 임의의 위치에 선언할 수 있음
- 세미콜론 사용 O
- 전역변수