Programming/SpringMVC

Programming/SpringMVC

타임리프 - 기본 기능

목차 프로젝트 생성 - 스프링 공식 홈페이지에서 프로젝트 구성 (https://start.spring.io) - IntelliJ Ultimate 이상이면 자체적으로 생성가능 프로젝트 구성 Project: Gradle - Groovy Language: Java Sprng Boot: 2.5.x Protject MetaData - Group : hello - Artifact: thymeleaf-basic - Name: thymeleaf-basic - Package name: hello.thymeleafbasic - Packaging: Jar - java: 11 Dependencies - Spring Web - Thymeleaf - Lombok build.gradle plugins { id 'org.spring..

Programming/SpringMVC

스프링 MVC - 웹 페이지 만들기

목차 프로젝트 생성 스프링 공식 홈페이지에서 프로젝트 구성 (https://start.spring.io) IntelliJ Ultimate 이상이면 자체적으로 생성가능 프로젝트 구성 프로젝트 선택 Project: Gradle - Groovy Language: Java Sprng Boot: 2.4.x Protject MetaData Group : hello Artifact: springmvc Name: springmvc Package name: hello.springmvc Packaging: Jar java: 11 Dependencies Spring Web Thymeleaf Lombok build.gradle plugins { id 'org.springframework.boot' version '2.4.3'..

Programming/SpringMVC

스프링 MVC - 기본 기능

목차 프로젝트 생성 - 스프링 공식 홈페이지에서 프로젝트 구성 (https://start.spring.io) - IntelliJ Ultimate 이상이면 자체적으로 생성가능 프로젝트 구성 Project: Gradle - Groovy Language: Java Sprng Boot: 2.4.x Protject MetaData - Group : hello - Artifact: springmvc - Name: springmvc - Package name: hello.springmvc - Packaging: Jar - java: 11 Dependencies - Spring Web - Thymeleaf - Lombok 주의! Packaging는 War가 아니라 Jar를 선택해주세요. JSP를 사요하지 않기 때문에 ..

Programming/SpringMVC

스프링 MVC - 구조 이해

스프링 MVC 전체구조 직접 만든 MVC 프레임워크와 스프링 MVC를 비교해보자. 직접 만든 MVC 프레임워크 구조 SpringMVC 구조 직접 만든 프레임워크 스프링 MVC 비교 FrontController -> DispatcherServlet handlerMappingMap -> HandlerMapping MyHandlerAdapter -> HandlerAdapter ModelView -> ModelAndView viewResolver -> ViewResolver MyView -> View DispatcherServlet 구조 살펴보기 org.springframework.web.servlet.DispatcherServlet 스프링 MVC도 프론트 컨트롤러 패턴으로 구현되어 있다. 스프링 MVC의 프론..

Programming/SpringMVC

MVC 프레임워크 만들기

프론트 컨트롤러 패턴 소개 이전 챕터(서블릿, JSP, MVC패턴)에서 사용한 MVC 패턴의 한계점인 공통 처리가 힘들다는 부분을 해결하기 위해서 프론트 컨트롤러 패턴을 사용한다. 프론트 컨트롤러 패턴은 서블릿 하나로 클라이언트의 요청을 받아 이 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출해주는 역할을 함으로써 공통 영역을 한군데 몰아넣을 수 있다. 그렇게 함으로써 여러 컨트롤러에 산재되있던 공통 코드를 프론트 컨트롤러 하나로 모을 수 있고, 더하여 프론트 컨트롤러를 제외하면 서블릿을 상속해서 구현해줄 필요도 없다. 현재 스프링 웹 MVC의 DispatcherServlet도 이 FrontController 패턴으로 구현되어 있다. 기존의 MVC Pattern만 적용한 상태 공통 코드가 모든 컨트..

Programming/SpringMVC

MVC 패턴

MVC 패턴 - 개요 변경의 라이프 사이클 사실 이게 정말 중요한데, 진짜 문제는 둘 사이에 변경의 라이프 사이클이 다르다는 점이다. 예를 들어서 UI 를 일부 수정하는 일과 비즈니스 로직을 수정하는 일은 각각 다르게 발생할 가능성이 매우 높고 대부분 서로에게 영향을 주지 않는다. 이렇게 변경의 라이프 사이클이 다른 부분을 하나의 코드로 관리하는 것은 유지보수하기 좋지 않다. (물론 UI가 많이 변하면 함께 변경될 가능성도 있다.) 기능 특화 특히 JSP 같은 뷰 템플릿은 화면을 렌더링 하는데 최적화 되어 있기 때문에 이 부분의 업무만 담당하는 것이 가장 효과적이다. Model View Controller MVC는 Model, View, Controller의 약자이며, 각 레이어간 기능을 구분하는데 중점..

Programming/SpringMVC

웹 애플리케이션 이해 - HTML, HTTP API, CSR, SSR

정적 리소스 프로그램 실행시 변경되는 정보가 거의 없는 자원이다. 고정된 HTML파일, CSS, JS, 이미지, 영상 등을 제공 주로 웹브라우저 HTML 페이지 동적으로 필요한 HTML 파일을 생성해서 전달. 웹 브라우저 : HTML 해석 HTTP API HTML이 아니라 주로 데이터를 전달 주로 JSON 형식 사용 다양한 시스템에서 사용 다양한 시스템에서 활용가능 데이터만 주고 받는다. UI 화면이 필요하면, 클라이언트가 별도 처리 앱, 웹 클라이언트, 서버 to 서버 주로 JSON 형태로 데이터 통신 UI 클라이언트 접점 앱 클라이언트(아이폰, 안드로이드, PC 앱) 웹 브라우저에서 자바스크립트를 통한 HTTP API 호출 React, Vue.js 같은 웹 클라이언트 서버 to 서버 주문 서버 -> ..

Programming/SpringMVC

웹 애플리케이션 이해 - 동시 요청/멀티 쓰레드

쓰레드 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드(multithread)라고 한다.(출저: 위키백과) 쓰레드에서 서블릿 객체를 호출해준다. 애플리케이션 코드를 하나하나 순차적으로 실행하는 것은 쓰레드 자바 메인 메서드를 처음 실행하면 main이라는 이름의 쓰레드가 실행 쓰레드가 없다면 자바 애플리케이션 실행이 불가능 쓰레드는 한번에 하나의 코드 라인만 수행 동시 처리가 필요하면 쓰레드를 추가로 생성 쓰레드를 하나만 사용할 경우 생기는 문제 하나의 웹 브라우저에서 요청1을 한 상황에서 쓰레드가 요..