Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
-
[김영한 스프링] 09. 타임리프 기본 기능 - 템플릿 조각 & 템플릿 레이아웃Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 8. 12. 00:45
템플릿 조각 웹 페이지를 개발할 때는 공통 영역이 많이 있다. 예를 들어서 상단 영역이나 하단 영역, 좌측 카테고리 등등 여러 페이지에서 함께 사용하는 영역들이 있다. 이런 부분을 코드를 복사해서 사용한다면 변경 시 여러 페이지를 다 수정해야 하므로 상당히 비효율 적이다. 타임리프는 이런 문제를 해결하기 위해 템플릿 조각과 레이아웃 기능을 지원한다. TemplateController package hello.thymeleaf.basic; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annota..
-
[김영한 스프링] 08. 타임리프 기본 기능 - 자바스크립트 인라인Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 8. 11. 22:43
자바스크립트 인라인 타임리프는 자바스크립트에서 타임리프를 편리하게 사용할 수 있는 자바스크립트 인라인 기능을 제공한다. 자바스크립트 인라인 기능은 다음과 같이 적용하면 된다. main/resources/templates/basic/javascript.html 생성 텍스트 렌더링 var username = [[${user.username}]]; 인라인 사용 전 -> var username = userA; 인라인 사용 후 -> var username = "userA"; 인라인 사용 전 렌더링 결과를 보면 userA라는 변수 이름이 그대로 남아있다. 타임리프 입장에서는 정확하게 렌더링 한 것이지만 아마 개발자가 기대한 것은 다음과 같은 "userA"라는 문자일 것이다. 결과적으로 userA가 변수명으로 사용되..
-
[김영한 스프링] 07. 타임리프 기본 기능 - 조건부 평가 & 주석 & 블록Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 8. 11. 21:09
조건부 평가 타임리프의 조건식 if, unless (if의 반대) BasicController 추가 @GetMapping("/condition") public String condition(Model model) { addUsers(model); return "basic/condition"; } condition.html if, unless count username age 1 username 0 switch count username age 1 username 10살 20살 기타 main/resources/templates/basic/condition.html 생성 if, unless 타임리프는 해당 조건이 맞지 않으면 태그 자체를 렌더링 하지 않는다. 만약 다음 조건이 false인 경우 ... 부분 ..
-
[김영한 스프링] 06. 타임리프 기본 기능 - 속성 값 설정 & 반복Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 7. 26. 23:47
속성 값 설정 타임리프 태그 속성(Attribute) 타임리프는 주로 HTML 태그에 th:* 속성을 지정하는 방식으로 동작한다. th:*로 속성을 적용하면 기존 속성을 대체한다. 기존 속성이 없으면 새로 만든다. BasicController 추가 @GetMapping("attribute") public String attribute() { return "basic/attribute"; } attribute.html 속성 설정 속성 추가 - th:attrappend = - th:attrprepend = - th:classappend = checked 처리 - checked o - checked x - checked=false main/resources/templates/basic/attribute.htm..
-
[김영한 스프링] 05. 타임리프 기본 기능 - 리터럴(Literals) & 연산Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 7. 26. 23:05
리터럴(Literals) 리터럴은 소스 코드상에 고정된 값을 말하는 용어이다. 예를 들어서 다음 코드에서 "Hello"는 문자 리터럴, 10, 20은 숫자 리터럴이다. String a = "Hello" int a = 10 * 20 타임리프는 다음과 같은 리터럴이 있다. 문자 : 'hello' 숫자 : 10 불린 : true, false null : null 타임리프에서 문자 리터럴은 항상 '(작은 따옴표)로 감싸야한다. 그런데 문자를 항상 '로 감싸는 것은 너무 귀찮은 일이다. 공백 없이 쭉 이어진다면 하나의 의미 있는 토큰으로 인지해서 다음과 같이 작은 따옴표를 생략할 수 있다. 룰 : A-Z, a-z, 0-9, [], ., -, _ 오류 문자 리터럴은 원칙상 '로 감싸야한다. 중간에 공백이 있어서 하..
-
[김영한 스프링] 04. 타임리프 기본 기능 - 유틸리티 객체와 날짜 & URL 링크Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 7. 26. 22:41
유틸리티 객체와 날짜 타임리프는 문자, 숫자, 날짜, URI 등을 편리하게 다루는 다양한 유틸리티 객체들을 제공한다. 타임리프 유틸리티 객체들 #message : 메시지, 국제화 처리 #uris : URI 이스케이프 지원 #dates : java.util.Date 서식 지원 #calendars : java.util.Calendar 서식 지원 #temporals : 자바8 날짜 서식 지원 #numbers : 숫자 서식 지원 #strings : 문자 관련 편의 기능 #objects : 객체 관련 기능 제공 #bools : boolean 관련 기능 제공 #arrays : 배열 관련 기능 제공 #lists, #sets, #maps : 컬렉션 관련 기능 제공 #ids : 아이디 처리 관련 기능 제공, 뒤에서 설명..
-
[김영한 스프링] 03. 타임리프 기본 기능 - 변수(SpringEL) & 기본 객체들Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 7. 26. 22:17
변수 - SpringEL 타임리프에서 변수를 사용할 때는 변수 표현식을 사용한다 변수 표현식 : ${...} 그리고 이 변수 표현식에는 스프링 EL이라는 스프링이 제공하는 표현식을 사용할 수 있다. BasicController 추가 @GetMapping("/variable") public String variable(Model model) { User userA = new User("userA", 10); User userB = new User("userB", 20); List list = new ArrayList(); list.add(userA); list.add(userB); Map map = new HashMap(); map.put("userA", userA); map.put("userB", use..
-
[김영한 스프링] 02. 타임리프 기본 기능 - 텍스트(text, utext) & 변수(SpringEL)Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 7. 25. 23:24
텍스트 - text, utex 타임리프는 기본적으로 HTML 테그의 속성에 기능을 정의해서 동작한다. HTML의 콘텐츠(content)에 데이터를 출력할 때는 다음과 같이 th:text를 사용하면 된다. HTML 테그의 속성이 아니라 HTML 콘텐츠 영역 안에서 직접 데이터를 출력하고 싶으면 다음과 같이 [[...]]를 사용하면 된다. 컨텐츠 안에서 직접 출력하기 = [[${data}]] BasicController main/java/hello/thymeleaf/basic/basicController 생성 package hello.thymeleaf.basic; import org.springframework.stereotype.Controller; import org.springframework.ui.M..