본문 바로가기
Study/Java Spring Boot

[Spring] 스프링 입문2 - 정적웹, MVC, API

스프링 입문 강의 정리

 

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 학습 페이지

지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요....

www.inflearn.com

 

1. 웹개발 기초

1) 정적페이지

정적페이지 같은 경우,

static 폴더내에 만들어진 파일명으로 접속한다.

 

웹 요청이 들어오면,

스프링 서버는 해당 컨텐츠에 맵핑된 컨트롤러를 먼저 찾고 없으면,

이후에 정적인 리소스를 찾는다.

 

2) MVC 방식

MVC방식은 프론트와 백엔드 개발을 구분하고,

좀 더 체계적인 개발과 유지보수를 위한 구조이다.

src/main 밑에 controller 패키지 안에 controller를 만들고 ,

들어온 요청에 대해 컨트롤러에서 요청에 대한 처리를 수행하여 결과 모델을 반환한다.  

 

# controller에 메소드 추가

@Controller
public class HelloController {
	@GetMapping("hello")
	public String hello(Model model) {
		model.addAttribute("data", " 컨트롤러에서 데이터 전달");
		return "hello";
	}
	@GetMapping("hello-mvc")
	public String helloMvc(@RequestParam(value = "name", required = false, defaultValue = "Empty") String name , Model model) {
		model.addAttribute("name", name);
		return "hello-template";
	}
}

hello-mvc 로 들어오면,

파라미터도 받아서

return 해줄 hello-template 페이지에

name 속성에 해당 입력받은 파라미터를 넣어주어 반환하는 형태이다.

 

# hello-template 페이지 생성

<!DOCTYPE html>
<html xmlns:th="http://www/thymeleaf.com">
<head>
<title>Insert title here</title>
</head>
<body>
	<p th:text="'hello-template 페이지  , 전달받은 이름 : '+ ${name}"/>
</body>
</html>

파라미터가 안들어오면 기본적으로 에러가 발생하므로, 

위에 컨트롤러에서 @RequestParam 사용시

required = false 설정으로 파라미터가 없어도 에러가 나지 않게 막을 수 있다. (선택사항)

또는 defaultValue = "Empty" 등과 같은 문법으로 추가적인 기본값을 지정해줄수 있다. (선택사항)

 

 

 

3) API 방식

특정 도메인을 호출해서

뷰가 아닌, JSON형식에 데이터 반환하거나, CRUD(삽입,읽기,삭제,갱신) 하는 방식 

 

아래 "hello-api-data" 라는 요청이 들어오면, Json을 형식으로 저장하여 반환해주는 간단한 예제를 보자.

	@GetMapping("hello-api-data")
	@ResponseBody
	public Person helloApi(@RequestParam(value = "data", required = false, defaultValue = "Empty") String data) {
		Person person = new Person();
		person.setName(data);
		return person;
	}
	static class Person{
		private String name;
		public void setName(String name) {
			this.name = name;
		}
		public String getName() {
			return name;
		}
	}

여기서 일단, DB를 연동한 상태가 아니니, person이라는 객체를 만들어

저장후 객체를 반환해 주었다.

 

( 이클립스 getter / setter 제너레이팅 단축키 : alt + shift + s -> r )

 

 

스프링에서 @ResponseBody 가 사용되면, 

HTTPBODY에 문자열을 반환하지만, 

반환타입이 객체인 경우, Json형식으로 변경하여 전달한다.

 

 

소스코드

https://github.com/bangbangu4/Spring-intro

 

GitHub - bangbangu4/Spring-intro: Spring-Introduction (김영한) 강의 정리

Spring-Introduction (김영한) 강의 정리. Contribute to bangbangu4/Spring-intro development by creating an account on GitHub.

github.com