✅ Servlet이 뭔데?
웹 개발시 client의 요청을 처리하고 그 결과를 client에게 다시 전송하는 Servlet 클래스의 구현 규칙을 지킨 자바 프로그램
💡 왜, Servlet이 필요할까?
html
/css
/java script
는 일반 자바 클래스(순수 자바)와 소통 불가Servlet은 그 정의에서도 알 수 있듯이
Servlet 클래스의 구현 규칙을 지킨
자바 프로그램이다.
HTTPServlet
(http 기반의 웹 통신, http 프로토콜을 지원해주는 class) 상속Servlet 객체
는 최초의 client 요청시 한 번만 생성됨
= Servlet 객체 하나로 여러 client 응대
client 한 명당 1:1로 doGet()
메소드 할당
doGet() 메소드 안에 parameter로 개별 HttpServletRequest, HttpServletResponse 입력
- doGet()
: http 표준 요청 방식 get을 재정의 한 메소드
- doGet()을 servlet 안에서 재정의는 하나 명시적 호출 코드는 없음(자동 실행)
- web container(web server, WAS, servlet engine)에 client 요청이 감지되면 자동 실행
client 한 명당 1:1로 HttpServletRequest
객체와 HttpServletResponse
객체 자동 생성
= 요청/응답 객체는 client 간에 공유되지 않고, 개별적으로 할당
기본 생성자 생성 → init() → service()/doGet()/doPost() → destroy()
1. 기본 생성자
2. init()
3. doGet() / doPost()
4. destroy()
HttpServlet
: http 프로토콜을 사용 가능하도록 구현된 class → 상속 후 메소드 재정의만 해서 사용
HttpServletRequest
: http 프로토콜 기반으로 request하는 client 정보 보유(ip/브라우저 기본 정보/입력 데이터 등...)
= doGet(), doPost() 메소드 실행을 위해 필요한 client 정보 제공 API
HttpServletResponse
: http 프로토콜 기반으로 request하는 client에게 response(응답)
응답 포멧 설정 후 해당 client 브라우저에 응답(setContentType()
, getWriter()
)
PrintWriter
: 2byte 단위로 client 브라우저에 출력
//접속한 client 브라우저에 한글 데이터 출력
//한글 encoding 설정 / html 포멧으로 응답
response.setContentType("text/html;charset=utf-8");
//2byte 단위로 client 브라우저에 응답 가능한 출력 객체
PrintWriter out = response.getWriter();
out.println("서블릿은 어려워~");
GET
→doGet()
- 서버에 데이터 전송시 url에 전송되는 데이터 오픈
(http://localhost/step01_basic/idcheck?id=geesuee&pw=5678)
→ id와 pw 값이 url에 그대로 노출됨- 보안 고려 ❌
- (보안과 관계없는)소량의 데이터 전송, web page 구분용으로 사용 ⭕
POST
→doPost()
- 서버에서 데이터 전송시 보안을 고려하여 전송 값을 은닉하여 전송
- 보안이 필요한 경우, 전송하는 데이터 양이 많은 경우 사용 ⭕