[ Spring Boot ] Controller 튜토리얼

jwkwon0817·2023년 9월 2일
0

Web Back-end

목록 보기
8/26
post-thumbnail

Spring Boot에서 Controller를 만드려면 Spring Container에 Controller로 쓸 클래스를 등록해 주어야 합니다.

등록해 주기ㅣ 위해서는 SpringConfig를 구현하거나 Controller로 쓸 클래스 위에 @Controller를 추가해 주면 됩니다.

어노테이션을 추가하는 방식으로 구현하는 것을 추천합니다.

SpringConfig 버전

@Configuration
public class SpringConfig {
	@Bean
    public YourController yourController() {
    	return new YourController();
    }
}

Annotation 버전

@Controller
public class YourController {
}

HTTP 매핑


HTTP 메서드 매핑을 하기 위해서는 @[메서드 이름]Mapping이라는 어노테이션을 사용해야 합니다.

예시로 HelloController를 만들어서 GET /hello 요청을 받아서 templates/hello.html 파일을 return해주기 위해서는 다음과 같이 코드를 작성할 수 있습니다.

예시

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {

    @GetMapping("hello")
    public String hello() {
        return "hello";
    }
}

문자열 반환


만약 hello.html이 아니라 hello라는 문자열을 반환하고 싶다면 @Controller 대신에 @RestController를 사용하거나, 만약 한 Controller에서 여러 Mapping을 하기 위해서는 Mapping 어노테이션 아래 @ResponseBody라는 어노테이션을 붙여주면 됩니다.

@Controller
@ResponseBody
@RestController

위 두 코드는 동일한 기능을 합니다.

예시

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@ResponseBody
public class HelloController {

    @GetMapping("hello")
    public String hello() {
        return "hello";
    }
}

HTML으로 모델을 통한 값 전달


만약 Model을 사용해서 HTML에서 변수를 사용하려면 다음과 같이 Model의 addAttribute()를 사용해서 구현할 수 있습니다.

예시

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HelloController {

    @GetMapping("hello")
    public String hello(Model model) {
    	String test = "test";
        
    	model.addAttribute("test", test);
        
        return "hello";
    }
}

Request Parameter


Mapping에서 파라미터 값을 받으려면 함수에 @RequestParam을 사용해서 구현할 수 있습니다.

예시

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {

	@GetMapping("hello")
	@ResponseBody
	public String helloString(@RequestParam("name") String name) {
		return "hello " + name;
	}
}

위 코드로 애플리케이션을 실행하면 /hello?name=test로 접속하면 hello test라는 문자가 반환됩니다.

profile
SRIHS 119th SW

0개의 댓글