어제 진행했던 프로젝트에 이어서 빌드를 하려고 함
>>> cd [hello-spring]
>>> gradlew build
./build/libs
로 이동>>> cd build/libs
hello-spring-0.0.1-SNAPSHOT.jar
실행>>> hello-spring-0.0.1-SNAPSHOT.jar
localhost:8080
인텔리제이 코드를 실행시키지 않아도 해당 url이 유효함
+인텔리제이에서 코드를 실행하면 포트가 중복되기 때문에 인텔리제이는 실행되지 않음
정적 페이지로 작성한 .HTML 파일을 웹브라우저가 톰켓 서버에 전달
1. 톰켓 서버는 스프링 컨테이너 안에 있는 controller
에게 전달
해당 HTML이 존재하지 않기 때문에 다음 과정으로 이동
2. 톰컷 서버는 resource/static/
안에 들어있는 .HTML파일을 찾음
이후 웹브라우저에게 그대로 전달함
분리되어 있는 HTML코드와 로직코드를 결합시켜준다.
서버사이드 템플릿 엔진 : 서버에서 가져온 데이터를 이미 존재하는 템플릿에 넣어 화면을 완성시켜줌
Thymeleaf
템플릿 엔진이 속함
클라이언트 템플릿 엔진 : 화면을 만들고 서버에서 데이터를 받아와 동적인 화면은 구성함
기존 소스코드에 위 코드 내용을 추가하고 빌드한 후에 해당 URL을 방문하면 없는 페이지가 발생하는데 그 이유는 바로
18번 : @RequestParam에서 required의 디폴트 값이 true임으로 name에 해당하는 값을 추가해야한다. 만약 false였다면 값을 입력하지 않아도 에러 페이지가 발생하지 않는다.
그 결과 HTTP GET방식을 이용해서 name의 값을 입력해주면 다음과 같은 결과 페이지가 나온다.
viewResolver
: 뷰를 찾아주고 템플릿을 연결해줌정적컨텐츠와 달리 동적컨텐츠는 스프링부트가 템플릿을 건내줄때 변환하고 나서 웹브라우저에게 전달하게 된다.
cmd창에서 프로젝트를 빌드하고 cmd 창을 그대로 닫아버렸다. 그 결과 다음 번에 포트를 사용하려고 하니까 중복돼서 아래와 같은 멘트가 나오면서 error가 발생했다.
해결방안
>>> netstat -ano | find "8080"
>>> taskkill /pid 14692 /f