컨트롤러 :

서비스(업무로직)

다오(데이터)

데이터베이스

뷰(JSP)

 

DI작업

트랜잭션 

 

JDBC에다가 추가적으로 마이바티스라는 매퍼작업

백엔드기술로서 이런작업을 처리할때 추가적인라이브러리 : 스프링, mvc라이브러리,

트렌트가 바뀐다.

JSP대신 -> 타임리프

스프링을 이용하다보니 조금더 새로운방식, 새로운표기법

타임리프가 JSP대신해서 많이쓰인다.

 

서버사이드자바 템플릿엔진

웹뿐만 아니라 다른문서를 만드는곳에서도 쓰일 수 있다. 

주된목표는 지금까지 사용ㅎ왔단 템플릿에 영향을 주지않으면서 서버코드를 꽂아넣을수있다.

jsp는 퍼블리셔서 만들어놓은 페이지를 바꿔가면서 데이터를꽂는다. (타이틀을없애도 el태그)

반복할떄도 기존것삭제후 ->코드블럭

서로 협업할떄 영향을준다.

퍼블리셔서 완벽하게 작성후전달해야한다.

 

기존것을 그대로 나둔다. 꽂을텍스트에대해서 추가한다

타임리프의 장점은 6가지 종류의 템플릿을 만드는데 가능하다 (다른 템플릿엔진도 다 가능...ㅎ)

 

타임리프설정하기

 

1. dependency 중 secutiry, security-test주석처리
2. spring->starters에서 타임리프라이브러리추가
3. websecutiryconfig 어노테이션 지우기

 

css,html은 static

서버단은 웹앱

 

templates 에 index.html추가

 

1.타일즈 리졸버 (우선순위높음) src를 먼저찾음 -> 인덱스를 찾는다. "index"

2.리소스 리졸버

3. 타임리프 리졸버 (aa- >템플릿폴더에서 aa.html을찾는다.

타임리프라이브러리를 설치하면 타임리프를 먼저찾는다.

 

컨트롤러에서 타일즈를뺴고 타임리프만 가져가는게 좋다.

타임리프쓸때 타일즈 걷어내기

혼합해서쓰지말것

타일즈 컨피규레이션 주석처리하기

 


퍼블리셔서 나중에 페이지를 변경해도 서로간에 데이터를 침범하지않는다.

 


text

utext: unescaped text

 

출력되는게 아니라 볼드체로 적용하려면 ?


jsp에서 el태그와 비슷하게생겼다

하지만 분명히 다르다.

암기하기

message : #{} 

메세지 : 외부파일

aa.properties 등 설정.properties로 확장자만 프라퍼티즈

프라퍼티즈컬렉션이 자바에있음

프라퍼티즈 클래스

파일로 저장할 수있다. xml 또는 프라퍼티즈확장자로 

맵컬렉션인데 추가적으로 실제파일과 연관되서 읽을수있다.

 

저장,읽기 가능

외부파일로 저장해보자 원하는 설정을

 

#{}프라퍼티즈확장자인 외부파일에서 불러옴 ->메세지(외부파일) 꺼내오는것

 

컨트롤러에서 모델에서 뽑아올떄는 ${}

#{} 메세지를 불러온다.

${}은 모델에서 가져옴


컨텍스트라는 저장소에 데이터를 담았다가 꺼내쓸수있다.

setVariable로 담았다가 getVariavle로 꺼내쓸수 있다.

OGNL

JSP에서도 ognl을 쓰고있었다.

객체라면 그안에있는것들을 점으로 호출했었다.

 



fragment 이름이 카피인것 집어넣는다

 

 

~ 절대경로

한글깨짐

.

https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#expression-basic-objects

div외에도 가능

insert 

리플레이스 :덮어쓰기, 프래그먼트시정시 대신해서들어가는 것,

인클루드:안쪽으로

 

물결생략가능


비포

id 또는 fragment로 가져온다.

에프터

 


레이아웃처리방법 두가지

 

레이아웃에서 메인을뺴서 리스트에 메인넣기

list.html의 div안쪽이 다 사라지고 layout의 th:fragment="body"로 덮어진다.

왼쪽에있는애들이 모두 오른쪽으로 대체됨.

 


문제점 : 레이아웃에서 헤더,푸터를 가져왔는데, list.html의 메인영역위에 덮어씌워져서 list의 메인이 사라졌다.

레이아웃에세 내 main을 꽂아넣어주고 가져오려면 ?

 

레이아웃을 가져오는데,

헤더,푸터를 가져왔다. 

메인은 어떻게가져온담 ?

 

list.html에서 헤더,푸터를 레이아웃에서가져온뒤

바디에게 내꺼써서줘라고 할수있다

 

레이아웃의 내 바디의정볼르 꽂아넣을수있다

 

list의 자기영역에서 main클래스로 선택된애를 레이아웃에게준다.(.main)

 

레이아웃의 body(x) x를 자기 몸에 가져다붙인다. 자기영역에 가져다붙인다.

1.list.html의 body(~{this::.main}) 이 레이아웃의 바디부분을 가져오고 , 덮어씌운다

2. list의 메인부분이 레이아웃의 메인때문에 안보이게되므로 인자를 넘겨준다 

.main은 내껄쓰겠다

3. layout.html의 th:fragment ="body(x)" x는 list가 지정한부분을 넣겠다

4. th:replace="${x}" main부분을 x에 넣어줘

 

남의것을가져오면서 내것을 거기에 꽂을수있어

외부라이브러리를 가져올 필요가없다.


타임리프말고, 타일즈같은 라이브러리를 쓰는 방법

 

+ Recent posts