Servlet과 JSP의 개념
기능의 차이는 없고 역할의 차이만 있다. (하는 일은 동일)
한줄요약,
Servlet 은 Html in JAVA, JSP는 JAVA in Html 이다.
Servlet이란
웹 기반의 요청에 대한 동적인 처리가 가능한 Server Side에서 돌아가는 Java Program
Java 코드 안에 HTML 코드 (하나의 클래스)
웹 개발을 위해 만든 표준
구체적인 내용은 https://gmlwjd9405.github.io/2018/10/28/servlet.html 참고
JSP 란
Java 언어를 기반으로 하는 Server Side 스크립트 언어
HTML 코드 안에 Java 코드
Servlet를 보완하고 기술을 확장한 스크립트 방식 표준Servlet의 모든 기능 + 추가적인 기능
JSP 쉬운사용법
<%-- 내용 --%> : 주석
<%@ 내용 %> : 다양한 페이지 설정들을 명시할 때 사용
<%! 내용 %> : JSP에서 선언시 사용
<% 내용 %> : java 코드들을 입력하는 부분
<%= 내용 %> : 표현식, 예로 설명 ------- <h1><%= 변수 %><h1>은 <h1>변수의 값<h1>과 같다.
결론
Servlet과 JSP의 차이
Servlet
Java 코드 안에 HTML 코드 (하나의 클래스)
data processing(Controller)에 좋다.
Servlet이 수정된 경우 전체 코드를 다시 컴파일한 후 재배포하는 작업이 필요하다. (개발 생산성 저하)
JSP
HTML 코드 안에 Java 코드
presentation(View)에 좋다.
즉 요청 결과를 나타내는 HTML 작성하는데 유용하다.
JSP가 수정된 경우 재배포할 필요가 없이 WAS가 알아서 처리한다. (쉬운 배포)
Servlet과 JSP의 관계
1. JSP만을 이용하는 모델
JSP가 사용자의 요청을 받아 Java Bean(DTO, DAO)을 호출하여 적절한 동적인 페이지를 생성한다.
동작 과정
1. JSP로 작성된 프로그램은 내부적으로 WAS에서 Servlet 파일로 변환
2. JSP 태그를 분해하고 추출하여 다시 순수한 HTML 웹 페이지로 변환
3. 클라이언트로 응답
특징
개발 속도가 빠르다.
배우기 쉽다.
프레젠테이션 로직(View)과 비즈니스 로직(Controller)이 혼재한다.
JSP 코드가 복잡해져 유지 보수가 어려워진다.
2. JSP와 Servlet을 모두 이용하는 모델 (MVC Architecture)
JSP와 Servlet을 모두 사용하여 프레젠테이션 로직(View)과 비즈니스 로직(Controller)을 분리한다.
View(보여지는 부분)는 HTML이 중심이 되는 JSP를 사용
Controller(다른 자바 클래스에 데이터를 넘겨주는 부분)는 Java 코드가 중심이 되는 Servlet을 사용
Model은 Java Beans로, DTO와 DAO를 통해 Mysql과 같은 DataBase에 접근
구체적인 MVC 패턴은 MVC-Architecture 참고
관련된 Post
Web Service의 기본적인 동작 과정과 Servlet에 대해 알고 싶으시면 Servlet 이란을 참고하시기 바랍니다.
JSP의 개념과 기본 문법에 대해 알고 싶으시면 JSP 란을 참고하시기 바랍니다.
Web Server와 WAS의 개념과 차이에 대해 알고 싶으시면 Web Server VS WAS를 참고하시기 바랍니다.
Web Application Structure과 web.xml 설정 내용, 역할 및 간단한 예시에 대해 알고 싶으시면
eb Application Structure 이해하기를 참고하시기 바랍니다.
https://gmlwjd9405.github.io/2018/11/04/servlet-vs-jsp.html
'Study > Knowledge' 카테고리의 다른 글
[Network] TCP와 UDP 차이점 (0) | 2020.03.23 |
---|---|
[Network] TCP/IP 4계층 (TCP/IP 4 Layer) (0) | 2020.03.23 |
[Network] TCP와 UDP 차이 요약 (0) | 2020.03.22 |
[JAVA] Primitive , Reference 차이 (0) | 2020.03.22 |
[JAVA] String, int 초간단 형변환 (0) | 2020.03.22 |