템플릿 엔진(Template Engine)
- 웹 서비스를 만들 떄에는 서버의 데이터와 정적자원(html, css, image)을 조합해야 한다.
- 서버에서 데이터를 보내 웹 서비스를 만드는 방법에는 크게 2가지가 있다.SPA(Single Page Application)
- 최초 한번 전체페이지를 다 불러오고 응답데이터만 페이지 특정부분 렌더링.SSR(Server Side Rendering)
- 전통적인 웹 애플리케이션 방식. 요청시마다 서버에서 처리한 후 새로고침으로 페이지에 대한 응답.
Thymeleaf(타임리프)
- 타임리프는 템플릿 엔진 중 하나로, Spring Boot에서는 JSP가 아닌 Thymeleaf 사용을 권장하고 있다.
- 타임리프 자주 사용 문법
- 타임리프는 th 키워드를 사용해서 문법을 사용한다.
- th 키워드를 사용하기 위해서는 부분에 th 설정을 해줘야한다.
<html lang="en" xmlns:th="http://www.thymeleaf.org">
- 주요 th 종류 설명
- th:text - 텍스트 지정
[[...]] - 텍스트 지정 - th:fragment - 다른 HTML에서 include 또는 replace 속성을 사용해서 적용할 수 있다.
- th:block - layoutL:fragment 속성에 이름을 지정해서 실제 Content 페이지의 내용을 채우는 기능이다.
- th:href - 웹 애플리케이션을 구분하는 콘텍스트 경로(Context Path)를 포함한다.
- th:value - value 값 지정 (폼 양식)
- th:each - for 반복문 (값이 하나 일 경우 단순 변수 지정으로도 사용가능)
- th:if / th:unless - if , else 구문
- th:switch / th:case - switch 분기 처리 구문
- th:text - 텍스트 지정
- 주요 표현식 설명
- ${} - key 값을 지정할 때 사용하는 변수
- #{} - 메세지 표현식
- @{} - 링크 표현식
- 주요 연산자 설명 (th:타입 = "구문내에서 연산자 사용")
- and , or , not , 크기 비교 연산자 (< (gt) , > (lt) , >= (ge) , <= (le))
- 문자 합치기 : 'String' + ${name.name}
- 리터럴 대체 : |Thenameis ${name} |
- th URI GET 파라미터 추가 방식
-
/board/view.do(idx=${idx},page=${page}) 또는 /board/view.do/${idx}/${page}
- 추가 자료
타임리프에서 security 사용
- Dependency 추가
-
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <!-- 아래부분 추가 / 타임리프랑 붙여서 넣어주니 작동? --> <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity5</artifactId> </dependency>
- xmlns:sec 추가
-
<html lagn="ko" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
- 자주 사용하는 명령어
- sec:authorize="isAuthenticated()" : 세션에 계정정보가 있을때 출력
- sec:authentication="principal.user_nickname" : 세션 계정정보에서 특정 값 출력
- th문 안에 세션 계정정보 사용하고 싶을때
<img th:src="@{'/image/profile/'+${#authentication.principal.user_picture}}"> <!-- ${#authentication.principal.xx}
'TIL' 카테고리의 다른 글
메모 (0) | 2023.03.30 |
---|---|
Optional<>을 이용하여 테스트 중복 체크 (0) | 2023.03.30 |
빌더 패턴 , @Builder (0) | 2023.03.30 |
Lombok (0) | 2023.03.24 |