JSP Servlet 기본
JSP Servlet 기본
1. 네트워크
- 통신 장비들이 그물망처럼 연결되어 데이터를 교환하는 형태
- Node : 각각의 통신 장비, 네트워크에 연결된 컴퓨터와 그 안에 속한 장비
ex) 허브, 공유기, 라우터 등 - Host : 노드 중에서 어플리케이션을 실행할 수 있는 컴퓨팅 시스템을 갖춘 기기
※ 허브나 공유기 등은 중간노드 - Client와 Server : 호스트 사이에 제공되는 서비스를 기준으로 호스트를 세분화
임의의 호스트가 클라이언트나 서버로 고정되지 않고, 서비스의 종류에 따라 클라이언트나 서버가 될 수 있다. - request : 클라이언트가 서버에 보내는 요청
response : 서버가 클라이언트로 보내는 응답
2. 웹 서버의 종류 (APACHE)
- 오픈 소스
- 다양한 모듈 제공
- 강력한 커뮤니티, 다양한 자료
- 확장성이 좋음
- 보안 수준 높음
3. 웹 페이지
- 정적페이지(Static Web Page)
서버(웹 서버)에 미리 저장된 파일(HTML, 이미지, JavaScript 파일 등)이 그대로 전달되는 웹페이지
사용자는 서버에 저장된 데이터가 변경되지 않는 한 고정덴 웹 페이지를 보게 됨
ex) 위키백과 등
- 동적페이지(Dynamic Web Page)
서버(웹 서버)에 있는 데이터들을 스크립트에 의해 가공처리한 후 생성되어 전달되는 웹페이지
사용자는 상황, 시간, 요청 등에 따라 달라지는 웹 페이지를 보게 됨
ex) 네이버 메인페이지 등
※ 정적페이지로만 처리하려고 하면 엄청나게 많은 양의 HTML이 필요함 → WAS 필요
WAS(Web Application Server) : 클라이언트의 요청에 맞는 HTML 파일을 만들어 주는 서버 프로그램
※ WAS Apache Tomcat 9.0 설치 및 설정 이클립스
① Tomcat 9.0 다운로드
② workspace로 사용할 폴더를 생성하고 이클립스 실행 후 workspace 교체
③ 서버탭에 있는 No servers are available~ 클릭해서 서버 Tomcat v9.0 Server 지정 후 Tomcat 폴더 지정
④ 포트 오류가 뜬다면 서버 탭의 Tomcat을 클릭해 포트 번호를 1정도 올리거나 해서 바꿔주기
(컴퓨터에 다른 프로그램과 포트 번호 중복이 일어날 수 있음)
4. 서버사이드 스크립트 언어 : 프로그램이 동작되기 위한 작업을 서버에서 제공
- 종류 : PHP, JSP, ASP.net
- JSP : 자바를 기반으로 한 언어
5. Servlet
- Server + Applet : 서버 상에서 작동하는 응용 프로그램
- Java를 기반으로 하는 Web Application Programming 기술
- Client의 요청에 동적으로 작동, 응답은 HTML 형식으로 제공
※ 동적 웹 페이지 프로젝트 시작
New → Dynamic Web Project
New → Other → dy 검색 → Dynamic Web Project
Target runtime의 서버를 확인하고 Finish
※ Servlet, HTML, CSS, JS 위치
▶ Servlet 생성
- Servlet 생성 → Next 2번 클릭
Constructors from superclass, inherited abstract methods 체크
init, destroy, service, doget, dopost 체크
※ 각 코드 혹은 메소드 설명
- URL Mapping 설정
실제 Servlet 클래스의 문자열 경로와 url pattern 일치
외부에서 봤을 때, 다른 url pattern 명으로 변경
※ @ : annotation, 기능을 제공해주는 주석
실제 Servlet 클래스의 문자열 경로와 URL pattern 일치
Ctrl+F11을 눌러 실행하면 나오는 웹 페이지 주소창 주소 확인
- public class Servlet이름 extends HttpServlet { }
HttpServlet을 상속 받는 클래스, Tomcat WAS를 설정했기 때문에 사용 가능
- private static final long serialVersionUID = 1L;
지워도 상관없는 필드이지만, JVM 컴파일 하는 과정에서 Servlet을 못 찾을 수 있기 때문에 지우지 않음
- 생성자
객체 생성, 초기화
그냥 부모 클래스에서 호출만 해서 사용해도 됨 → 안 만들어도 무방하다
(Servlet 호출을 확인하기 위해 생성자 호출 구문 작성)
- init
Servlet 역할을 한다라는 것을 알려주는 초기값 설정하는 메소드
객체 생성 후 자동 호출되며, 딱 한번만 호출됨
Servlet 생성, 초기화하는 작업은 많은 자원이 필요하므로, 똑같은 요청이 들어올 때마다 새로 초기화 하는것은 불필요하다. → 메모리에 올려둠
그냥 부모 클래스에서 호출만 해서 사용해도 됨 → 안 만들어도 무방하다
(Servlet 호출을 확인하기 위해 Servlet 초기화 구문 작성)
- destroy
Servlet 종료 시 실행되는 메소드 (딱 한번만 호출)
그냥 부모 클래스에서 호출만 해서 사용해도 됨 → 안 만들어도 무방하다
(Servlet 호출을 확인하기 위해 Servlet 종료 구문 작성)
- service
Java main method 역할
Clinet 요청을 처리해주는 메소드
요청 방식(get, post, put, delete)의 구분 없이 모든 요청을 처리하는 메소드
(Servlet 호출을 확인하기 위해 Service 호출 구문 작성)
- doGet, doPost
요청 방식에 따라서 다른 기능을 수행하고 싶을 때 사용하는 메소드
▶ Servlet 생성 주기 확인
서버를 중지하고 다시 Ctrl+F11을 눌러 실행시킨 후 콘솔창 확인
① 생성자 호출(생성자) → Servlet 초기화!(init) → Service 호출!!(service)
② 열려있는 웹 페이지에 F5를 눌러 새로고침하면 Service 호출!!(service) 반복
③ 서버탭의 Tomcat을 강제로 중지하면 Servlet 종료!!(destroy)
※ 이클립스 UTF-8 설정하기 (한글 깨짐 방지)
① Window → Preferences
② General → Content Types → CSS, HTML, JSP, JSP 하위항목 → Defalut encoding을 UTF-8로 update
③ Editors → Text Editors → Spelling → Encoding을 Default(UTF-8) 체크 후 apply
④ Web → CSS Files, HTML Files, JSP Files → Encoding을 맨 위 UTF-8로 바꾼 후 apply