'뼈대나 근간'
을 이루는 코드들의 묶음프로그래밍의 기본 틀
을 의미조립
하는 형태로 개발이 진행된다. 일련의 코드들의 집합
스프링 프레임워크
: 이미 여러 라이브러리들이 장착돼 있음 스프링 프레임워크는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크
동적인 웹 사이트를 개발하기 위한 여러가지 서비스를 제공
프로젝트 옵션
Project : 빌드 툴 (프로젝트에 필요한 의존성을 관리하는 툴) 선택
Spring Boot : 사용할 버전 선택
Group : 회사의 identity
artifact : 프로젝트 이름
Packaging : 스프링부트는 웬만하면 jar로 배포
Dependencies : 프로젝트 생성과 동시에 사용할 라이브러리
generate로 프로젝트 생성
사용할 workplace에서 프로젝트 zip 풀기
src/main/resources의 application.properties에서 환경설정 가능함
port 수정
server.port=9090
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.thymeleaf.cache=false
// 새로고침으로 타임리프 변경사항 웹에서 확인 가능
@SpringBootApplication
@Controller
: 해당 url mapping을 찾는 역할@GetMapping/@PostMapping
: url get방식/post방식 요청 매핑@RequestMapping
: 방식에 상관없이 요청 매핑@RequestParam
@RequestParam("name")
: 기본 name이라는 key값을 파싱, 옵션 추가 가능required
: 파라미터 값 필수 여부defaultValue
: 파라미터 값이 없을 경우, 기본으로 들어갈 값💡 예시
<<Controller.java>>
@GetMapping("/hello-mvc")
public String helloMvc(@RequestParam(value = "name", required = false, defaultValue = "required value") String name, Model model) {
model.addAttribute("name", name);
return "hello-template";
}
<<hello-template.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 ' + ${name}">Hello empty</p>
</body>
</html>
👍 결과
🙆♀️ 알아두기
뷰 리졸버(viewResolver)
💡 예시
<HomeController.java>
@Controller
public class HomeContoller {
// localhost:9090으로 호출하면 home() 호출
@GetMapping("/")
public String home() {
return "home";
}
}
<src/main/resources/templates/home.html>
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
home 출력 테스트
</body>
</html>
👍 결과
localhost:9090으로 호출하면 home.html 파일 출력
💡 예시
@Controller
public class MemberController {
// member url mapping
@RequestMapping("member")
public String getMember(Model model) {
MemberDTO member = new MemberDTO( 1, "자바학생", "01012345678");
model.addAttribute("member",member);
return "thymeleaf/member";
// templates 파일 밑에 thymeleaf 밑에 member.html
}
}