타임리프특징서버 사이드 HTML 렌더링(SSR)백엔드 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용Natural Template순수 HTML을 최대한 유지하는 특징웹 브라우저에서 파일을 직접 열어도 내용 확인이 가능서버를 통해 뷰 템플릿을 거치면 동적ㅇ로 변경된 결과를 확인 가능순수 HTML을 그대로 유지하면서 뷰 템플릿도 사용할 수 있는 특징을 Natural Templates라고 함스프링 통합 지원스프링의 다양한 기능을 편리하게 사용 가능타임리프 기본 기능타임리프 사용 선언 기본 표현식• 간단한 표현: ◦ 변수 표현식: ${...} ◦ 선택 변수 표현식: *{...} ◦ 메시지 표현식: #{...} ◦ 링크 URL 표현식: @{...} ..
드디어 웹 사이트(매우매우매우 간단한..)에서의 동작과 함께 서비스를 만들어보자.매우 간단하게 상품을 등록하고, 상세화면을 보고, 목록을 조회할 수 있는 사이트이다. 서비스의 흐름은 아래와 같다. 프로젝트가 작은 규모의 경우웹 퍼블리셔가 디자이너에게 받은 디자인을 기반으로 HTML, CSS를 만들어 백엔드 개발자에게 제공한다.백엔드 개발자는 웹 퍼블리셔를 통해 화면이 나오기 전까지 시스템을 설계하고, 비즈니스 모델을 개발이후 HTML이 나오면 이 HTML을 뷰 템플릿으로 변환해서 동적으로 화면을 그리고, 또 웹 화면의 흐름을 제어한다. 참고React, Vue.js 같은 웹 클라이언트 기술을 사용하고, 웹 프론트엔드 개발자가 별도로 있으면, 웹 프론트엔드 개발자가 웹 퍼블러셔 역할까지 포함해서 하는 경우..
오랜만에 개념 공부(복기)...그 전까지는 문제풀이를 했었다DFSPseudo CodeDFS(u, adj) u.visited = true for each v ∈ adj[u] if v.visited == false DFS(v, adj) 구현 방법1: 돌다리를 두들겨 보다.void DFS(int here) { visited[here] = 1; for(int there : adj[here]) { if(visited[there]) continue; DFS(there); }} 구현 방법2: 못 먹어도 GOvoid DFS(int h..
프로젝트 생성Packaging → War / JarJSP를 사용하지 않기 때문에 Jar를 사용하는 것이 좋음.앞으로 스프링 부트 사용 시 이 방식으 ㄹ주로 사용JARJava Archive용도: 독립 실행 가능한 애플리케이션 패키징내장 서버: Tomcat, Jetty 등의 내장 서버 포함구조: 표준 Java 클래스 파일들과 리소스, 의존성 라이브러리 포함배포: 별도의 웹 서버/WAS 없이 단독 실행 가능Spring Boot: 기본적으로 JAR 패키징 권장WARWeb Application Archive용도: 웹 애플리케이션을 외부 서버에 배포하기 위한 패키징외부 서버: Tomcat, JBoss, WebLogic 등 외부 WAS에 배포실행 방식: WAS의 webapps 디렉토리에 배포 후 서버 시작구조: WE..
지난 번 MVC 프레임워크 구조를 직접 설계했다. 직접 만든 MVC 프레임워크 구조 실제로 사용되는 SpringMVC의 구조는 어떨까? 사실 구조상의 이름만 다를 뿐 크게 구조에서 차이점을 보이지 않는다.직접 만든 프레임워크스프링 MVCFrontControllerDispatcherServlethandlerMappingMapHandlerMappingMyHandlerAdapterHandlerAdapterModelViewModelAndViewviewResolverViewResolverMyViewViewDispatcherServlet 구조org.springframework.web.servlet.DispatcherServlet스프링 MVC도 프론트 컨트롤러 패턴으로 구현.스프링 MVC의 프론트 컨트롤러 → D..
지난 시간 MVC에 대한 개요를 봤었다.다만, 반복되는 작업이 많았고 이를 사용하기 편리하게 하기 위함으로 프론트 컨트롤러 패턴이라는 것을 소개했었다. 즉, MVC에서 Controller가 역할을 수행하기 전 공통 기능을 처리하기 위한 장치(수문장)를 마련하자! 라는 것을 소개했었는데, 이번시간 그것을 구현해보는 과정을 가진다.프론트 컨트롤러 패턴이전에는 클라이언트가 ControllerA, B, C를 각각 사용하기 위해선 Controller에서 각각에 맞는 공통 처리를 다 해줬어야 했다. 이제 공통 기능 처리를 위한 프론트 컨트롤러를 도입하게 된다면 이와 같이 공통 부분을 미리 Front Controller에서 처리해준 뒤, 각각의 요청에 맞는 컨트롤러를 찾아서 호출해주게 된다. 즉, 프론트 컨트..