-
[스프링 입문] Section 2.스프링 웹 개발 기초강의 기록/스프링 입문(김영한) 2021. 3. 16. 14:06
Section 2
- 정적 컨텐츠
- MVC와 템플릿 엔진
- API
정적컨텐츠 (spring-Static Content)
서버에서 하는 거 없이 파일을 웹브라우저에 내려주는 컨텐츠
기본적으로 리소스는 /**에 매핑
spring.mvc.static-path-patten 속성으로 조정 가능
// 모든 리소스를 /resorces/** spring.mvc.static-path-pattern=/resources/**
resources/static/hello-static.html
<!DOCTYPE HTML> <html> <head> <title>static content</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> 정적 컨텐츠 입니다. </body> </html>
MVC와 템플릿 엔진
MVC: Model, View, Controller
템플릿 엔진(jsp, php 등)
서버에서 변경을해서 동적으로 바꿔주는 컨텐츠
model 1: view에서 모든걸 다하고 View와 Controller가 분리되어있지 않은 형식( 예전 방식)
model 2: MVC 사용
View는 보여지기만 하는 화면으로 사용하는 것이 좋음
resources/templates/hello-template.html
<html xmlns:th="http://www.thymeleaf.org"> <body> <p th:text="'hello ' + ${name}">hello! empty</p> </body> </html>
${}안의 값은 model에서 꺼내 값을 치환해서 웹브라우저에서 띄운다.
timeleaf의 장점. 정보가 없이 주소창에 파일 위치를 입력해서 열었을 경우 hello! empty만 띄움
hello.hellospring.controller/HelloController.java
package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; @Controller public class HelloController { @GetMapping("hello-mvc") public String helloMvc(@RequestParam(value = "name", required = true) String name, Model model) { model.addAttribute("name", name); return "hello-template"; } }
API
보통 서버끼리 통신할 때 사용
hello.hellospring.controller/HelloController.java
@Controller public class HelloController { @GetMapping("hello-api") @ResponseBody public Hello helloApi(@RequestParam("name") String name) { @GetMapping("hello-string") @ResponseBody // http body부에 이 데이터를 직접 넣어주겟다. public String helloString(@RequestParam("name") String name) { return "hello " + name; // "hello spring" 문자 리턴 } static class Hello { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } }
xml: 복잡.무거움
json: 심플. 형식으로 반환. 현재는 거의 json 방식으로 통일
getter setter: 접근자 프로퍼티. getter(획득자), setter(설정자)
getter,setter 단축키(Ctrl + Shift + S + R)
private는 밖에서 꺼낼 수 없음. getter로 꺼낼 수 있게 만들어줌 (프로퍼티 접근 방식)
@ResponseBody 를 사용
- HTTP의 BODY에 문자 내용을 직접 반환
- viewResolver 대신에 HttpMessageConverter 가 동작 (StringBoot 기능)
- 기본 문자처리: StringHttpMessageConverter
- 기본 객체처리: MappingJackson2HttpMessageConverter
(잭슨과 구글의 gson도 있지만 Spring은 jackson 사용) - byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음
=> {name: spring}
정리
정적 컨텐츠 MVC와 템플릿 엔진 API 파일을 그대로 고객한테 전달 서버에서 변형해서 html을 바꿔 제공 json 등 데이터 포맷으로 클라이언트에 전달하여 객체를 반환 '강의 기록 > 스프링 입문(김영한)' 카테고리의 다른 글
[스프링 입문] Section 3.회원 관리 예제: 회원 도메인과 리포지토리 만들기 (0) 2021.03.16 [스프링 입문] Section 3.회원 관리 예제: 비즈니스 요구사항 정리 (0) 2021.03.16 [스프링 입문] Section 1.프로젝트 환경설정: View 환경설정 (이클립스) (0) 2021.03.15 [스프링 입문] Section 1.프로젝트 환경설정: 라이브러리 살펴보기 (0) 2021.03.15 [스프링 입문] Section 1.프로젝트 환경설정: 프로젝트 생성 (0) 2021.03.15