[Servlet] 서블릿이란?
* Servlet : jsp가 나오기 전, 자바로 웹 애플리케이션을 개발할 수 있도록 만든 기술
(서버 단에서 클라이언트의 요청을 받아 처리한 후 응답하는 역할)
* 특징
- 클라이언트의 요청에 대해 동적으로 작동하는 웹 애플리케이션 컴포넌트
- MVC 모델에서 컨트롤러 역할을 함
- 모든 메서드는 스레드로 동작
- HttpServlet 클래스를 상속받음
- 서블릿 컨테이너로 작동함 (ex. 톰캣)
- 요청명 기준으로 처리할 서블릿을 선택하기 때문에 요청명(요청 url)과 서블릿(처리할 파일)을 연결해 주는 작업(매핑)을 해야 함
(web.xml에서 매핑하거나 @WebServlet 애노테이션 사용하여 직접 명시(애노테이션을 더 많이 사용하는 추세) )
* 동작 방식 (MVC 패턴, Model 2 방식)
1) 클라이언트의 요청을 받음
2) 분석 후 요청할 서블릿을 찾음
3) 비즈니스 로직을 호출
4) 모델로부터 결괏값을 받아 영역에 저장 후 결과값을 출력할 뷰 선택
5) 뷰(jsp)에 결과값 출력 후 클라이언트에 응답
* 작성 규칙
- 반드시 public으로 선언해야 하고, HttpServlet을 상속받아야 함
- 요청 처리를 위해 doGet() 메서드나 doPost() 메서드를 반드시 오버라이딩 해야 함
(doGet() : request 영역에 데이터 저장 후 jsp로 포워드)
- 오버라이딩한 메서드는 IOException 예외를 던지도록 선언
- 해당 메서드 호출 시 매개변수는 HttpServletRequest와 HttpServletResponse를 사용
(클라이언트의 요청을 전달하고 응답하기 위한 클래스)
* web.xml 매핑 시 왜 에서 요청 url이 .do로 끝나는 이유?
: 꼭 .do라는 이름을 사용할 필요는 없다. (개발자가 원하는 이름으로 지정 가능)
초창기에 다른 서블릿과 URL 충돌을 막기 위해 사용해 왔지만(관례상?) 업그레이드 이후 잘 사용하지 않는 것 같다.
(요즘은 애노테이션 사용으로 매핑 자체도 잘 안 한다고 함!)
[ 참고 서적 (Must Have 성낙현의 JSP 자바 웹 프로그래밍) https://www.yes24.com/Product/Goods/105016218 ]