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
2020. 11. 04. 22:46
빠른 답변 감사드립니다 !
1,2번의 질문에 대한 답은 충분히 되었는데요 ~
3번에서 p태그 사이에 있는, <p th:text="'안녕하세요'" + ${data}" > 다음에 오는 " 안녕하세요. 손님 "이 왜 출력이 안되는지 궁금했어요 ㅠㅠ
왜 출력이 안되는지 알 수 있을까요??