이전 포스트 : WAS와 Web server 에서 짤막하게 다루었던 WAS는 클라이언트 - 서버 간의 상호작용을 처리하기 위해 만들어진 컴포넌트라는 것을 언급했다.
이번에는 HTTP 기반으로 수행되는 웹 환경에서 WAS(tomcat)가 실제로 요청을 받아 수행하고 응답하기까지, 즉 비즈니스 로직을 처리할 수 있게 해주는 기술들을 알아본다.
자바 언어로 동작하는 server-side 프로그램이다. 즉 확장자가.java 이다. front endpoint에서 요청을 받으면, 해당 uri에 매핑된 Serlvet이 서버에 접근하여 요청을 수행하고, 동작 결과를 동적으로 생성하여 클라이언트로 응답한다.
Servlet으로 선언하고 싶은 클래스를 HttpServlet 또는 GenericServlet 클래스를 상속하거나 해당 부모 클래스가 구현하고 있는 최상위 인터페이스인 Servlet 인터페이스를 구현하여 사용한다. (Servlet의 컨테이너 생성과 요청, 응답 객체에 대한 내용도 있는데, 이는 다른 포스팅에서 다루도록 한다)
Servlet만을 통해 개발하는 방식을 Model 1이라고도 한다. 내가 느낀 이 개발방법의 가장 큰 단점은, 요청과 Servlet의 매핑이 1대1로만 가능하기 때문에 요청 개수만큼 Servlet도 생성하여야 한다는 점이다. 예를 들어 상품 목록 화면이 있을 때 상품 목록 호출, 등록, 수정, 세부 내용 등 모든 기능에 대해 Servlet이 각각 필요하다. 이런 과정에서 불필요하게 중복되는 코드들이 발생한다.
Servlet | JSP |
---|---|
자바 코드이므로 바로 컴파일된다. 속도가 JSP에 비해 빠르다 | .jsp-> .java->.class로 컴파일 |
html을 직접 작성할 경우 하드코딩해야 하므로 번거롭다 | html 기반에 자바코드만 쓰면 되므로 더 쉽다 |
MVC패턴에서 컨트롤러의 역할과 같음 | view의 역할과 같음 |
세션 관리를 따로 설정해야 한다 | 세션 설정이 기본적으로 포함되어 있다 |
비즈니스로직과 프레젠테이션(리디렉션 또는 뷰)을 모두 한 Servlet에 포함해야 한다 | 로직과 뷰를 분리할 수 있다 |
references : https://www.upgrad.com/blog/jsp-vs-servlet/