ㅅㅂㄹ

황선영·2023년 10월 20일
0

서블릿 이란?
동적페이지 만드는데 사용되는 웹서버 프로그램.
자바로 만들어진 코드 뭉탱이 이다.

클라이언트의 요청을 받고, 응답데이터 전송하는 역할의 프로그램.

웹이란?

사용자가 요구하는 데이터가 '동적데이터' 이다-> 요청시 프로그래밍을 거쳐서 전달해야하는 데이터를 뜻함
동적데이터 : 요청이 발생할 때 마다 서버측에서 프로그래밍논리에 따라 데이터가 가공돼서 전달되는 데이터를 의미.

static data : 매 요청마다 변겨오디지 않고 항상 동일한 값을 반환한다.
예로 css파일, 자바스크립트 이런파일.

dynamic data : 클라이언트의 요청에 따라 프로그래밍로직을 통해 가공되는 데이터. 서버측에서 동적으로 생성되어 클라이언트에게 전달됨. 예를 들어, 사용자의 요청에 따라 데이터베이스에서 가져온 정보, 계산 결과, 사용자의 입력에 기반한 응답 등은 동적인 데이터입니다.

이러한 동적데이터를 생성,전달 위해서는 서버사이드기술(서블릿,jsp,스프링 등)을 사용해야함. 그결과로 동적데이터 생성하여 응답으로보냄.,.,,.

서블릿,스프링은 CGI라는디

웹서버랑 WAS는 조금 다름.
즉 WAS의 주요 임무는 동적인 요청을 받아 처리해주는 서버입니다.

위 각각의 설명글을 읽었다면 충분히 파악할 수도 있는 부분이지만 정리하자면 기능적으로 동일한 영역이 있으며 WAS가 웹서버 기능의 많은 부분을 포함하여 수행하기도 하지만 사용의 “목적”이 다릅니다.
WAS는 동적인 데이터를 위주로 처리하는 서버입니다. DB와 연결되어 사용자와 데이터를 주고받고 조작이 필요한 경우 WAS를 활용합니다.

그렇다면 웹서버가 할 수 있는 일을 WAS가 전부 가능하다면 웹서버는 굳이 사용하지 않아도 되지 않을까…? 라고 생각이 들 수 있는데 그렇진 않습니다
->딱 내가 한 생각;;

물론 정적인 콘텐츠만을 제공하는 웹사이트를 서버에 배포한다면 웹서버만으로도 충분합니다. 그런데 동적인 컨텐츠를 제공해야 하는 웹서비스 배포를 해야 한다고 한다면 정적, 동적 요청 처리가 모두 가능한 WAS만을 사용해도 되지 않겠냐는 생각을 할 수도 있습니다.

하지만 WAS는 DB 조회 및 다양한 로직을 처리하는 데 집중해야 합니다.
따라서 단순한 정적 콘텐츠는 웹 서버에게 맡기며 기능을 분리해 서버 부하를 방지해줘야 합니다.

만약 WAS가 정적 콘텐츠 요청까지 처리하게 된다면, 부하가 커지고 동적 컨텐츠 처리가 지연되면서 수행 속도가 느려지고 이에 따라 페이지 노출 시간이 늘어나는 문제가 발생하여 효율성이 크게 떨어지게 됩니다.

웹 서비스는 아래처럼 다양한 구조를 가질 수 있습니다.

Client -> 웹서버 -> DB
Client -> WAS -> DB
Client -> 웹서버 -> WAS -> DB

https://story.pxd.co.kr/1647

📌 덧붙이는 글
윗을 읽고 나면 조금 의문이 드는 부분도 있을 겁니다. 웹서버만으로도 분명 동적인 요청 처리가 가능하거든요 예를 들면 PHP의 경우 WAS 없이 아파치나 nginx만을 통해서 동적인 요청 처리가 가능합니다. 그걸 가능하게 해주는 게 🔗 CGI입니다 웹서버에 별도로 설정해주어야 합니다. CGI는 이름 그대로 인터페이스로서, 웹 서버상에서 프로그램을 동작시키기 위한 방법을 정의한 프로그램(또는 스크립트)입니다.
CGI란 위에 설명해 놓았듯이 동적컨텐츠를 제공하기 위해 웹서버 내에 프로그랭밍 기능이 들어가는 방식 입니다. 기술이름인겨?


http?
hypertext transter protocal
ypertext(하이퍼텍스트)는 텍스트 기반의 정보를 링크를 통해 다른 텍스트나 미디어와 연결할 수 있는 방법을 가리킵니다

즉 하이퍼텍스트 변환 프로토콜.규약.

웹통신 하려면 보통http로 한다. html를 이용하는 통신규약이다.
hypertext markup language.

http메시지는 http서버와 http클라이언트에 의해 해석이 된다.
연결 상태를 유지하지 않는 비연결성 프로토콜이다. -> 보완법 : cookie,session

요청과 응답은 무조건 1:1이다. 요청한개밖에,응답도 한개밖에.

http요청에 포함되어잇는 요소는
버전유형,url,메서드,요청헤더,본문(선택사항) 이 있다.

Request(요청 )메서드중 대표 두가지get,post
겟 : 자료를 '요청'할대 사용. 응답으로 data를 기대한다.
포스트 : 클라이언트가 웹서버에 정보를 제출한다.

요청헤더 : 클라이언트가 웹서버로 요청을 보낼때 요청의 메타데이터를 포함하는 부분.
(메타데이터:데이터에대한 정보를 제공하는 데이터)
요청의 속성을 정의하고,서버에게 클라이언트의 정보를 제공한다.

요청본문 : 말그대로.. 전송되는 정보의 본문.


기존에 처리방식 jsp만 쓸때

스ㅓ블릿 사용할ㄷ

jsp파일이아니라 특정 명령을 요청한다 그 명령을 구분해서 웹컨테이너(톰캣)은
준비ㅚㄴ 서블릿들을 처리하게할수잇다. 그리고 저 서블릿들은 extends HttpServlet을상속하고 있어야 request를처리할수잇다.

profile
개발필기노트

0개의 댓글