BE/Servlet

[Servlet] 서블릿이란?

スモモ🍒 2024. 2. 27. 23:34

* Servlet : jsp가 나오기 전, 자바로 웹 애플리케이션을 개발할 수 있도록 만든 기술

(서버 단에서 클라이언트의 요청을 받아 처리한 후 응답하는 역할)

 

* 특징

- 클라이언트의 요청에 대해 동적으로 작동하는 웹 애플리케이션 컴포넌트

- MVC 모델에서 컨트롤러 역할을 함

- 모든 메서드는 스레드로 동작

- HttpServlet 클래스를 상속받음

- 서블릿 컨테이너로 작동함 (ex. 톰캣)

- 요청명 기준으로 처리할 서블릿을 선택하기 때문에 요청명(요청 url)과 서블릿(처리할 파일)을 연결해 주는 작업(매핑)을 해야 함

(web.xml에서 매핑하거나 @WebServlet 애노테이션 사용하여 직접 명시(애노테이션을 더 많이 사용하는 추세) )

 

* 동작 방식 (MVC 패턴, Model 2 방식)

1) 클라이언트의 요청을 받음

2) 분석 후 요청할 서블릿을 찾음

3) 비즈니스 로직을 호출

4) 모델로부터 결괏값을 받아 영역에 저장 후 결과값을 출력할 뷰 선택

5) 뷰(jsp)에 결과값 출력 후 클라이언트에 응답

더보기
MVC 패턴 (Model : DAO/DTO, View : JSP, Controller : Servlet)

 

* 작성 규칙

- 반드시 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 ]