⚙️Backend/SPRING

[Spring Boot] 컨트롤러 / @annotation 정리 +간단한 view파일 넘기기

soonybutter 2024. 12. 14. 13:09
728x90

 

 

 

 

 

 

 

이번글은 Controller 에 대해 좀더 자세히 알아보고 Index 페이지를 만들어 보겠다.

Controller란 MVC에서 C에 해당하며 사용자의 요청을 처리한 후 V에 해당되는 뷰에 M에 해당되는 모델 객체를 넘겨주는 역할을 담당한다. Controller 의 대표적인 이노테이션은 어떤게 있는지 알아보겠다.

@Controller

Controller 의 역할을 수행한다고 명시한다.
명시된 클래스를 Spring MVC 컨트롤러로 표시하는데 사용된다.

주로 View을 반환하기 위해 사용하며 데이터를 반환하기 위해서는
@ResponseBody 어노테이션을 사용하여 클라이언트가 요청한 데이터를 JSON 형태로 데이터를 반환할 수 있다.

사용 방법은 클래스 선언부에 입력한다.

@Controller public class TestRestController { }

 

@RequestMapping

특정 URI 로 요청을 보내면 Controller 에서 어떤 메소드가 처리할 지 맵핑하기 위한 이노테이션이다.
사용 방법은 클래스나 메서드 선언부에 이노테이션을 기입한다.

 

RequestMapping(value="/users", method=@RequestMethod.GET) -> @GetMapping("/users") // 동일 
@RequestMapping(value="/users", method=@RequestMethod.POST) -> @PostMapping("/users") // 동일 
@RequestMapping(value="/users", method=@RequestMethod.PUT) -> @PutMapping("/users") // 동일 
@RequestMapping(value="/users", method=@RequestMethod.DELETE) -> @DeleteMapping("/users") // 동일

@RequestBody

HTTP 요청의 Body 내용을 통째로 자바 객체로 변환해서 매핑된 메소드 파라미터로 전달해준다.

@Controller @RequestBody public class TestRestController { }

@ResponseBody

자바 객체를 HTTP요청의 Body 내용으로 매핑하여 클라이언트로 전송한다.

@Controller 
public class TestRestController { 
    @ResponseBody 
    @RequestMapping("/hello") 
        public String hello(){
            return "Hello"; 
} }

 

@RestController

RESTful API 서비스에 사용되는 특수 컨트롤러이며 @Controller + @Response 합쳐 놓은거랑 동일한 역할을 한다.

Spring MVC Controller에 @ResponseBody가 추가되었으며 JSON 형태로 클라이언트가 요청한 객체를 반환한다.

@RestController public class TestRestController { }
 

 

 

 

 

여기까지 Controller 이노테이션에 대해 알아보았다. 이제 Index 페이지를 간단하게 만들어 볼 예정이다.

1. Index view 생성하기

소스 경로 src/main/resoreces/static 에 index.html 파일을 추가한다. static 폴더는 html 문서, 이미지, 영상 등 정적 파일을 관리하는 폴더이다.

생성한 index.html 문서를 열어 아래와 같이 간단하게 작성해 보자.

Controller 을 작성한다.

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.ResponseBody; 
@Controller 
public class TestController { 
    @RequestMapping(value = "/index") 
        public String index(){ 
            return "index.html"; 
} }

index.html 와 TestController 클래스 작성 후 실행해서 url로 접속해 보면 Hellow World! 을 확인할 수 있다.

 

 

 

Ajax 통신을 이용하여 Html 문서에서 Object 객체를 전달 받을 수 있다.

index.html을 다음과 같이 수정한다.

<!DOCTYPE html> 
<html>
<head>
<meta charset="UTF-8">
<title>Index</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<script> 
    $.ajax({ 
    type: "GET", 
    url: "/getValue", 
    success: (data) => { console.log(data); $('#contents').html(data); 
    } }); 
</script> 
</head> 
<body> 
    <h1>Hello World!</h1> 
    <div id="contents"> </div> 
</body> 
</html>

getValue 값을 가져올 수 있게 TestController 클래스도 다음과 같이 추가한다.

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.ResponseBody; 
@Controller 
public class TestController { 
    @RequestMapping(value = "/index") 
    public String index(){ 
        return "index.html"; 
    } 
    
    @ResponseBody 
    @RequestMapping("/getValue") 
    public String getValue() { 
        return "Hello java spring boot!"; 
} }

그리고 나서 실행해서 다시 확인해 보면 "Hello java spring boot! 라는 객체를 가져온걸 확인할 수 있다.

 

View 형식 말고도 @RestController 을 이용하여 JSON 형태로 클라이언트 요청 데이터를 반환할 수 있다.

 

 

 

 

 

728x90