[JSP]웹과 JSP 프로그래밍
웹의 동작 원리
클라이언트/서버 방식
클라이언트(웹 브라우저, ex 크롬)가 특정 페이지를 웹 서버에 요청(request)→응답(response)
클라이언트(사용자): 요청하는 쪽
서버(제공자): 응답하는 쪽
정적 웹페이지와 동적 웹페이지
1)정적(static) 웹페이지
컴퓨터에 저장된 텍스트 파일을 그대로 보는 것
추가, 수정, 삭제 작업 수동
데이터베이스 불필요, 구축하기 쉬움
서버 간 통신이 거의 없고 속도가 빠름
모든 호스팅 서버에서 동작 가능
2) 동적(dynamic) 웹페이지
저장된 내용을 다른 변수로 가공 처리하여 보는 것
사용자가 변화를 주면 결과가 웹페이지에 반영됨
·동작 방식
- 사용자가 웹페이지 요청
- 서버가 요청 분석, 처리
- 결과를 HTML 문서로 생성
- 클라이언트에게 보냄
- 브라우저가 문서를 보여줌
JSP
1. 웹 프로그래밍 언어의 구분
1)클라이언트측 실행 언어: HTML, CSS, JavaScript
2)서버측 실행 언어: java, python, C#, C++
JSP는 서버측 웹 프로그래밍 언어(html+java)
2. JSP의 특징
1) 서블릿 기술의 확장
서블릿: 선마이크로시스템스가 개발했던 프로그래밍 방식. 자바 코드 안에 HTML 코드를 추가(JSP는 HTML 코드 안에 자바 코드 추가)
자바 API 사용 가능
내장 객체, 미리 정의된 태그, 표현식 언어, 사용자 정의 태그 사용 가능
2) 유지 관리 용이
프레젠테이션 로직과 비즈니스 로직 분리 가능
3) 빠른 개발 가능
코드를 수정했을 때 다시 컴파일하고 배포할 필요가 없다.
4) 코드 단축 가능
액션 태그, JSTL(JavaServer Pages Standard Tag Library), 사용자 정의 태그 등 다양한 태그 사용 가능
JSP 페이지의 처리 과정
① 웹브라우저가 서버에 JSP 요청(____.jsp), 서버가 JSP 컨테이너에 전달
② JSP 컨테이너가 JSP 페이지에서 java 코드를 추출해 java 파일(____.java)로 변환
③ JSP 컨테이너가 파일을 컴파일해서 class 파일(____.class)로 만들고 서버에 전달
④ 서버가 class 파일의 실행 결과를 웹 브라우저에 전달
※웹 서버, 컨테이너, 웹 애플리케이션 서버의 차이
1)웹 서버(web server)
클라이언트의 요청을 받아 html이나 오브젝트 전송
자체적으로 처리할 수 없는 것은 컨테이너로 전송
정적 페이지 생성 가능
아파치, IIS 등
2)웹 컨테이너(web container)(=서블릿 컨테이너)
JSP와 서블릿을 실행할 수 있는 프로그램
서블릿 수행 결과를 웹 서버에 전달
3)웹 애플리케이션 서버(web application server, WAS)
웹 서버+웹 컨테이너
톰캣, 웹로직 등
JSP 생명주기
①번역(translation)
JSP 컨테이너가 JSP 소스 파일에서 java 코드를 추출, .java 파일로 변환
②컴파일(compilatioin)
JSP 컨테이너가 .java 파일을 컴파일해서 클래스 파일 생성
③로딩 및 초기화(loading, initialization)
JSP 컨테이너가 클래스 인스턴스 작성
jspInit() 메서드 호출, 인스턴스가 된 객체 초기화
④실행(execution)
JSP 컨테이너가 _jspService() 메서드 호출
⑤소멸(destruction)
JSP 컨테이너가 jspDestroy() 메서드로 실행되고 있는 JSP 제거
※jspInit(), jspDestroy() 메서드는 컨테이너가 기본 기능 제공→오버라이딩 선택사항
_jspService() 메서드는 컨테이너가 추가→오버라이딩 불가
※JSP 파일이 수정되지 않았으면 클라이언트가 서버에 요청해도 번역 단계를 거치지 않음
변환 필요성 확인을 위해 JSP 컨테이너가 서블릿 클래스가 JSP 페이지보다 오래된 것인지 확인 과정을 거침
학습 자료: 쉽게 배우는 JSP 웹 프로그래밍