아파치 -> 프로토콜 규약에 맞춰진 서버
원래 클라이언트가 HTML을 요청하기 위해선 아파치한테 소켓을 연결하는 등 다양한 작업을 해야하지만
브라우저에서 URL을 사용해서 접근하면 아파치가 자동으로 원하는 HTML을 돌려준다 그 후 렌더링만 하면 끝
템플릿 엔진->동적인 기능을 위해 HTML에 프로그래밍 언어를 섞는것
반대로 프로그래밍 언어에 HTML을 섞으려면 변수 관리등 힘든 부분이 너무 많다
WEB.XML -> 필터링 파일, 문지기
INDEX.JSP -> 만약 특별한 요청 없이 들어오면 INDEX.JSP가 실행되라고 WEB.XML에 적혀 있다 (welcome file)
아파치 = 웹서버
톰캣 = 웹어플리케이션 서버 = 라스
브라우저가 html을 요청하면?
아파치가 response한다 (버퍼드 reader와 writer를 둘다 사용한다)
브라우저가 자바파일을 요청하면?
아파치가 자바파일을 response해도 브라우저는 자바파일을 렌더링 할 수 없다, html로 response를 해야한다
아파치가 받아서 톰캣한테 위임
톰캣은 버퍼 역할을 할 2개의 자바 객체를 만들어서 서블릿의 매개변수로 전달한다
1개는 클라이언트가 요청한것(문자열)을 담는 객체, 1개는 서블릿에서 자바영역을 파싱 한뒤 html로 response할 객체
톰캣은 브라우저한테 resp객체에 담긴 자바 + html을 전달한다
이때 브라우저는 html만 이해하기 때문에 브라우저한테 마임타입을 알려줘야 한다
마임타입은 브라우저에 사용되는 확장자 같은거다(실제로 브라우저에서는 확장자가 없다)
마임타입을 알려주면 브라우저가 내가 보내는 데이터가 어떤 형식인지 이해를 할 수 있다
디폴트는 html, 마임타입을 알려줄때 마음대로 하는게 아니라 정해진 규칙 즉 프로토콜에 따라서 적어줘야 한다
버퍼에 담긴 데이터는 헤더와 바디가있는데 헤더에는 마임타입, 바디에는 데이터가 담긴다
템플릿엔진
이렇게 하다가 템플릿 엔진이라는게 개발되었다
자바코드에 html을 섞어서 힘들게 관리하는게 아닌
html에 자바 코드를섞어서 간단하게 처리한다
클라이언트는 서블릿이 아닌 템플릿파일을 바로 요청하게 된다
jsp(템플릿)을 해석하기 위해선 아파치와 톰캣 둘다 작동해야한다
아파치는 자기한테 있는 jsp를 찾아야 하고
톰캣은 jsp안에있는 자바코드를 컴파일 해야하기 때문이다
클라이언트가 템플릿파일을 요청하는걸 모델 1 방식이라고 한다
모델1방식에서 여러 클라이언트가 동시에 request하면 서버가 정신을 못차리니까
단일진입점(프론트 컨트롤러)를 하나 만든다
프톤트 컨트롤러에서 강제성을 통해 허락되지 않는 접근을 막는다
'SpringBoot > PNUMiniBootCamp' 카테고리의 다른 글
CH04 소켓 통신(PNU-BACKEND-BOOTCAMP) (1) | 2024.01.23 |
---|---|
CH02 통신,CHO3 스트림과 버퍼(PNU-BACKEND-BOOTCAMP) (1) | 2024.01.23 |
CH01 자바 OOP(PNU-BACKEND-BOOTCAMP) (0) | 2024.01.22 |