Spring에서 Controller(Handler)를 만들 때 사용하는 어노테이션을 잡아보자.
@Controller
public class ViewController {
@RequestMapping("/login")
public String example() {
return "login"; // ViewName이 return
}
}
View
가 있는 경우에 사용하는 어노테이션이다.main/resources/templates
💡 템플릿 엔진?
템플릿 엔진은 지정된 템플릿 양식과 데이터가 합쳐져서 HTML 문서를 출력하는 소프트웨어를 말한다. 서버 사이드, 클라이언트 사이드로 나뉘는데
대표적인 서버 사이드 엔진으로 JSP, 타임리프(Thymeleaf)가 있다.
@RestController
public class ResponseController {
@RequestMapping("/rest")
public String example() {
return "rest"; // String Data가 반환된다.
}
}
// 1. RestController
@RestController
public class RequestMappingController {
// 2-1. "/request"라는 URL로 요청이 들어왔을 경우
// 2-2. HTTP 메소드는 GET만 허용
@RequestMapping(value = "/request", method = RequestMethod.GET)
public String exampleRequest() {
// 3. 응답
return "this is request!";
}
}
@RequestMapping({"/example", "/example2", "/example3"})
method
속성으로 허용할 HTTP 메소드를 지정할 수 있다. value
속성은 생략 가능하다.@RequestMapping("request")
@PostMapping, @PutMapping, @DeleteMapping, @PatchMapping
// ✅ PostMapping 예시
@PostMapping("/request")
public String exampleRequest() {
return "this is request!";
}
RequestMapping
과 같은 구조를 갖고 있다.users/list
@RequestMapping("/users")
@RestController
public class RequestMappingController {
@GetMapping("/v1")
public String example() {
return "/users/v1 입니다!";
}
@GetMapping("/v2")
public String example() {
return "/users/v2 입니다!";
}
}
// ✅ 1-1. 클래스 레벨에서의 RequestMapping
// ✅ 1-2. RestController: 데이터를 반환하는 컨트롤러
@RequestMapping("/users")
@RestController
public class PathVariableController {
// ✅ 2. HTTP 메소드는 GET 요청만 허용
@GetMapping("/{postId}")
// ✅ 3. PathVariable로 파라미터 변수 postId 받기
public String getPostId(@PathVariable Long postId) {
String result = "id는 다음과 같습니다 : " + postId;
return result;
}
}
// ✅ 데이터를 반환하는 컨트롤러
@RestController
public class ParameterController {
// ✅ HTTP 메소드는 GET만 허용
// ✅ URL은 /users 일 경우
// ✅ gender라는 파라미터의 값이 mand일 경우에만 !!
@GetMapping(value = "/users", params = "gender=man")
public String params() {
String result = "남자시군요";
return result;
}
params=!gender
: gender가 없어야 된다.params = "gender!=man"
: man이 아니어야 한다.params = {"gender=man", "gender=woman"}
: 다양한 값을 허용한다.내일배움캠프 Spring 입문 4주차