JSP 와 Servlet(서블릿) 은 모두 자바로 웹 어플리케이션을 만들기 위한 도구이다.
기본원리는 거의 유사하다.
다만 웹(Web) 을 조금 더 쉽게 다룰 수 있도록 해주는 확장기능 이라고 생각하면 될 것이다.
[ JSP ]
- 확장자가 .jsp 인 파일
- Java Server Page
- html 문서 안에 자바 언어를 삽입해 사용할 수 있도록 해줌
[ Servlet(서블릿) ]
- 확장자가 .java 인 파일
- 자바의 일반적인 클래스와 동일한 개념
- 웹을 다룰 수 있도록 해주는 "HttpServlet" 클래스를 상속받은 클래스를 의미함
JSP 와 Servlet 은 완전 다른 개념이 아니고, Servlet 을 사용해 웹을 만들 경우 화면 인터페이스 구현이
워낙 까다로운 단점을 보완 하기 위해 만든 스크립트 언어가 JSP 라고 볼 수 있다.
웹 어플리케이션은 일반적으로 아래와 같은 구조로 만들어진다.
WEB, WAS, DB 서버는 물리적인 서버가 아닌 논리적인 구조이다.
물리적인 구성은 서버의 스펙과 사용자수, 보안 및 네트워크 구조 드에 맞춰 설계된다.
- 사용자가 URL(또는 IP)을 통해 WEB 서버를 호출하고 요청사항을 객체(request)에 담아 전송
- WEB 서버는 요청 객체(request)를 받아서 바로 처리하거나 어플리케이션 서버(WAS)로 객체 전달
- WAS 서버는 요청에 대한 내용과 요청 객체(request)를 받아 적절히 처리 (필요시 DB 작업 진행)
- WAS 서버는 처리 후 결과를 응답 객체(response)에 담아 WEB서버로 회신
- WEB 서버는 응답 객체(response)를 다시 사용자에게 회신
- 사용자의 브라우저는 WEB 서버가 보내준 코드를 해석해 화면을 구성하여 출력
[ WEB 서버 단일 구성 ]
가장 기본적인 홈페이지 구성
개발자는 미리 모든 페이지를 다 만들어 둔 뒤 웹서버에 올려 두고 사용자가 URL 을 입력하거나 하이퍼링크가 걸린 글/그림 등을 클릭하면 웹서버가 해당하는 페이지를 사용자에게 보내준다.
웹 브라우저는 페이지를 받아서 화면으로 만든 뒤 사용자에게 시가고하 하여 보여준다.
- 페이지는 주로 html, CSS, JavaScript 로 이루어져 있다.
- html 은 뼈대를 만들고 CSS 는 html 컨텐츠를 꾸며주는 정적언어이다.
- JavaScript 는 동적 스크립트로 사오하에 따라 다른 결과를 출력 할수 있는 동적인 스크립트 언어이다.
- html 에서는 if 문을 사용할 수 없는데 JavaScript 는 가능 하다라고 생각하면 된다.
- html , CSS 만으로 이루어진 웹페이지는 그냥 PDF 파일을 보여주는 것과 크게 다르지 않다.
- 세 언어 모두 웹서버에서 코드를 보내주면 브라우저가 해석해서 실행한다.
[ WEB - WAS 서버 단일 구성 ]
WEB 서버 단일 구성 방식은 사용자가 요청하면 해당 페이지를 넘겨주는 정적인 방식이다.
필요한 페이지마다 자바스크립트 등으로 복잡한 로직을 구성해서 모든 페이지를 미리 준비해놔야한다는 단점 이 있다.
컴퓨터의 성능과 네트워크 기술이 발전하며 웹서비스의 복잡도가 점차 증가했고 그만큼 효율적으로 웹서비스를 구성해야할 필요성이 생겼다.
이를 위해 등장한 개념이 WAS(Web Application Server) 이다.
기존 웹서버가 사용자가 요청하는 페이지를 단순하게 반환했다면, WAS 는 사용자의 요청 내용(request) 을 받아 짜여진 로직대로 잘 처리한 뒤 웹페이지를 만들어 사용자에게 응답(response) 해주는 방식이다.
웹페이지는 웹서버를 통해 사용자에게 전달 된다.
WEB 서버와 WAS 는 물리적으로 나눌 수 있고 한 서버안에 기능적으로 나눠둘 수 도 있다.
서로 수행하는 기능이 다르다.
WEB 은 연산이 필요없는 정적 페이지(또는 이미지,파일 등)은 자신이 처리하고, 연산이 필요할 경우 WAS 에게 요청 객체를 넘겨 연산을 수행한 뒤 다시 결과를 받아 환해 준다.
서로 역활을 분담하기 때문에 리소스를 효율적으로 사용 할 수 있다.
리소스 : 사용될 수 있는 어떤 항목을 말함. ex) 메모리
[ WEB - WAS - DB 구성 ]
DB 에는 서버가 연산을 위해 필요한 각종 정보를 저장해 두고 WAS 에서 연산을 수행하며 필요한 정보를 DB 에서 가져오고 편집한다 .
주요 정보를 DB 에 모아둠으로써 정보으 ㅣ구조를 보다 효율적으로 구성할 수 있게 되었고, 사용자가 직접 주요 정보에 다가갈 수 없더록 함으로써 보안도 강화 할 수 있다.
사용자는 서버에 정보를 저장해 둠으로써 기기에 제한받지 않고 서비스를 사용할 수 있다.
[ JAVA SE / JAVA EE ]
- JAVA SE : JAVA Standard Edition
- JAVA EE : JAVA Enterprise Edition
JAVA EE 는 JAVA SE 의 확장 버전으로 서버 개발을 위한 추가 기능을 제공하는 플랫폼 이다 .
간단한 응용프로그램과 서버 구축은 JAVA SE 만으로 구성이 가능하지만,
Tomcat 등의 WAS 를 이용하는 서버 개발은 JAVA EE 에서 추가로 제공하는 기능을 사용 한다.
[ Apache Tomcat(톰캣) ]
- Apache : WEB 서버
- Apache Tomcat : WAS (WebApplication Server)
Apache 는 웹서버 전용 기능, Apache Tomcat 은 WAS 기능을 한다.
" Apache Tomcat = 경량 Apache + Tomcat "
Tomcat(톰캣) 은 WEB/WAS 의 기능을 가진 자바 어플리케이션이다.
JAVA EE 기반으로 만들어 졌다고 한다.
WAS 는 자바로 만들어진 JSP 와 Servlet 을 구동하기 위한 서블릿 컨테이너 역할을 수행한다.
컨테이너 란?
JSP 를 서블릿으로 바꿔서 실행해주는 역할과, 서블릿의 생명주기를 관리하며
웹 환경에서 서블릿이 구동 될수 있도록 해주는 프로그램이다.
WAS 에서는 여러개의 컨테이너를 구성해서 각각 독립적인 서비스로 구동시키는 것이 가능하다.
따라서 WAS 의 컨테이너는 웹서버에서 보내주는 요청을 갖고 스레드(https://donghoson.tistory.com/8)를 생성한 후, 필요한 JSP 나 servlet 파일을 구동(https://ko.dict.naver.com/#/entry/koko/453299aecdd84bf0835a39abdb24a5ec)해서 로직을 수행하게 한 뒤 결과로 생성된 응답 객체를 웹서버에 보내주는 역할을 한다 .
[ Servlet(서블릿)과 JSP ]
Servlet(서블릿)은 JAVA EE 에서 제공하는 서블릿 클래스를 상속받은 클래스를 말한다.
항상 보던 .java 의 클래스 파일과 동일하다.
일반적으로 JSP 는 화면구성에 사용되고 서블릿은 로직을 수행하는데 사용되는 경우가 많다.
(MVC 구조와 연관있다.)
참고로 JSP 는 서버에서 모두 처리되어 최종적으로 클라이언트(사용자)에게 HTML 형식으로 전달되기 때문에
클라이언트단(우리가 실제로 웹에서 보여지는 화면)에서 처리가 필요한 동작 처리는 실행할 수 없다.
따라서 클라이언트(브라우저) 에서 실행되는 동작 처리는 자바스크립트를 통해 처리해줘야 한다.
JSP 에서 자바스크립트도 사용 할 수 있다.
컴파일 이란?
인간이 보기 편하게 만든 소스코드를 컴퓨터가 이해할 수 있는 기계어 구조로 변환하는 일련의 과정
'JSP' 카테고리의 다른 글
Parameter(파라미터)와 Attribute(속성)의 차이 (0) | 2020.11.12 |
---|---|
JSP 내장객체의 구조와 생명주기(session / config / application) (0) | 2020.10.25 |
JSP / Servlet(서블릿) 의 MVC 패턴 (0) | 2020.10.24 |
JSP 기초 (0) | 2020.10.24 |