웹 프로그래밍과 서블릿
* pdf p.41~
웹 프로그래밍의 큰 흐름
JSP의 주요 구성 요소
Get/Post 데이터 전송 방식
서버에 요청(Request) 하기 위한 전송 방식은 get/post 두가지가 있음
Http프로토콜이 제공해주는 7가지 메서드들 중 웹서비스 개발에 주로 사용하는 메서드
1. Get
요청URL에 데이터(파라미터값)을 붙여서 전송해주는 방식
key=value(이름=값)으로 매핑하고 &(앤퍼센트)로 파라미터 구분
속도가 빠름(캐싱때문에)
보안이 취약함(URL에 데이터가 표시되어)
길이에 제한이 있음(256byte)
get방식 지정방법
<form action="주소" method="GET">
2. Post
데이터 전송을 기반으로 한 요청 메서드
데이터(파라미터)를 body(본문)에 담아서 전송함
속도가 get보다 비교적 느림
보안이 get보다 비교적 좋음
길이에 제한이 없음
3. Content Type (=MIME Type, 문서의 종류)
* 참조 : pdf수업자료 p.62 & https://mommoo.tistory.com/m/60
인터넷을 통한 문서를 주고 받을 때 사용되는 문서형식을 정의한 것
브라우저에 내려 보내는 데이터의 유형을 지정할 때 사용
즉 JSP가 생성할 문서의 종류를 지정할 때 사용함
post방식으로 데이터를 보낼 땐 컨텐츠 타입을 꼭 명시해줘야 함
post방식은 body에 데이터를 넣어 보내기 때문에 content-type이라는 헤더필드가 들어가고,
(content-type는 header필드 중 body의 데이터를 설명함)
아래와 같이 어떤 데이터 타입인지를 명시해줘야 함
1 application/x-www-form-urlencoded
2 text/plain
3 multipart/form-data
웹 프로그래밍 구조
프로그램구조
웹 프로그래밍 구성요소
1. 자원(resource)
html페이지, 소리/이미지/pdf파일 등
2. 웹 서비스
서버 인프라 구축하여 서비스하는 행위
3. 클라이언트
일반적으로 웹 브라우저
4. 웹 서버
클라이언트 요청(request)받아 처리결과를 응답(response) 해줌
5. 웹 어플리케이션 서버
웹서버의 업무 분담
6. (서블릿) 컨테이너
서블릿을 관리/실행해주는 프로그램
7. 톰캣
서블릿(Servlet)
클라이언트 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는,
Servlet클래스의 구현 규칙을 지킨 자바 프로그램 이라고 이해하면 됨
(자바와 관련있으므로 JDK가 필요. 즉 자바API와 이를 동작시키는 JVM이 필요함)
* 서블릿 관련 참조 출처 : https://jusungpark.tistory.com/15 & https://breath91.tistory.com/m/82
서블릿 컨테이너
서블릿 컨테이너는 서블릿을 관리해주는 역할을 수행함
- 서블릿의 생명주기를 관리
- 요청에 따른 스레드를 생성해 작업을 수행함
- 클라이언트의 request를 받아주고 response를 보낼 수 있도록
웹서버와 소켓을 만들어 통신 해줌 (통신지원)
서블릿 동작과정
서블릿 생명주기(Servlet Life Cycle)
서블릿 생성 > init() > { service() > doXX() > destory() } > 서블릿 종료 ( {} 반복 )
서블릿 관련 메소드
일반적으로 사용자가 만드는 서블릿은 javax.servlet.HTTP.HTTPServlet을 상속받아 구현함
개발자가 작성하는 서블릿클래스는 추상클래스 HttpServlet에 있는 메소드 중
클라이언트 사용자가 요청한 정보에 따라 처리해야할 메소드를 오버라이딩해서 구현함
doGet() : 클라이언트 Http Get요청에 대해 처리
doPost() : 클라이언트 Http Post요청에 대해 처리