전체 글 1097

MVC 구조와 Thymeleaf 7. Thymeleaf { 기본객체, 예제, 연습문제 }

기본객체 타임리프는 문자, 숫자, 날짜 데이터를 다루는 객체를 제공합니다. 위와 같은 것들이 있는데, 여기서는 바로 실습을 진행해보겠습니다. 기본객체 예제 1 { strings, numbers, temporals } 우선 8번째 샘플 메서드를 컨트롤러에 추가해주었습니다. strings 객체가 갖고 있는 다양한 함수들의 예제를 볼 수 있습니다. numbers 객체가 갖고 있는 다양한 함수들의 예제를 볼 수 있습니다. temporal 객체가 갖고 있는 다양한 함수들의 에제를 볼 수 있습니다. 서버를 구동시키고 화면을 띄워보면 위와 같은 화면을 볼 수 있습니다. 연습문제 7 strings 기본 객체의 함수를 사용해서 데이터를 나누어서 테이블에 넣어주어야 하는 문제이다. 우선 컨트롤러에 q7 메서드를 추가해주었..

MVC 구조와 Thymeleaf 6. Thymeleaf { inline, 예제, 연습문제 }

Inline 인라인 속성을 사용하여 자바스크립트에서 타임리프를 쓸 수 있습니다. 인라인 속성을 사용하면 자동으로 자바스크립트의 자료형에 맞게 데이터가 처리되는데요. 자바의 String 은 문자열로 처리되고, 클래스는 JSON으로 처리됩니다. 이런 결과로 우리는 데이터를 쓸 수 있게 됩니다. Inline 예제 우선 컨트롤러에 위와 같은 코드를 작성해주었습니다. ex7.html 파일을 작성해주었는데요. 컨트롤러에서 전달받은 값을 사용하게 됩니다. 여기서 문제는 타임리프를 사용하지 않으면 전달받은 데이터를 그대로 해석하게 됩니다. 타임리프의 inline 을 사용하면 dto 변수가 객체로 변환이 되기 때문에 dto.text 처럼 바로 사용할 수 있게 됩니다. 실제로 실행을 시켜보았는데요. 페이지 소스 보기를 진..

MVC 구조와 Thymeleaf 5. Thymeleaf { 반복문, 조건문, 블록, 삼항연산자, 예제 }

반복문 HTML 요소를 반복적으로 생성할 수도 있는데요. 리스트, 배열의 요소를 반복 처리할 수도 있습니다. th:each 속성을 사용하는데요. = 이후에는 자바에서 사용하는 람다식을 사용합니다. 여기서 목록에서 꺼내지는 변수를 사용할 수 있습니다. 조건문 자바의 조건문과 타임리프는 약간 다른데요. 타임리프의 조건문은 if 조건문에 만족하는 경우와 만족하지 않는 경우를 unless 를 활용하여 따로 작성하여야 합니다. 위와 같은 형태로 작성합니다. 블록 혹은 같은 HTML 요소없이 타임리프 속성을 사용할 수 있는 block 이라는 것이 있습니다. 반복문 예제 우선 ex6 메서드를 컨트롤러에 추가해주었는데요. ex6 메서드에서는 model 에 리스트를 전달하여 그 리스트를 사용할 예정입니다. ex6.htm..

MVC 구조와 Thymeleaf 4. Thymeleaf { DTO, 타임리프 표현식, 예제 }

DTO 란? DTO클래스는 컨트롤러와 뷰가 데이터를 주고 받기 위한 용도로 사용이 됩니다. DTO 예제 dto 패키지를 우선 만들고 그 안에 DTO 클래스를 생성하겠습니다. SampleDTO 라는 클래스 파일을 만들었습니다. DTO 는 컨트롤러와 뷰를 위한 것이지만 엔티티는 Repository 와 DB 간에 데이터 교환을 위해 사용하는 것임을 다시 한번 인지를 하고 계속 넘어가겠습니다. 타임리프 표현식 타임리프에서 사용하는 표현식은 위와 같습니다. 변수 표현 방식과 객체 표현 방식이 있습니다. 이 표현 방식들을 활용하여 예제를 사용해보겠습니다. 예제와 함께 보는게 이해하기 더 편하니까 예제랑 함께 보겠습니다. 타임리프 표현식 예제1 우선 SampleController 에 ex3, ex4 메서드를 추가했습..

MVC 구조와 Thymeleaf 3. Thymeleaf { 개요, 동작과정, 컨트롤러, 예제 }

Thymeleaf 란? 타임리프는 JSP의 대안으로 만들어졌는데요. 자바 기반의 템플릿 엔진입니다. 템플릿 엔진이란 타임 리프는 자바 코드를 삽입하여 컨트롤러에서 전달한 데이터를 처리하는 역할을 수행합니다. 이때 조건문, 반복문, 객체 등을 활용해서 다양한 기능을 사용할 수 있습니다. Thymeleaf 동작과정 이전과 크게 달라지지는 않는데요. 컨트롤러가 model 을 전달하면 그것을 이용해서 화면을 출력하는 것이 Thymeleaf 입니다. Thymeleaf 예제 ex2( ) 메서드를 새로 만들었는데요. 여기서 사용된 Model 은 파라미터가 아니라 화면단에 값을 전달하는 역할을 수행하는 객체입니다. model 을 사용해서 addAttribute( ) 메서드를 사용할 수 있습니다. 이 메서드는 변수의 이..

MVC 구조와 Thymeleaf 2. MVC { 개요, 구조, 동작과정, 정적페이지, 연습문제 }

MVC 구조란? 웹 사이트 프로젝트를 사용자 인터페이스와 비즈니스 로직을 분리하여 개발하는 방식을 MVC 패턴이라고 부른다. MVC 패턴은 프로그램을 세 가지 컴포넌트로 분리한다. Model 모델 모델은 사용자가 요청하는 정보를 구현하는 클래스들로 구현이 되어 있습니다. 4 가지로 구성되어 있습니다. 1. Entity 2. DTO 3. Repository 4. Service View 뷰 뷰는 사용자에게 보여주는 화면을 만든다. 뷰단이라고 부른다. html 파일로 구성되어 있다. Controller 컨트롤러 컨트롤러는 모델과 뷰를 연결하고 사용자 요청을 처리합니다. 사용자의 요청을 받아서 작업을 수행하고 결과를 뷰에 표시합니다. MVC 흐름 MVC 흐름을 아주 간략하게 살펴보면 위의 그림과 같습니다. 사용..

@Query 어노테이션 { 개요, @Param, 예제, 실습, 연습문제 }

쿼리 메서드의 단점과 @Query 어노테이션의 필요성 Spring Data JPA가 제공하는 쿼리 메서드는 조건 검색, 삭제 등 기본 JPA 가 제공하지 않는 기능들을 작성할 때 편리함을 제공하는 것을 이전 포스팅을 통해서 살펴보았는데요. 쿼리 메서드는 조인이나 복잡한 조건을 처리해야 하는 경우에는 이름이 너무나 길어지면서 불편함이 발생하기 시작합니다. 이런 특징 때문에 간단한 처리만 쿼리 메서드를 이용하고, 복잡한 경우에는 @Query 를 이용하는 경우가 더 많습니다. @Query 의 Value : JPQL @Query 의 value는 JPQL(Java Persistence Query Language)로 작성하는데, '객체지향 쿼리'라고 불리는 구문입니다. @Query 는 JPQL 문법에 맞추어서 작성..

Spring MVC 3: 구성요소2 { DispatcherServlet 동작 흐름, 요청 선처리작업, 요청전달, 요청처리, 예외처리, 뷰렌더링, 요청처리종료 }

DispatcherServlet 이란? DispatcherServlet 을 프론트 컨트롤러라고 합니다. '프런트'라는 영어 어감이 회사의 대표 번호와 비슷한데요. Spring MVC 에서 DispatcherServlet 은 모든 요청을 받아서 넘겨주는 역할을 수행하는데요. 딱 영어의 '프런트' 어감과 일치하는 것을 볼 수 있습니다. 기본적으로 DispatcherServlet 은 클라이언트의 모든 요청을 받은 다음 이를 처리할 핸들러에게 넘기고 핸들러가 처리한 결과를 받아 사용자에게 응답 결과를 보여준다고 이해하면 됩니다. DispatcherServlet(프런트 컨트롤러)는 여러 컴포넌트를 이용해 작업을 처리합니다. DispatcherServlet 내부 동작흐름 DispatcherServlet 의 내부 동..

Spring MVC 2: 구성요소 { 동작 흐름, DispatcherServlet, 컴포넌트들 }

수업목표 이번 시간에는 Spring MVC 구성요소와 Spring MVC에서 가장 핵심적인 역할을 수행하는 DispatcherServlet 이 어떤 순서로 동작하는지 살펴보도록 하겠습니다. 이를 통해서 Spring MVC에서 사용되는 컴포넌트들에 대해 알아보도록 하겠습니다. - DispatcherServlet 이 어떤 순서로 동작하는지 이해한다. - DispathcerSerlet 에서 사용되는 컴포넌트(객체)들이 어떤 것들이 있는지 이해한다. Spring MVC 기본 동작 흐름 Spring MVC 기본 동작 흐름도입니다. Spring MVC 는 Model 2 아키텍처 발전형으로 구성되어 있다고 했었습니다. 이 그림을 잘 보시면 색깔별로 구성이 되어있습니다. Database 를 제외한 파란색 부분들은 모두..