스프링 웹 개발 기초Spring2023. 1. 18. 16:01
Table of Contents
스프링 웹 개발 기초
- 정적 컨텐츠
- MVC와 템플릿 엔진
- API
정적 컨텐츠
정적으로 된 웹 페이지
1. hello-static.html 을 resources/static 폴더에 저장
<!DOCTYPE HTML>
<html>
<head>
<title>hello-static</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
hello-static.html입니다.
</body>
</html>
2. http://localhost:8080/hello-static.html 에 접속
동작 원리
- 스프링 부트는 정적 컨텐츠 기능을 자동으로 제공해 줌
- localhost:8080/hello-static.html 에 접속하면
- 내장 톰켓 서버가 요청을 받아서 스프링에 넘김
- 스프링은 컨트롤러에서 hello-static이라는 컨트롤러가 있는지 확인
- 컨트롤러가 없으면 /static 폴더에서 찾아서 실행
MVC와 템플릿 엔진
MVC : Model,View,Controller
Model : 필요한 내용을 담아 화면에 넘김
Controller: 내부 로직,비즈니스를 처리
View : 화면을 그림
1.helloController 생성
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model){
model.addAttribute("data" , "hello!");
return "hello";
}
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam(value="name",required = true) String name,Model model){
model.addAttribute("name",name);
return "hello-template";
}
}
2. hello-template.html 을 resources/template 에 저장
<!DOCTYPE HTML>
<!--템플릿 엔진 선언-->
<html xmlns:th="http://www.thymeleaf.org">
<body>
<!--템플릿 엔진 문법-->
<p th:text="'hello. ' + ${name}" >안녕하세요. 손님</p>
</body>
</html>
3. http://localhost:8080/hello-mvc?name=Gani 접속
동작 원리
- 웹 브라우저에서 localhost:8080/hello-mvc 에 접속하면
- 내장 톰켓 서버가 요청을 받아서 스프링으로 넘김
- 스프링이 매핑에 맞는 컨트롤러를 찾아 helloController에 넘김
- hello- template를 반환하고, model(name : spring)으로 전달
- viewResolver가 templates/hello-template.html을 렌더링해서 html 변환 후 전달
API
객체를 반환
@ResponseBody 를 이용해 반환 String 그대로 보여주기
@GetMapping("hello-string")
@ResponseBody // http에서 body부분의 데이터를 직접 넣어줌
public String helloString(@RequestParam("name") String name){
return "hello" + name;
}
@ResponseBody를 이용해 객체로 전달하기
- helloController
- 프로퍼티 접근 방식
- Getter : 외부에서 데이터를 접근
- Setter : 외부에서 데이터를 설정
@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; } }
- 프로퍼티 접근 방식
- http://localhost:8080/hello-api?name=String 접속
동작 원리
- 웹 브라우저에서 http://localhost:8080/hello-api?name=String 에 접속
- 내장 톰켓 서버가 스프링에 넘김
- helloController를 찾아 메서드를 찾음
- @ResponsBody 로 인해 return 값 그대로 보여줌 , 대신 객체를 리턴했기 때문에 객체로 전달
- HttpMessageConverter가 동작함 이때 단순 String을 전달하면 StringConverter가 동작, 객체를 전달하면 JsonConverter가 동작
- 객체로 전달했기 때문에 JsonConverter가 동작해서 json에 맞게 변환해서 보여줌
'Spring' 카테고리의 다른 글
스프링 빈과 의존관계 (0) | 2023.01.29 |
---|---|
회원관리 예제 (0) | 2023.01.19 |
View 환경설정 (0) | 2023.01.18 |
라이브러리 살펴보기 (0) | 2023.01.17 |
Spring 시작하기 - 프로젝트 생성 (0) | 2023.01.10 |
@gani+ :: Gani_Dev :)
꾸준히 기록할 수 있는 사람이 되자 !