인프런 커뮤니티 질문&답변

u_innovation님의 프로필 이미지

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

View 환경설정

에너테이션

20.11.04 08:55 작성

·

189

0

안녕하세요 강사님 오늘도 질문이 있네요 ㅎㅎ

1.

@GetMapping은 웹 에플리케이션에서 호출할 때 get방식으로 받는 역할을 하는건 알겠는데

@Controller는 왜 써주는 건지 궁금합니다 ㅎㅎ

2.

controller패키지를 hello.hellospring 패키지 안에 만드셨는데, 반드시 만들어야 작동하는지, 반드시 패키지명이 controller야 하는지 궁금합니다 !

3.

<p th:text="'안녕하세요'" + ${data}" > 안녕하세요. 손님</p>

여기서 ${data}가 hello를 바뀌는 과정은 이해했는데

<> 뒤에, 안녕하세요. 손님은 왜 출력이 안되는 건가요??

답변 3

6

김영한님의 프로필 이미지
김영한
지식공유자

2020. 11. 04. 23:05

네 우선 3번은 출력이 안되는 것이 맞습니다.

쉽게 이야기해서 안녕하세요. 손님 부분은 기본 값이라고 이해하시면 됩니다.

th:text 부분이 처리될 수 있는 서버 환경에서는 th:text의 값으로 기본 값의 내용을 변경해버립니다.

서버가 없는 환경에서는 그러니까, 해당 html파일을 웹 브라우저에서 파일로 바로 열어보시면 안녕하세요. 손님이 출력되는 것을 확인할 수 있습니다. 서버가 없는 환경이기 때문에 ht:text 부분이 동작하지 않습니다. 이때는 순수한 html을 그대로 열어본 것 처럼 기본 값이 출력됩니다.

이렇게 해서 서버 없이 html 파일만 열었을 때도 기본값을 통해 결과를 볼 수 있는 장점이 있습니다.

JSP 같은 경우에는 JSP 파일을 서버 없이 단순히 파일로만 열어보면 그 안에 프로그래밍 로직이 들어가기 때문에 html이 다 깨져보입니다. thymeleaf는 이런 메커니즘으로 html파일을 열어 볼 수 있는 장점이 있습니다.

감사합니다.

1

김영한님의 프로필 이미지
김영한
지식공유자

2020. 11. 04. 21:24

안녕하세요. u_innovation님

질문에 바로 답변을 달아드릴께요.

1.

@GetMapping은 웹 에플리케이션에서 호출할 때 get방식으로 받는 역할을 하는건 알겠는데

@Controller는 왜 써주는 건지 궁금합니다 ㅎㅎ

-> @Controller 애노테이션이 있어야 스프링이 스프링 컨트롤러로 인식합니다. 그래야 @GetMapping도 스프링이 이해할 수 있습니다.

2.

controller패키지를 hello.hellospring 패키지 안에 만드셨는데, 반드시 만들어야 작동하는지, 반드시 패키지명이 controller야 하는지 궁금합니다 !

-> 네 패키지는 있어야 합니다. 추가로 패키지 이름은 임의로 만드셔도 됩니다.

3.

<p th:text="'안녕하세요'" + ${data}" > 안녕하세요. 손님</p>

여기서 ${data}가 hello를 바뀌는 과정은 이해했는데

<> 뒤에, 안녕하세요. 손님은 왜 출력이 안되는 건가요??

-> thymeleaf라는 뷰 템플릿이 가지는 특별한 기능입니다. 덕분에 그냥 html을 파일로 열어도 웹 브라우져에서 화면을 렌더링 할 수 있습니다. 서버에서 렌더링 되면 이 값을 th:text의 값으로 치환합니다.

0

u_innovation님의 프로필 이미지
u_innovation
질문자

2020. 11. 04. 22:46

빠른 답변 감사드립니다 !

1,2번의 질문에 대한 답은 충분히 되었는데요 ~

3번에서 p태그 사이에 있는, <p th:text="'안녕하세요'" + ${data}" > 다음에 오는 " 안녕하세요. 손님 "이 왜 출력이 안되는지 궁금했어요 ㅠㅠ

왜 출력이 안되는지 알 수 있을까요??