Spring

Springboot Thymeleaf 적용방법

Stater 2019. 11. 18. 11:24

Springboot Thymeleaf 적용

 

템플릿 엔진

- 데이터와 이 데이터를 표현 해줄 템플릿을 결합해주는 도구 

- 템플릿은 HTML과 같은 마크 업이고 데이터는 데이터베이스에 저장된 데이터를 의미

- 템플릿 엔진을 이용하여 화면을 처리, 고정된 데이터에 다양한 템플릿을 적용가능하다.

- 데이터와 분리된 화면 개발 및 관리가 가능

 

 

템플릿 엔진 적용

- 사용자에게 제공되는 화면과 데이터를 분리하여 관리

- 스프링부트의 지원하는 템플릿

  ex) Thymeleaf,Freemarker,Mustache,GroovyTemplates 

 

 

Springboot Thymeleaf 적용방법(maven 프로젝트 기준)

- 1) pom.xml 들어간다.

- 2) Ctrl+Spacebar -> Edit Starters 를 클릭

- 3) Thymeleaf를 검색 후 클릭 한후 [OK]눌러주면 끝

		<!-- Thymeleaf -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>

- 4) pom.xml에 위의 소스가 추가 된 것을 확인하면 끝

 

 

Thymeleaf

- 별도의 설정이 없으면 기본적으로 확장자는 .html을 사용

- 인코딩 -> UTF-8 Mime 타입은 text/html로 설정

- 서버의 내부 캐시는 true 설정 -> 이 설정을 그대로유지하면 타임리프 프로젝트의 경우에는 매번 다시 시작해야한다.

- 서버에 캐싱되지 않도록 설정하는 방법

  application.properties 파일 클릭

# Thymeleaf Cache Setting -> Server Cache protect
spring.thymeleaf.cache=false

해당 코드를 통해 ->true/false를 통해 설정이 가능하다

 

Springboot 폴더 관리구조

웹 파일 경로
정적HTML파일

src/main/resources/static

src/main/public

웹 페이지 대표 아이콘(Favicon) src/main/resources/favicon.ico
템플릿 

src/main/resources/templates

html-Thymeleaf

tpl-Groovy

ftl-Freemaker

vm-velocity

 

Thymeleaf  

<html xmlns:th="http://wwww.thymeleaf.org">
<!-- 이 네임 스페이스를 통해서 thymeleaf가 적용된다 -->

<head>
	<title>타임리프테스트</title>
	<meta http-equiv="Content-Type" content="text/html"; charset=UTF-8">
</head>

<body th:align="center">
<!-- th:align="center"을 이용하여 Model의 greeting를 저장된 문자 메시지 출력 -->
	<h1 th:text="${greeting}"></h1>
	<!-- 단순 문자열 출력때 사용 -->
</body>

</html>

 

Thymeleaf 플러그인 설치 방법

Thymelefa 플러그인 설치 화면

 

1) install 클릭 후 설치 대기

 

2) 설치 완료되고나면 STS 재부팅 

3) 해당 기능이 활성화면 완료

 

JSTL -> <c: forEach> ->반복적인 기능

Thymeleaf -> th:each -> 반복적인 기능 

 

- 위의 속성을 사용하면 자바의 List / Map의 컬렉션에 저장된 데이터를 반복적으로 처리에 용이

 

 

Thymeleaf html 상태에서 적용된 소스 

<html xmlns:th="http://wwww.thymeleaf.org">


<head>
	<title>게시글 목록</title>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>

<body th:align="center">
	<h1>게시글목록</h1>
	<table th:align="center" border="1" th:cellpadding="0" th:cellsapcing="0" th:width="700">
		<tr>
			<th bgcolor="orange" width="100">번호</th>
			<th bgcolor="orange" width="200">제목</th>
			<th bgcolor="orange" width="150">작성자</th>
			<th bgcolor="orange" width="150">등록일</th>
			<th bgcolor="orange" width="100">조회수</th>
		</tr>
		
		<tr th:each="board : ${boardList}">
			<td th:text="${board.seq}">
			<td th:text="${board.title}">
			<td th:text="${board.writer}">
			<td th:text="${board.createDate}">
			<td th:text="${board.cnt}">
		</tr>
	</table>
	<br>
	<a href="insertBoard">새글등록</a>
</body>

</html>

 

Thymeleaf 상세보기 기능 href 

			<td><a th:href="@{/getBoard(seq=${board.seq})}"
					th:text="${board.title}"></a></td>

th:href 속성 값으로 @{이동할 경로}를 지정해서 사용이 가능

 

Thymeleaf 여러개 지정 할 때도 사용이 가능하다.

		<!-- 참고사항 -->
		<!-- 다중으로 사용이 가능한 형태로 수정도 가능하다.
			<td><a th:href="@{/getBoard(seq=${board.seq},${board.title},${board.writer})}"
					th:text="${board.title}"></a></td>
					 -->

 

Thymeleaf th:each 속성

- 현재 컬렉션의 상태 정보를 저장하는 상태 변수를 선언이 가능하다.Thymeleaf 상세보기 기능 href 

- Thymeleaf th:each 속성 중 하나이다.

- 사용하는 곳 : 게시글이 삭제 되었을때 자동적으로 증가 값을 적용해서 게시글의 순서를 유지 할 때 사용한다.

 

		<!-- 데이터 포멧 변경전 -->	
		<!-- <td th:text="${board.createDate}"> -->
		<!-- 데이터 포맷 변경후 -->
		<td th:text="${#dates.format(board.createDate,'yyyy-MM-dd')}"> 
			<td th:text="${board.cnt}">
		</tr>
        
        thymeleafh의 속성을 이용해서 데이터 포맷을 변경한 경우

 

반응형

'Spring' 카테고리의 다른 글

Spring Security 관련 참고사항  (0) 2019.11.22
스프링 시큐리티  (0) 2019.11.20
Springboot JPA 쿼리메소드 사용하기  (0) 2019.11.17
springboot JPA Annotation 정리  (0) 2019.11.16
Springboot 자동설정 및 의존성 관리  (0) 2019.11.14