본문 바로가기

전체 글119

프로젝트 생성 | 김영한MVC1편 start.spring.io 에서 스프링부트 프로젝트를 생성해보자 Gradle은 프로젝트 내 설정파일이다. Groovy 언어를 선택한다.Language는 JavaSpring Boot 버전은 SNAPSHOT을 제외한 버전을 선택한다. (안정된) Packaging은 War를 선택한다. 이 강의에서는 JSP를 사용해볼껀데, Jar는 JSP를 지원하지 않기 때문이다.보통은 Jar를 선택하여 생성한다. 그리고 하단의 Dependency(의존성)의 ADD를 누르고 Spring Web(WAS 내장), Lombok(어노테이션 기반 개발편리 툴) 원하는 폴더에 저장하고, build.gradle을 인텔리제이로 실행한다. 처음 실행하면 초기설정에 시간이 좀 걸린다. 설정이 끝난 후 우측 상단의 초록 방향 표시(Run 버.. 2024. 9. 24.
자바 웹 기술 역사 | 김영한MVC1편 JSP는 HTML 코드에 자바의 코드를 넣어 동적 HTML을 만들기가 편했다. 하지만, 자바의 코드를 사용해 데이터를 처리하고, HTML에 보여주는 역할과, HTML을 그리는 렌더링 역할까지 전부 하나의 파일안에서 수행해야 했기 떄문에, 굉장히 코드 가독성이 떨어지고, 유지보수면에서 불리했다. 이를 보완하고자, MVC 패턴이 사용된다. (SSR에서 사용하는 방식)클라이언트의 요청에 맞는 API를 호출 및 처리 하기 위한 컨트롤러(Controller)처리가 완료된 데이터를 담아 HTML로 보내기 위한 모델(Model)데이터를 받아 HTML위에 그리는 작업을 하기 위한 뷰(View) 현재의 사용 기술애노테이션 기반의 스프링 MVC 등장@ControllerMVC 프레임워크의 전국 시대를 마무리하게 되었다... 2024. 9. 24.
HTML, HTTP API, CSR, SSR | 김영한MVC1편 정적 리소스는 이전에 다루어 보았다.고정된 HTML 파일, CSS, JS, 이미지, 영상 등을 제공한다.웹 서버에 기존에 생성되어 있는 파일로 제공 HTML 페이지동적으로 필요한 HTML 파일을 생성해서 전달웹 브라우저: HTML 해석주로 뷰 템플릿 (타임리프, JSP)으로 동적으로 HTML을 생성한다. HTTP APIHTML이 아니라 데이터를 전달주로 JSON 형식 사용다양한 시스템에서 호출데이터만 주고 받음, UI화면이 필요하면, 앞단에서 별도 처리한다.앱 간, 웹 클라이언트 간, 서버 TO 서버최근에는 자바스크립트의 AJAX, FETCH API등을 통해서 서버에 있는 API를 호출한다.WAS 서버가 이 응답을 데이터(JSON)으로 전달하면, 클라이언트는 이 데이터를 포함하여 HTML을 구성하여 유저.. 2024. 9. 24.
동시요청 - 멀티 쓰레드 | 김영한MVC1편 클라이언트가 서버로 요청하면 서버는 응답을 한다. TCP/IP 커넨션 연결을 하며 서블릿을 호출하는데, 서블릿 객체를 누가 호출할까? 쓰레드라는 놈이 있다. 쓰레드애플리케이션 코드를 하나하나 순차적으로 실행하는 것은 쓰레드자바 메인 메서드를 처음 실행하면 main이라면 이름의 쓰레드가 실행쓰레드가 없다면 자바 애플리케이션 실행이 불가능쓰레드는 한번에 하나의 코드 라인만 수행동시 처리가 필요하면 쓰레드를 추가로 생성단일 요청 - 쓰레드 하나 사용 다중 요청 - 쓰레드 하나 사용요청이 오면 쓰레드할당하여 서블릿을 호출한다. 하지만 다중 요청인 경우, 첫번째 요청의 처리가 지연되고 있다면, 두번째 요청은 쓰레드가 현재 첫번째 요청에 대해 할당되어 하나밖에 없기때문에, 계속 대기가 일어난다.. 첫번째 요.. 2024. 9. 24.
서블릿 | 김영한MVC1편 이전 시간에서, 클라이언트가 HTTP 통신으로 서버에게 요청을 하면 서버는 그에 따른 응답을 한다고 알게 됐다. 클라이언트는 HTTP 통신 규약에 맞는 다양한 형식으로 전송한다. HTTP는 단순한 텍스트로 이루어져있는데, 서버는 이것을 어떻게 이해하고 응답을 보내는 것일까 우측이 클라이언트가 요청한 HTTP 메시지이다. 이걸 직접 개발자가 만드려면 우선 메시지를 받을 TCP/IP 연결 대기로직을 짜고, 소켓 연결을 하고,, HTTP 표준에 따라 해당 텍스트들을 자르고, 파싱하고,,,모든 HTTP 텍스트 메시지마다 이것을 처리한다고 하면,,,,, 다행히 서블릿을 지원하는 WAS는 이러한 복잡한 전/후 처리를 자동으로 해결해준다. 따라서 개발자는 해당 url에 따른 처리 알고리즘. 즉 비즈니스 로직만 구현.. 2024. 9. 19.
Web server, WAS(web application server) | 김영한 MVC1편 web은 기본적으로 서버와 클라이언트의 구조를 가진다. 서버는 클라이언트의 요청을 확인하고 이에 맞는 올바론 응답을 전달한다. 그러면 어떻게 서버는 클라이언트가 어떤 요청을 보냈는지, 다양한 요구에 올바르게 응할 수 있을까? HTTP (Hyper Text Transfer Protocol)web은 HTTP통신이라는 것을 통해 서버와 클라이언트들이 서로 통신을 한다. HTTP는 서버와 클라이언트간의 통신 방법이라고 생각하면 된다. HTTP의 요청방식에는 여러가지 형식이 있는데 클라이언트는 이 형식에 맞게끔 요청을 보낼 수 있다. 컴퓨터의 통신에는 정말 많은 종류의 프로토콜이 있지만 웹은 HTTP를 사용하여 통신한다는 점을 기억하자. 모든 것이 HTTP.클라이언트는 HTTP 메시지에 모든 것을 전송할 수 있.. 2024. 9. 19.