일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- CustomScrollView
- activity
- appbar
- 앱
- LifeCycle
- TEST
- 앱바
- Dialog
- Coroutines
- Kotlin
- ScrollView
- data
- 테스트
- tabbar
- drift
- DART
- Button
- 안드로이드
- Navigation
- Compose
- scroll
- viewmodel
- intent
- binding
- Flutter
- livedata
- 계측
- android
- textfield
- textview
- Today
- Total
Study Record
[Spring] 웹 개발 기초 본문
✍ 정적 컨텐츠(파일을 그대로 웹 브라우저에 내려주는 방법)
Spring Boot Features - Static Content
파일을 그대로 웹 브라우저에 내려주는 방식이다.
[예시] resources/static 디렉터리에 html 파일을 만든다. (hello-static.html)
웹 브라우저에서 http://localhost:8080/hello-static.html 에 접속하면,
① hello-static 과 관련된 컨테이너가 있는지 확인한다.
② static 디렉터리의 hello-static 이름을 가진 html 파일을 확인한다.
이러한 순서로 처리하게 된다. 따라서 hello-static 과 관련된 컨테이너가 없으므로 hello-static.html 파일을 서버에서 내려주게 된다.
✍ MVC 와 템플릿 엔진 (html 을 그대로 내려주는 게 아니라 서버에서 변형하여 내려준다.)
※ M(Model) V(View) C(Controller)
웹 개발할 때, 화면만 집중해서 그리는 View 와 나머지 비즈니스 로직을 처리하는 부분(Controller, Model)을 나눠 개발한다. View 하나에 DB 접근하고 Controller 로직도 처리하고 하면 유지 보수하기 어렵기 때문에 MVC 로 쪼개서 개발한다.
[예시]
① Controller 를 생성한다.
@Controller
public class HelloController {
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam(value = "name", required = false) String name, Model model) {
model.addAttribute("name", name);
return "hello-template";
}
}
@RequestParam(value = "name", required = false)
- request 파라미터를 받는다. 변수 이름은 name 이며 required 는 false 이므로 파라미터가 없어도 된다.
② View 를 생성한다. [resources/temlates]
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
③ http://localhost:8080/hello-mvc?name=kim 으로 접속해본다.
[실행 과정]
① http://localhost:8080/hello-mvc?name=kim 로 요청이 들어오면 관련 컨테이너가 있는지 찾는다.
② hello-mvc 매핑이 된 컨테이너를 찾고 helloMvc 함수를 실행한다.
③ viewResolver 가 helloMvc 함수의 리턴 값인 hello-template 이름과 매핑된 파일을 찾아 처리 후 html 파일을 웹 브라우저에 보낸다. (resources:templates/hello-template.html)
✍ API
주로 앱 개발(클리아언트)과 관련된 작업을 할 때 주로 사용하는 방식(JSON 데이터를 주고받는다.)이다.
[예시]
# Controller
@Controller
public class HelloController {
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
return "hello " + name;
}
@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 : HTTP의 BODY에 문자 내용을 직접 반환한다.
※ Spring 은 컨트롤러에서 리터값으로 객체를 반환하면 자동으로 JSON 형식으로 바꿔 반환해준다.
주로, hello-string 은 String 을 그대로 넘겨주는 것보다 객체를 이용해 JSON 형식으로 반환하는 방식을 사용한다.
'Spring' 카테고리의 다른 글
[Spring] 기본 정리 (0) | 2022.06.05 |
---|---|
[Spring] 빌드하기 (0) | 2022.06.05 |
[Spring] Welcome Page, GetMaping (0) | 2022.06.05 |
[Spring] 프로젝트 생성하기 (0) | 2022.06.05 |