기록하는 공부
[인프런/강의 복습] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 (2) 본문
[인프런/강의 복습] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 (2)
SS_StudySteadily 2023. 6. 26. 23:48
※ 본 포스팅은 강의를 듣고 개인적으로 정리한 게시글이므로 이 점 참고 바랍니다.
정적 컨텐츠
정적 컨텐츠란 파일을 그대로 서버에 올리는 것을 말한다.
https://docs.spring.io/spring-boot/docs/2.7.13/reference/htmlsingle/#deployment
src - 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>A
서버를 다시 실행시키고 웹 브라우저에 접속해 보자.
MVC와 템플릿 엔진
MVC란 Model, View, Controller를 말한다.
View는 화면과 관계된 일만, Model과 Controller는 비즈니스 로직과 관련된 일을 하도록 나누는 것이다.
src - main - java - controller 디렉터리 하위에 생성했던 HelloController 파일에 소스코드를 추가 작성한다.
이는 MVC 동작 구성을 파악하기 위해서이다.
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")
public String hello(Model model) {
model.addAttribute("data", "hello!!");
return "hello";
}
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model) {
model.addAttribute("name", name);
return "hello-template";
}
}
src - resources - templates 디렉터리 하위에 hello-template.html 파일을 만들고 아래 사진과 같이 코드를 작성한다.
templates에 hello-template.html을 만들면
위 HelloController에서 추가로 작성한 코드에서 이를 불러온다.
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>
서버를 실행시키고 hello-mvc로 웹페이지 접속을 시도했는데 에러가 발생했다.
그 이유는 name에 해당하는 value값을 전해주지 않았기 때문이다.
그래서 GET 방식으로 파라미터를 넘겨주면 아래 사진과 같이 성공적으로 동작함을 알 수 있다.
http://localhost:8080/hello-mvc?name=spring! 입력
API
@ResponseBody : 컨트롤러(Controller) 메서드에서 해당 메서드의 반환 값을 HTTP 응답 본문으로 전송하는 데 사용
- 뷰 리졸버( viewResolver )를 사용하지 않음
- HTTP의 BODY에 문자 내용을 직접 반환(HTML BODY TAG를 말하는 것이 아님)
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;
}
}
JSON(키 : 속성) 형태로 출력되는 것을 확인할 수 있다.
'Language > Java' 카테고리의 다른 글
[Programmers] 120903 배열의 유사도 (equals 함수) (0) | 2023.07.11 |
---|---|
[인프런/강의 복습] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 (0~1) / intelliJ 설치 / jdk 11 설치 / cmd에서 스프링 프로젝트 빌드하고 실행하기 (0) | 2023.06.24 |
[백준 9086] 문자열 (런타임에러 수정) (0) | 2023.04.05 |