※ 이 포스팅은 '인프런' 이라는 웹사이트의 무료 강의 중, 김영한님의 '스프링 입문 - 코드로 배우는 스프링부트' 강의를 기반으로 작성됨을 알립니다.
먼저 스프링을 시작하기에 앞서, 스프링은 자바 언어를 베이스로 하므로 자바 언어를 먼저 배우고 오는 것을 추천한다.
프로젝트 생성
위의 스타터 홈페이지로 이동하면 쉽게 프로젝트를 생성할 수 있다.
프로젝트 선택
Gradle Project / 스프링부트 제일 최신버전 (no snapshot)/ Java / Jar / Java 11
프로젝트 메타 데이터
groupId : hello / artifactId: hello-spring
Dependencies: Spring Web, Thymeleaf 를 차례로 선택해주시면 됩니다.
더 세세한 설정은 강의를 참고해주시길 바랍니다.
웹 기초
1. 정적 컨텐츠
html 코드로만 이루어진 static, 즉 단어 뜻 그대로 정적인 웹사이트를 말합니다.
쉽게 말해서 그림으로 이해하시면 될 것 같습니다.
아무리 관객들이 그림을 두드리고, 만져보고, 불러봐도 그림은 전혀 반응하지 않습니다.
2. MVC와 템플릿 엔진
MVC는 Model, View, Controller를 의미합니다.
View는 화면을 띄워주는, 그러한 일들만을 수행하며, Controller는 서버 백엔드부분에서 일어나는 일들을 처리합니다.
웹에서 호출을 하면 내장 톰켓 서버를 거쳐, controller에 mapping된 메서드를 호출하고, viewResolver에 던진다.
@Controller
public class HelloController {
@GetMapping("hello-mvc") //웹에서 /hello-mvc라고 들어오면 반응
public String helloMvc(@RequestParam("name") String name, Model model) {
// ex) /hello-mvc?name=spring
// RequestParam이 붙어 있으므로, 변수를 넘겨주어야함.
model.addAttribute("name", name);
return "hello-template";
}
}
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
// name변수에 들어온 값(=spring)을 대입하여 출력
// 최종 출력 예시 : hello spring
</body>
3. API
@Controller
public class HelloController {
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
return "hello " + name;
}
}
@ResponseBody 를 사용하면 뷰 리졸버( viewResolver )를 사용하지 않는다.
대신에 HTTP의 BODY에 문자 내용을 직접 반환(HTML BODY TAG를 말하는 것이 아님!)
@Controller
public class HelloController {
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name) {
Hello hello = new Hello();
hello.setName(name);
return hello;
}
static class Hello {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
@ResponseBody 를 사용하고, 객체를 반환하면 객체가 JSON으로 변환된다.
(JSON이란? 자바스크립트 객체 문법으로, 구조화된 데이터를 표현하기 위한 포맷이다. 자세한 정보는 구글에서..)
작동 방식
@ResponseBody 를 사용하여 HTTP의 BODY에 문자 내용을 직접 반환한다.
그렇게 되면, viewResolver 대신에 HttpMessageConverter 가 동작하게 되고
기본 문자처리는 StringHttpMessageConverter,
기본 객체처리는 MappingJackson2HttpMessageConverter 가 동작한다.
byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있다.
(HttpMessageConverter는 클라이언트의 Http Accept헤더와 서버의 컨트롤러 반환 타입 정보를 조합하여 선택된다)
(더 자세한 내용은 김영한님의 스프링 MVC 강의참고!)
웹기초에 대해 알아보았으니, 다음 포스팅에서는 간단한 예제 개발을 진행해보도록 하장
'스프링(JAVA)' 카테고리의 다른 글
스프링 DB 접근 기술 #1 JDBC, JDBC Template (0) | 2022.09.25 |
---|---|
Spring 웹mvc 간단 회원 관리 예제(홈 화면, 등록, 조회) (0) | 2022.09.25 |
Spring 스프링 빈과 의존관계 (0) | 2022.09.25 |
Spring 회원 관리 예제 - 테스트 코드 (0) | 2022.09.25 |
Spring 회원 관리 예제 (0) | 2022.07.12 |