본문 바로가기

Category/Project20

JAVA TCP 소켓을 사용하여 HTTP통신이 가능한 WAS 직접 구현하기 -4 Servlet 상속 구조   Servlet의 상속구조를 살펴보면 가장 최상위 인터페이스인 Servlet에서부터 GenericServlet, HttpServlet로 내려와우리가 사용하는 서블릿은 HttpServlet를 상속받아 사용한다. 우선, 가장 최상위 인터페이스인 Servlet의 공식문서를 살펴보면, 아래와 같은 메소드를 가지고있다. 서블릿의 생명주기에 관한 메소드인 init() -> service() -> destroy() 와,기타 Servlet에 대한 정보, 초기화에 필요한 객체(이를테면 DB 커넥션등)들을 가져오는 ServletConfig()가 있다. 즉, 모든 Servlet은 init() -> service() -> destroy() 의 과정을 통해 실행된다는 것을 알수있다. 그런데, Gene.. 2024. 9. 26.
JAVA TCP 소켓을 사용하여 HTTP통신이 가능한 WAS 직접 구현하기 -3 클라이언트로부터 받은 메시지를 HTTP 형식에 맞는 Request , Response 객체에 담아 파싱하기 우선 HTTP 메시지 형식에 대해 간단히 알아보면,아래와 같이 Start Line / Header / Body(선택) 로 되어있다.  클라이언트로 부터 TCP 소켓을 사용하여 받아온 메시지를 읽어와 HTTP 형식으로 파싱하기위해실제 HTTP 메시지를 살펴보자.    - Start Line은 공백(" ")을 기준으로 구분되며 HttpMethod / URL / HTTP protocol 로 나뉘어져있다. - header는 key : value 형식으로 있으며 start line 다음 줄부터 빈줄(blank line)까지  다양한 header들이 있다.- body는 headers의 빈줄(blank line.. 2024. 9. 24.
JAVA TCP 소켓을 사용하여 HTTP통신이 가능한 WAS 직접 구현하기 -2 WAS는 어떤기능을 가지고있어야 하는가? 이전에 알아보았던 Tomcat이 클라이언트의 요청을 받아 관련된 서블릿을 생성해주는 과정을 바탕으로 직접 구현해볼 WAS가 어떠한 기능을 가지고 있어야할지 일종의 기능요구사항들을 작성해보자. 1. 클라이언트의 HTTP 메시지를 수신할수있어야한다.     - 해당 HTTP 메시지를 읽고,쓰기쉽도록 적절한 형식으로 파싱할수 있어야한다.2. 수신된 HTTP 메시지(Request)를 누구에게 전달할지 결정할수있도록 Connector가 필요하다.    - Connector은 특정 PORT와 특정 프로토콜에 해당하는 커넥터들이 여러개 필요하지만, 여기에서는 HTTP 프로토콜만 다루도록 한다.3. 전달받은 Request를 처리해줄 일종의 Servlet 기능을 제공해야한다.  .. 2024. 9. 19.
JAVA TCP 소켓을 사용하여 HTTP통신이 가능한 WAS 직접 구현하기 -1 Spring 프레임워크를 사용하여 웹개발을 하면서  요청을 꺼내쓸때는 request 객체를 사용해야한다는 '최종적인' 수단만 공부해오다보니, 정작 서블릿 컨테이너가 정확히 무얼하는지도 모를만큼 Web에 대한 기본기가 부족한것이었다.그동안 당연하게 사용해왔던 WAS인 tomcat에 대해 알아보고 tomcat없이도 내가만든 Web Application이 클라이언트와 원활하게 HTTP 통신을 주고받을수있는 WAS를 직접 구현해보기로 하였다.  Web Service의 전반적인 처리과정  웹 서비스의 전반적인 처리과정은 다음의 아키텍처와 같다.  위의 처리과정에서 WAS가 담당하고있는 부분은 아래의 과정이다. 1. 브라우저를 통해 사용자가 HTTP 요청을 보낸다.2. WAS(Tomcat)의 Connector에서 .. 2024. 9. 12.