spring 설치
spring 검색 후 window용으로
LTS - Long Term Support - 오랜 기간 지원될 버전
초기 세팅
모두 선택해서 confirm
참고
UTF-8로 다 맞춰줌(한글)
index.html(웰컴페이지)로 테스트
project 만들때 application.properties에 기본 세팅.
html파일엔 상단에 써줘야함
#port 세팅
server.port=9090
#한글설정
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true
#thymleaf cache
spring.thymeleaf.cache=false
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
Hello
<a href="/hello">hello</a>
</body>
</html>
package com.codingbox.core.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 : Controller 역할을 하는 class에 붙여준다.
* 해당 Controller에서 mapping url을 찾는다.
* 현재 : localhost:9090/hello
*/
@Controller
public class HelloController {
/*
* @GetMapping : get방식의 요청
*/
@GetMapping("/hello")
public String hello(Model model) {
System.out.println("hello 도착");
model.addAttribute("data", "hello!!!");
return "hello"; // hello.html 화면을 찾아서 return
/*
* 컨트롤러에서 리턴 값으로 문자를 반환하면 veiwResolver가 화면을 찾아서 처리한다.
* - 스프링 부트 템플릿엔진 기본 viewName 매핑
* - resources:templates/+{viewName}+.html
*/
}
/*
* @RequestParam("name")
* -> request.getParameter("name")와 동일하다.
* **옵션**
* required : 파라미터 값 필수 여부, true -> 필수(default), false -> 필수 아님
* defaultValue : 파라미터 값이 없을 경우 기본으로 들어갈 값
*
*/
// http://localhost:9090/hello-mvc?name=Spring
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam(value="name", required=false, defaultValue="required test") String username, Model model){
model.addAttribute("modelvalue", username);
return "hello-template";
}
}
package com.codingbox.core.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.codingbox.core.dto.MemberDTO;
@Controller
public class MemberController {
@RequestMapping("member")
public String getMember(Model model) {
MemberDTO member = new MemberDTO(1, "자바학생", "01012345678");
model.addAttribute("member", member);
return "thymleaf/member";
}
}
- <!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p th:text="'타임리프 ' + ${data}">안녕하세요. 손님</p>
</body>
</html>
<!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 not empty ' + ${modelvalue}">empty!!</p>
</body>
</html>
package com.codingbox.core.dto;
public class MemberDTO {
private int no;
private String name;
private String phone;
public MemberDTO(int no, String name, String phone) {
super();
this.no = no;
this.name = name;
this.phone = phone;
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
<!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>