상세 컨텐츠

본문 제목

73일 - Tiles 생성과 리졸빙

수업 일지/Spring

by NayC 2021. 6. 3. 14:45

본문

728x90

// 페이지 다 나눠놨지.

-> 이제 이걸 합치는 라이브러리를 사용해보자.

지시사항을 위한 설정 2가지

http://tiles.apache.org/framework/index.html

> tutorials > baisic > tiles concept

http://tiles.apache.org/framework/tutorial/basic/concepts.html

 

레이아웃에 타일들을 붙일건데 ~ (맨 첫째줄)

- 붙을 페이지들 아래에다가 넣는 것

 

- header라는 이름으로 붙일건데, 붙일 페이지가 "여기 jsp"다.

 

// 레이아웃을 읽어들이면 타일이 "넵! 붙이겠습니다!" 하고 붙이는 것

 

-> xml로 파일 준비

 

configuration 클릭하면 풀 지시서 나옴

-> 복붙

// 

 

다 봍북 x 

맨 첫째줄 빼고 

<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
       "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
  <definition name="myapp.homepage" template="/layouts/classic.jsp">
    <put-attribute name="title" value="Tiles tutorial homepage" />
    <put-attribute name="header" value="/tiles/banner.jsp" />
    <put-attribute name="menu" value="/tiles/common_menu.jsp" />
    <put-attribute name="body" value="/tiles/home_body.jsp" />
    <put-attribute name="footer" value="/tiles/credits.jsp" />
  </definition>
</tiles-definitions>

// 고쳐야 함

 

철자 주의!!!!! 

6. admin/notice/list를 반환하면 

- 제목(title 복붙해온거)은 우선 삭제 (지금 사용하지 않으니)

재빠르게 일을 해준다고 생각.

6. "admin.notice.list"가 오면 타일은 '내 일 왔다!'하고 가로챔 -> layout.jsp에 타일들을 붙일게! 

7. layout.jsp 안에 header에는 ".... inc/header.jsp" 넣어주고! 

8. layout.jsp 안에 aside에는 ".... inc/aside.jsp" 넣어주고! 

.

.

 

// tiles 준비 완료 (근데 sw가 준비된건 아니라서 '깨워야' 함 - 깨우는건 아래) 

 

layout.jsp  가서

한 줄씩 붙이는 거

- 붙인다는게 코드를 그대로 복붙하는게 아니라, tiles.xml에 정의된 것들(header, aside...)을 붙인다는 것

L에서 정의된 것만 사용할 수 있는 것

 

// 지시서 준비 완료

 

1) 페이지 나눔 

2) 합쳐야 함 (tiles가 해줄 것) 

 

합치는 지시서는 준비했지만, 합칠 sw가 없음.

- 라이브러리에 잠자고 있는 tiles를 깨워야 함

  원래 "ResourceViewResolver"라고 함 (view를 찾아주는 역할) 

< (더 큰 개념) TIlesViewResolver : 붙여서 돌려주는 역할 

- ViewResolver가 2개 (tiles가 조금 더 큰 개념)

 

cf) bean은 객체 

 

3점대는 xml에 직접

4점대부터는 '자바'로 (스프링 설정 / 이건 Boot가 지원해주지 않음)

 

//

자바로 컨피크 = 직접 자바 코드로 객체를 만들어준다는 것

 

8. 누군가 이걸 요청하게 되면~ 

10. 만들어 

 

문제는 10이 생성되려면 코드가 실행되어야하는데, 

그러면 누군가가 8을 호출해야함 (8의 함수 이름은 아무거나 되어도 됨) 

- 당연히 스프링이 호출해야 (스프링이 사용할 것이기에)

 

Q. 언제 호출? 언제 깨워야 하지?

- 당연히 서비스가 시작될 때 저절로. 

- 패키지명은 반드시 main 함수 있는 패키지 이름을 확장한거면 됨 

 

Q. 어떻게 호출? 

- 인스턴스 함수이기에 인스턴스 해야.

  객체화하자 

-

11~15 중 아무거나 붙여도 객체화가 됨

 

Q. 왜이렇게 종류가 많지?

- 원래는 @Component 하나였음 (구성요소, 스프링 어플리케이션을 구성하는 개체들)

- 이건 Bean을 담고 있다고 해서 Bean Container라고도 얘기

  근데 이 쉬운 이름을 놔두고 IoC Container라고 함 (나중에 DI 기능 설명할때  봐보자)

- 콩자루. (Bean Container)

  TileConfig는 콩ㅎㅎ 이 되는 것

 

- 구성요소도 역할이 있다는 것

  

cf) DAO는 Repository. 

 

요지 : Component라고 했지만 사실 다른 이름도 괜찮은 것 (이름으로 괜찮은 건 : @Configuration)

마치 이건 css에서 다 <section>이라 했지만 내용에 따라서 <nav><aside> 등으로 쓰자는 것과도 같은 얘기

 

// 콩 보따리에 올렸는데, 

'애도 콩이니까 호출해주세요!' 해야함

- 콩자루 들어가려면 반드시 식별자가 붙어야 함

  지금 여기서 TileConfig에서 식별자는 -> tileConfig (소문자)

 

(선생님 코드에서) tiles로 이름 다 바꾸기

 

콩자루에 넣기 위한 거기 때문에 

자료형 / 변수명 (그래서 이게 콩자루 들어가는 이름이 됨) 

TilesViewResolver / tilesViewResolver

 

return도 식별자 붙어야지

- 애는 '변수명'을 식별자로

- 반환한 것을 함수로 담는 것??

 

함수명 위에 @bean을 붙이면

- 호출하는 녀석

 

.

.

.

추가적으로 담아주려면 @bean 붙이면 됨

- 다른 곳에서도 막 담아줘도 콩자루에 담기는 것

 

//

 

1) 남이 만든건 그냥 @붙여서? 

2) 내가 만든건 @ 붙여서만큼은 할 수 없으니 이렇게 지금 만들어준 것 

 

타일즈.

부르는 녀석 내가 생성.

부팅되는 과정에 내가 생성하는 코드 쓰면 되는데, 갑자기 class 새로 만들어서 써줬지 지금.

- 그런데 어떻게 부팅되는 과정에 실행? 

-> 그 방법은 @Bean만 달아주면 된다. 

- 근데 이것만 하면 안되고

  울타리에도 @Configuration 달아줘야한다는 것

  이런것들(@Configuration같은 것들) 다 메모리 올리는데, 함수들 어노테이션 다 확인하게 되서 @Bean 있으니 담아주게 된다는 말! 

 

@Bean은 호출을 통해 메모리에 올려주는 것

- 함수에 붙잖아. 

  '호출한 결과'를 올려주는 것. tilesViewResolver를 올려주는 것 

1) 내가 만든건 그냥 @Configuration들 넣어주면 됨

2) 남이 만든건 이렇게 @Bean하면 내가 넣어줄게. 대신 이름으로 해줘~! (내가 '값'이 아니라 이름이 올라가는 것에 헷갈려 했는데 일반 함수랑은 다르다고 한다)

 

tiles는 남이 만든 클래스

 

아래건 했고, 위에거를 직접 해보자. (class 이름 : TilesConfigurer)

 

//

 

반환한걸 보면

 

list.jsp에는 main밖에 없어서 다 날라간 화면이 나올 것

- 정 - 말 main(그리고 main에서 사용되는 import들) 빼고 다 삭제해야함

- 나는 header 몇 줄 등 남겨놔서 바로 아래 화면이 안떴었음

정상

근데 이제 다 붙여보자.

 

tiles를 이제 깨웠잖아.

-> 부팅하면서 깨운 것

 

이게 같으면 tiles가 "어 이거 내가 할 일이네!!" 하고 가로챔

 

만약 같지 않으면 엄하게 다른거 찾게됨

 

// list 잘 붙는지 보자

 

// tiles, jsp 근데 다음주부터 안 쓸 것. (이거 쓰는 곳도 있어서 배운 것) 

  다음주부터는 타임리프! 

  구문이 트렌드에 맞음

 

 

728x90
반응형

관련글 더보기