웹서비스의 동작원리
웹서비스는 클라이언트와 서버의 요청과 응답으로 동작한다.
클라이언트: 서비스를 사용하는 프로그램 또는 컴퓨터 ↔ 서버 : 서비스를 제공하는 프로그램
= 웹브라우저 ↔ 스프링부트(서버의역할)
localhost:8080
localhost 서버의주소를 의미 = 내컴퓨터의주소를의미 비유하자면 우리집
8080 비유를 들어 방을 의미. '내집의 8080방'
이것을 ports 번호라고 부른다.
localhost:8080/hello.html
파일명을 직접 명시했을때
기본적으로 resources > static 에서 hello.html을 찾는다.
이것은 브라우저의 응답이다.
뷰 템플릿과 MVC패턴
뷰템플릿 : 화면을 담당하는 기술.
웹페이지를 하나의 틀로만들고, 여기에 변수를 삽입하게 한다.
틀이되는 페이지가 변수의 값에 따라서 수많은 페이지로 바뀔수있다.
타임리프 : 템플릿 엔진 (=html등의 뷰를 만들어줌) 이 템플릿 엔진 중 하나가 타임리프!
타임리프 템플릿을 통해서 controller(자바)에서 받아온 데이터를
Html 문서에 적용시킨뒤 "완성된" html파일만 클라이언트 전달
뷰템플릿에는 Controller와 Model이라는 두 동료가 있다.
Controller는 처리 (logic) , Model은 데이터관리 (data)
이렇게 화면 처리 데이터 분야를 각 담당자별로 나눈 기법은 MVC기법이라고 한다.(Model View Controller)
package com.mytestspring.mytestspring.Controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
//Controller를 만드는 방법
//1. Controller 동료를 선언!
@Controller
public class FirstController {
//2. @GetMapping이라는 어노테이션을 넣어주어야한다.
//@GetMapping = URL요청연결
@GetMapping("/hi") //3. ()안에 접속할 url주소를 넣어주어야한다.
//6.파라미터로 Model을 받아오기
public String niceToMeetYou(Model model){
//7.model을 통해서 변수등록 => .addAttribute
model.addAttribute("username", "hongpark");
//8."홍팍"이라는 값을 "username"이라는 이름에 연결시켜서 보내줌
return "greeting"; //4. return써주면 -> templates안에 greeting을 알아서 찾아서 -> 브라우저로 전송
//hi라는 url이 입력받았을때 greeting를 찾아서 반환해준다.
}
}
<!DOCTYPE html>
<!-- doc+tab -기본html생성-->
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--5.이름을바꾸면서 입력되게하고싶으면 ${username}을 써준다.
6.그리고 Model을 사용해야한다-->
<p th:text= " '안녕하세요 ' + ${username} ">안녕 낯선이</p>
</body>
</html>
MVC 역할과 실행흐름
서버로서의 스프링부트 → 모델,뷰,컨트롤러의 유기적 역할공간이 존재한다
컨트롤러 - 클라이언트로부터 요청을받고
뷰 - 최종페이지를만들어주고
모델 - 최종페이지에 쓰일 데이터들을 뷰에게 전달해준다.
바로 전에 작성했던 예제 흐름 정리
1.localhost:8080/hi 를 Controller가 받는다
2.@Controller
3.@GetMapping
4.hi라는 주소를 @GetMapping("/hi") 이렇게 받게 해놨기때문에
niceToMeetYou라는 메소드가 hi라는요청과 동시에 수행이된다
5.이 메소드가 반환하는 리턴값을 통해서 그 페이지 (templates의 greetings)를 찾아서 보여준다.
@Controller
public class FirstController {
@GetMapping("/hi")
public String niceToMeetYou(Model model){
6.greeting을 들어가보면 username이라는 변수를 사용하는데 이 변수를 사용하기 위해서는 model을 거쳐야한다.
<p th:text= " '안녕하세요 ' + ${username} ">안녕 낯선이</p>
7.Controller에 가보면 model을 통해서 .addAttribute라는 메소드를 수행시킨다.
model.addAttribute("username", "hongpark");
return "greetings";
8.이때 username이라는 변수를 등록시키고 이 변수에 오른쪽의 hongpark이라는 값을 등록했기때문에
<p th:text= " '안녕하세요 ' + ${username} ">안녕 낯선이</p>
9.뷰페이지에서 유저네임을 사용할수있다.
localhos:8080/bye 로 입력받았을때, 다르게 출력하는것을 작성해보자
package com.mytestspring.mytestspring.Controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
//Controller를 만드는 방법
//1. Controller 동료를 선언!
@Controller
public class FirstController {
//2. @GetMapping이라는 어노테이션을 넣어주어야한다.
//@GetMapping = URL요청연결
@GetMapping("/hi") //3. ()안에 접속할 url주소를 넣어주어야한다.
//6.파라미터로 Model을 받아오기
public String niceToMeetYou(Model model){
//7.model을 통해서 변수등록 => .addAttribute
model.addAttribute("username", "hongpark");
//8."홍팍"이라는 값을 "username"이라는 이름에 연결시켜서 보내줌
return "greeting"; //4. return써주면 -> templates안에 greeting을 알아서 찾아서 -> 브라우저로 전송
//hi라는 url이 입력받았을때 greeting를 찾아서 반환해준다.
}
//localhos:8080/bye 로 입력받았을때, 다르게 출력하는것을 작성해보자
@GetMapping("/bye")
public String seeYouNext(Model model) {
model.addAttribute("nickname", "홍길동");
return "goodbye";
}
}
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p th:text= " '다음에또만나요 ' + ${nickname} ">안녕 낯선이</p>
</body>
</html>
원본 영상 링크 :
https://www.youtube.com/watch?v=5vfxeRJJsWo&list=PLyebPLlVYXCiYdYaWRKgCqvnCFrLEANXt&index=6
'STUDY > SpringBoot' 카테고리의 다른 글
[SpringBoot] BootStrap 레이아웃 정리✔ [2] (0) | 2022.07.31 |
---|---|
[SpringBoot] 22-07-28 SpringBoot 간단 게시판 예제 ☑ (0) | 2022.07.29 |
[SpringBoot] Spring Framework 개념 정리✔ (0) | 2022.07.28 |
[SpringBoot] 22-07-28 SpringBoot 전체 이해하기 ☑ (0) | 2022.07.28 |
[SpringBoot] 22-07-28 IntelliJ에서 SpringBoot 시작하기 (0) | 2022.07.27 |