먼저 JSP와 Servlet의 차이에 대해서 알아보자
Servlet | JSP | |
---|---|---|
정의 및 구조 | 순수 Java 코드로만 이루어진 웹서버용 클래스 동적 웹페이지를 만들 때 java 코드 안에 HTML 태그가 삽입되는 구조. | HTML 코드 속에 자바 코드가 들어가는 구조의 스크립트 언어 |
코드 내 처리방법 | 자바 코드 속에서 HTML 태그로 문자열(””) 로 처리해야 함. | HTML 속에서 자바코드를 <% 소스코드 %> 또는 <%= 소스코드 =%>형태로 처리. (자바 소스코드로 작성된 부분은 웹 브라우저로 보내는 것이 아니라 웹 서버에서 실행됨) |
한계(Servlet)와 보완(JSP) | 1. 화면 인터페이스 구현에 너무 많은 코드를 필요로 하는 비효율성 2. 테스트할 때 빌드를 항상 다시해야 한다는 한계가 있음 3. HTML 변경 시 Servlet을 재컴파일해야 하는 단점 | → 이에 따라 서블릿 기반의 서버사이트 스크립트 언어 JSP가 등장 1. HTML 표준에 따라 작성되므로 서블릿과 달리 웹페이지 작성이 편리하고, 2. WAS에서 자동으로 빌드하고 클라이언트 화면에 동적으로 보여준다. |
MVC 패턴에서의 역할 | Controller 역할 | View 역할 |
출처: https://velog.io/@effirin/Servlet%EA%B3%BC-JSP%EC%97%90-%EB%8C%80%ED%95%B4
웹 브라우저 -> 웹 서버 -> 서블릿 컨테이너 -> .class -> 웹서버 -> 웹브라우저
웹 브라우저 -> 웹 서버 -> JSP 컨테이너 -> .jsp ->.java( 서블릿파일 ) ->.class -> 웹 서버 -> 웹 브라우저
이 그림도 보자 Apache만 이용한 웹서버는 정적인 파일만 처리 가능하지만 Apache+Tomcat을 같이 사용한 WAS는 동적인파일인 JSP 도 사용가능하다. ( 내부적으로 JSP를 Servlet으로 변환시킨다 )
그럼 굳이 이런 체계를 사용하는 이유는 무엇일까?
-> 웹디자이너는 자바코드를 잘 다룰 수 없기 때문에 자바 클래스 파일인 Servlet을 사용하기 어렵다. 따라서 JSP를 서블릿으로 변환하는 체계를 쓴다, JSP는 웹 디자이너에게 친화적일 수 있도록 마크업 기반의 스크립트로 개발되어지기 때문에 디자이너가 평소 HTML을 다루듯 사용할 수 있다.
https://jminc00.tistory.com/22 -->서블릿 컨테이너에 대한 상세한 내부 동작 정보
https://denodo1.tistory.com/37 --> WAS?, 아파치,톰캣?
https://byul91oh.tistory.com/65 --> 아파치, 톰캣이란?
https://dololak.tistory.com/82 --> JSP, Servlet 변환체계를 쓰는 이유?
https://frootjy.tistory.com/15 --> WAS는 웹서버 + 웹컨테이너