2023. 1. 25. 18:25ㆍSpring 강의/section2
스프링 웹 개발 기초
- 정적 컨텐츠 : 서버에서 하는 일 없이 파일을 그대로 웹 브라우저에 내려줌
- MVC와 템플릿 엔진 : html을 서버에서 프로그래밍해서 동적으로 바꾼 후 브라우저에 내림
- API : 필요한 데이터 구조 포맷으로 클라이언트에게 데이터 전달
정적 컨텐츠
- 스프링부트는 기본적으로 정적 컨텐츠를 제공한다.
MVC와 템플릿 엔진
- MVC : Model, View, Controller
- view : 화면
- controller : 비즈니스 로직 + 서버 백단에 관련된 작업들
- model : controller에서 처리한 작업들 중 화면에 필요한 것들을 담아서 화면에 넘긴다.
좀 더 내용 있는 컨트롤러를 만들어보자.
localhost:8080/hello-mvc와 매핑되는 컨트롤러를 만들었다.
이번에는 @RequestParam("name")이라는 것이 추가 되었는데
지금은 get방식이기 때문에 url에서 저 값을 줘야 한다.
http://localhost:8080/hello-mvc?name=spring!
이렇게 되면 name은 @RequestParam("name")이 name에 들어가고 url name이 갖고 있는 값인 spring!이 value값으로 들어오게 된다. 그리고 그걸 hong이라는 이름으로 부르겠다는 것이다.
말이 복잡해졌는데 관계부터 정리하자.
url에 있는 name == @RequestParam("name")
model.addAttribute의 hong == @RequestParam("name") String hong
hello-template.html의 name1 == model.addAttribute("name1", hong)
url에서 name에 대한 값을 주면 @RequestParam이 받아서 name에 대한 값(spring!)을 변수 hong에 넣는다.
그리고 리턴값을 보면 hello-template이 있는데 [templates]에 hello-template.html이 있다는 것이다.
그러면 여기서의 name1에 값을 주기 위해
model.addAttribute에 키값을 맞춰준다.
그리고 저 위치에 넣고 싶은 값(spring!)을 담고 있는 hong을 보낸다.
model.addAttribute("name1", hong)
이렇게 하면 url에서 name에 어떤 값을 주냐에 따라 항상 다른 name을 띄울 수 있다.