스프링 부트 ( Spring boot ) 컨트롤러 생성과
컨트롤러의 종류 알아보기 및 생성하기
오늘은 스프링 부트에서 컨트롤러를 생성하고 해당 컨트롤러를 활용하는 방법을 알아보도록 하겠습니다.
컨트롤러는 생성한 모델과 뷰간에 상호동작을 조정합니다.
더 자세하게 이해하기 위해서는 Spring MVC 에 대해서 이해하셔야 합니다.
MVC란 Model, View, Controller 의 약자로 사용자 인터페이스와 비지니스 로직을 분리하여 웹 개발을 하는 것을 가장 큰 장점이라고 생각하고 계발을 진행하는 방법입니다.
Model : 모델은 데이터로 애플리케이션의 정보를 나타냅니다.
View : 뷰는 화면으로 사용자에게 보여주는 인터페이스를 말합니다.
Controller : 컨트롤러는 위에서 말했듯치 비지니스 로직과 모델, 뷰간의 상호동장의 조정자 역활을 합니다.
설명은 이만하고 바로 실습으로 진행하도록 하겠습니다.
저번 포스팅에서 생성하지 않은 index.html 파일을 아래와 같이 생성해봅시다.
templates 폴더에서 오른쪽 클릭 new > html File
OK!
생성하고 나면 html 좀 작게 보이기 때문에 설정에 가서 font를 검색하고 사이즈를 키워줍시다.
검색에서 font를 검색한다
이후 index.html 파일을 아래와 같이 수정해봅시다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Kingname Spring boot</title>
</head>
<body>
<h1>Hellow world!</h1>
</body>
</html>
그리고 실행버튼을 눌러 서버를 실행하게 되면 아래와 같은 화면을 볼 수 있을 것입니다.
여기까지 잘 따라왔을거라고 생각합니다.
잘 접속이 된다면 이제 controller를 생성할 시기가 도래했습니다..!
생성한 패키지에서 새로운 package를 생성합니다.
오른쪽 클릭
패키지를 클릭하고 controller 입력하여 생성한다.
이후 같은 방법으로 아래와 같이 Controller JAVA 클래스를 2개 생성합니다.
여기까지 잘 생성했다면 이제는 컨트롤러를 정의해줘야 합니다.
컨트롤러의 이름은 각자 용도의 맞게 생성해 주시면 됩니다. 모두가 알아 볼 수 있도록 하는 것이 좋습니다.
특히 협업을 할 경우에는 필수적 입니다.
먼저 PageController를 보도록 하겠습니다.
package com.kingname.tistory.king.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class PageController {
@RequestMapping(value = "/home")
public String home() {
return "index";
}
}
컨트롤러 클래스에 @Controller 라고 선언하면 컨트롤러가 설정된 것입니다.
그럼 해당 컨트롤러를 사용하기 위해서 메소드를 생성합시다.
이후에 서버를 재시작 하게 된다면 설정한 URL를 통해서 해당 index.html에 접근 할 수 있게 됩니다.
이번에는 King 컨트롤러를 보도록 합시다.
package com.kingname.tistory.king.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class KingController {
@RequestMapping(value = "/string", method = RequestMethod.GET)
public String getHomeString() {
return "index";
}
}
해당 컨트롤러에는 @RestController를 선언하였습니다.
이후 @RequestMapping을 통해서 GET 방식의 URI 를 생성하였습니다.
주로 이용하는 방식은 GET, POST, PUT, DELETE가 있습니다.
이 외에도 많이 존재합니다.
method 방식
그렇다면 이제 서버를 재시작 이후 해당 URL로 접근해 봅시다.
Controller와 RestController의 차이점을 알 수 있을 겁니다.
Controller는 단순의 페이지를 이동시키는 방법으로 보통 Model을 설정하여 해당 페이지에 보내게 되고
VIew에서는 보통 JSP 페이지와 함께 쓰거나 JSTL과 함께 이용하여 쓰이게 됩니다.
RestController는 return 되는 값을 페이지에 보여줍니다. POST 방식이나 PUT 방식을 쓰게 된다면 일반적인 브라우저에서는 볼 수 없습니다. RESTful 접속 도구를 설치하여 볼 수 있습니다.
하지만 Controller에서도 return 되는 값을 보내주는 방법이 있습니다.
@RequestMapping(value = "/homestr", method = RequestMethod.GET)
public @ResponseBody String homeStr() {
return "Hello~~";
}
이와 같이 @responseBody를 이용하여 return 형태를 지정하는 방법입니다.
결론은 개발하는 환경에 맞게 적절하게 잘 사용하시면 되겠습니다.
간단하게 Ajax 통신을 통해서 해당 값을 index.html 에 뿌려보도록 하겠습니다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Kingname Spring boot</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$.ajax({
type: "GET",
url: "/string",
success: (data) => {
console.log(data);
$('.string').html(data);
}
});
</script>
</head>
<body>
<h1>Hellow world!</h1>
<div class="string"></div>
</body>
</html>
div 태그와 jquery 를 추가하였습니다.
이후 ajax 통신을 통해서 해당 데이터를 콘솔과 .string 클래스에 추가하는 방법입니다.
다 되었다면 아래와 같은 화면을 볼 수 있습니다.
완성입니다!
여기까지가 이번 포스팅에서 다룰 내용이었습니다.
이만 스프링 부트 ( Spring boot ) 컨트롤러 생성과 MVC에 대해서 알아보기
포스팅을 마치겠습니다.
도움이 되셨다면 공감과 +a가 제 젤리값의 큰 힘이됩니다.