
타임리프란 타임리프는 서버 사이드 렌더링을 지원하는 뷰 템플릿의 종류 중 하나로 이외에 뷰 템플릿으로는 JSP등이 있다. 타임리프의 가장 큰 특징으로는 순수 HTML을 최대한 유지한다는 점이다. 정적인 HTML코드의 원래 모습을 유지하면서도 동적인 HTML코드를 제공한다. 이러한 특징으로 인해 후에 서버사이드 렌더링을 하지않더 라도 HTML코드를 직접 파일로 열어볼 수 있는 장점이 있다. 이러한 특징을 네츄럴 템플릿이라고한다. 또한 Spring 프레임워크에서 ThymeLeaf를 전적으로 지원하기때문에 Spring프레임워크와 ThymeLeaf의 높은 호환성을 갖는 특징이 있다. 타임리프에 대해 실습을 하기위해서는 반드시 Controller를 통해 View Template을 응답해야만 Tymeleaf의 기능..

@RequestMapping은 어떤 역할을 수행하고 어떤 기능을 가지고 있는지 알아보자 @RequestMapping @RequestMapping은 단순하게 설명하자면 영단어 뜻 그대로 요청을 매핑해주는 역할을 수행하지만 이 어노테이션이 어떻게 동작하는지 깊게는 알 수 없어도 조금만 들여다보자. 아래 글에서도 다룬적이 있기때문에 아래글을 보는 것을 추천한다. Spring MVC - Dispatcher Servlet과 View Resolver Spring MVC의 구조를 깊이 있게 알기위해서는 기존의 MVC패턴의 전체 구조를 알고 이해하는 것이 도움이 될 것이다. Spring MVC의 범위는 매우크고 기능 또한 매우 많기때문에 기본 베이스 없이 Spring MV lee-dev-log.tistory.com M..

Spring MVC - Dispatcher Servlet과 View Resolver Spring MVC의 구조를 깊이 있게 알기위해서는 기존의 MVC패턴의 전체 구조를 알고 이해하는 것이 도움이 될 것이다. Spring MVC의 범위는 매우크고 기능 또한 매우 많기때문에 기본 베이스 없이 Spring MV lee-dev-log.tistory.com MVC패턴과 변천사 - 핸들러와 핸들러어댑터 패턴 적용 이전 포스팅에서는 Model개념을 적용하여 request.serAttribute로 수행하던 파라미터 값을 가져오는 것을 Model을 통해 해결함으로 Servlet에 종속성을 제거하였다. 또 뷰 리졸버를 사용해서 각 컨트롤러 lee-dev-log.tistory.com 이전 글들에서 사용했던 간단한 회원관리 ..

Spring MVC의 구조를 깊이 있게 알기위해서는 기존의 MVC패턴의 전체 구조를 알고 이해하는 것이 도움이 될 것이다. Spring MVC의 범위는 매우크고 기능 또한 매우 많기때문에 기본 베이스 없이 Spring MVC를 이해하려하면 매우 어려울 것이다. MVC패턴과 변천사 - 핸들러와 핸들러어댑터 패턴 적용 이전 포스팅에서는 Model개념을 적용하여 request.serAttribute로 수행하던 파라미터 값을 가져오는 것을 Model을 통해 해결함으로 Servlet에 종속성을 제거하였다. 또 뷰 리졸버를 사용해서 각 컨트롤러 lee-dev-log.tistory.com Dispatcher Servlet Spring MVC에서도 프론트 컨트롤러 패턴이 사용되어 프론트 컨트롤러에서 뷰 리졸버 기능, ..
이전 포스팅에서는 Model개념을 적용하여 request.serAttribute로 수행하던 파라미터 값을 가져오는 것을 Model을 통해 해결함으로 Servlet에 종속성을 제거하였다. 또 뷰 리졸버를 사용해서 각 컨트롤러에서는 View의 논리적 이름만 반환하도록 설계하여 중복 코드를 제거하고 유지보수 측면에서도 효율성을 높여보았다. MVC패턴과 변천사 - Model과 뷰 리졸버 저번 글에서 MVC패턴이란 무엇이며 왜 사용되는지 쭉 알아보았었고 View를 분리해내고 구현 컨트롤러에서는 View에 주소만 리턴해주고 렌더링은 프론트 컨트롤러에서 처리하도록 설계해봤었다. lee-dev-log.tistory.com 이번 포스팅에서 공부할 내용은 핸들러 개념을 적용하여 컨트롤러의 버전을 유연하게 변경/확장 가능하..

저번 글에서 MVC패턴이란 무엇이며 왜 사용되는지 쭉 알아보았었고 View를 분리해내고 구현 컨트롤러에서는 View에 주소만 리턴해주고 렌더링은 프론트 컨트롤러에서 처리하도록 설계해봤었다. 프론트 컨트롤러는 클라이언트의 요청에 맞는 구현 컨트롤러를 매핑처리해서 호출해주고 호출하는 과정은 다형성을 통해 유지보수에 효과적이도록 설계했다. MVC패턴과 변천사 - 1 이전 글에서 MVC패턴 등장계기는 JSP를 사용할 때, 비즈니스 로직코드인 Java코드와 HTML코드가 한 파일안에 같이 있기때문에 유지보수에 어려움을 겪었고 이 문제를 해결하기위해 MVC패턴을 사용한 lee-dev-log.tistory.com Model 도입 Model은 클라이언트로부터 요청받은 데이터나 서버(DB서버)로부터 제공해야할 데이터를 ..

이전 글에서 MVC패턴 등장계기는 JSP를 사용할 때, 비즈니스 로직코드인 Java코드와 HTML코드가 한 파일안에 같이 있기때문에 유지보수에 어려움을 겪었고 이 문제를 해결하기위해 MVC패턴을 사용한다고 설명했다 JSP와 JSP가 사장되는 이유 + MVC패턴을 사용하는 이유 JSP등장 이전 JSP의 등장 이전에는 클라이언트에게 동적인 코드를 제공하기위해서 Servlet내부에서 서비스 코드를 작성하여 HTML코드와 함께 응답을 해주었다. 클라이언트에게 동적인 화면을 제공 lee-dev-log.tistory.com MVC패턴이란 MVC패턴은 Model, View, Controller의 약자를 의미한다. View: View는 화면을 렌더링하는 역할을 하며 간단히 말해서 HTML코드를 브라우저(사용자에게)를 ..
JSP등장 이전 JSP의 등장 이전에는 클라이언트에게 동적인 코드를 제공하기위해서 Servlet내부에서 서비스 코드를 작성하여 HTML코드와 함께 응답을 해주었다. 클라이언트에게 동적인 화면을 제공해줄수는 있었지만, Servlet내부에서 비즈니스 로직과 HTML코드가 섞여있기 때문에 유지보수가 매우 어려웠고 HTML코드를 제공하는 것 또한 매우 어려웠다 import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; imp..