STS내에서 작업한 파일의 결과물을 웹 페이지에서 보기 위해서는 서버를 실행시켜주어야한다.
html 파일의 수정의 경우 서버를 재실행 할 필요는 없지만,
java 파일등 내부적인 파일의 수정이 일어나면 서버를 재실행 해야한다.
index.html
Hello
<a href="/hello">Hello</a>
클래스 위에 @Controller 어노테이션을 붙여주어 front에서 넘어온 URL 매핑을 여기서 해준다.
.core.controller > HelloController 생성
resource.templates > hello.html 생성
@Controller
public class HelloController {
@GetMapping("hello")
public String hello() {
System.out.println("controller 도착");
return "hello";
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
안녕하세요.
</body>
</html>
// Model이란
- Controller에서의 데이터를 Model에 담고, view는 Model에 담겨있는 데이터만 골라서 화면에 바인딩 해준다.
- HashMap 형태를 갖고 있고, key, value 값을 저장한다.
- request.setAttribute()와 비슷한 역할을 한다.
// ModelAndView
- Model에서 view 영역이 조금 더 확장된 형태
- Model과 view를 동시에 설정이 가능하며, Controller는 ModelAndView객체만 리턴하지만, Model과 View가 모두 리턴 가능하다.
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model) {
System.out.println("controller 도착");
model.addAttribute("data", "hello!!!!");
return "hello";
}
}
<html xmlns:th="http://www.thymeleaf.org">
...
<body>
<p th:text="'안녕하세요. ' + ${data} ">안녕하세요 test</p>
</body>
사용할 url 주소 : http://localhost:9090/hello-mvc?name=SpringMVC
resources>templates> hello-template.html 생성
HelloController.java
@Controller
public class HelloController {
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String param, Model model) {
model.addAttribute("name", param);
return "hello-template";
}
}
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>
@Controller
public class HelloController {
//@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String param, Model model) {
model.addAttribute("name", param);
return "hello-template";
}
@GetMapping("hello-mvc")
public String helloMvc2(@RequestParam(value="name", required = false) String param, Model model) {
model.addAttribute("name", param);
return "hello-template";
}
}
@Controller
public class HelloController {
...
@GetMapping("hello-mvc")
public String helloMvc3(@RequestParam(value="name", required = false, defaultValue = "required test") String param, Model model) {
model.addAttribute("name", param);
return "hello-template";
}
}
cotroller에서 DTO 객체에 데이터 선언 후, Model 객체에 담아준 뒤 html에서 Model 객체에 담긴 내용을 출력하기
core.dto 패키지, > MemberDTO.java 생성
core.controller > MemberController.java 생성
resource>templates > member.html 생성
public class MemberDTO {
private int no;
private String name;
private String phone;
}
@Controller
public class MemberController {
@RequestMapping("member")
public String getMember(Model model) {
MemberDTO member = new MemberDTO(1, "자바학생", "0101234567");
model.addAttribute("member", member);
return "member";
}
}
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table border="1">
<tr>
<th>번호</th>
<th>이름</th>
<th>전화번호</th>
</tr>
<tr th:object=${member}>
<td><span th:text=*{no}></span></td>
<td><span th:text=*{name}></span></td>
<td><span th:text=*{phone}></span></td>
</tr>
</table>
</body>
</html>