웹 기발을 하는 방법 세 가지가 있다.
정적 컨텐츠
MVC와 템플릿 엔진
정적 컨텐츠는 앞서 다룬 페이지 만들기에서 다뤄보았다.
static 폴더 안에 html을 만들어 서버에 전달하여 웹 페이지를 보여주었던 방식이다.
MVC 그리고 템플릿 엔진은
MVC는 모델, 뷰, 컨트롤러이다.
컨트롤러는 우리가 만든 컨트롤로 뷰는 html 파일 그것들을 모델에 담아서 서버 측에 넘겨준다.
package test.testproject.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class TestController {
@GetMapping("test-mvc")
public String testMvc(@RequestParam(value = "name",required = true) String name,Model model){
model.addAttribute("name",name);
return "test";
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p th:text="'hi ' + ${name}">test html</p>
</body>
</html>
컨트롤러는 기존 컨트롤러를 사용하였고
test.html을 템플릿 폴더에 만들었다.
매핑을 통해 localhost8080/test-mvc로 이동해보자.

다음과 같이 에러가 뜰 것이다.
여기서 봐야할 것은 @RequestParam 어노테이션이다.
RequestParam을 잘 이해하기 위해 또 다른 예제를 하나 가져와봤다.
만약에
localhost8080/test?id=test1234&name=kim 이라고 클라이언트가 다음과 같이 서버에 요청한다고 하자
이 요청을 처리하기 위해선
package test.testproject.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class TestController {
@GetMapping("test")
public String getUserInfo(@RequestParam("id") Long id, @RequestParam("name") String name, Model model){
model.addAttribute("id",id);
model.addAttribute("name",name);
return "test";
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p th:text="'hi ' + ${id}"></p>
<p th:text="'hi' + ${name}"></p>
</body>
</html>
거의 같은 코드이긴 하나 복습할 겸 넣어봤다.
위의 경우에선 value=name,required=true이 부분을 뺏는데
매개변수가 매서드 매개변수와 이름이 갖고 어차피 true가 default 값이니 생략하였다. 그 부분을 인지하도록 하자
결론적으로 파라미터를 넘기는 어노테이션이기에 그 부분을 빼먹을 경우 에러가 발생한다

정상적으로 파라미터를 넘길 경우 작동하는 것을 볼 수 있다.
'스프링부트' 카테고리의 다른 글
| [Mac] Web server failed to start. Port 8080 was already in use 해결법 (0) | 2024.06.24 |
|---|---|
| Mac IntelliJ 스프링부트 빌드 및 실행하기 (0) | 2024.03.07 |
| Mac IntelliJ 스프링부트 깃 등록 (0) | 2024.03.06 |
| Mac IntelliJ 스프링부트 첫 페이지 만들기 (0) | 2024.03.05 |
| Mac IntelliJ 스프링부트 프로젝트 실행 (0) | 2024.03.05 |