프로젝트 생성
IntelliJ를 실행 -> New Project 클릭
Next
이렇게 추가해준다.
Controller의 장점
Servlet Code
@WebServlet(urlPatterns = "/user/login")
public class UserLoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
// ...
}
}
@WebServlet(urlPatterns = "/user/logout")
public class UserLogoutServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
// ...
}
}
@WebServlet(urlPatterns = "/user/signup")
public class UserSingUpServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
// ...
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
// ...
}
}
만약 Spring MVC에 Front Controller 패턴이 적용되지 않았다면 이처럼 단 4개의 API를 처리하기 위해 무려 3개의 클래스를 만들어야 했을 것이다.
Controller Code
다행히 Spring MVC는 효율적인 API 처리를 위해 Front Controller 패턴을 만들어냈다.
이제는 API마다 파일을 만들 필요 없다.
a. 보통 하나의 Controller에 모든 API를 넣지는 않는다.
b. 유사한 성격의 API를 하나의 Controller로 관리한다.
메서드 이름도 마음대로 설정 가능(단, 클래스 내의 중복 메서드명 불가)
@Controller
@RequestMapping("/user")
public class UserController {
@GetMapping("/login")
public String login() {
// ...
}
@GetMapping("/logout")
public String logout() {
// ...
}
@GetMapping("/signup")
public String signup() {
// ...
}
@PostMapping("/signup")
public String registerUser(SignupRequestDto requestDto) {
// ...
}
}
@Controller
@Controller
public class HelloController {
@GetMapping("/api/hello")
@ResponseBody
public String hello() {
return "Hello World!";
}
}
@Controller는 해당 클래스가 Controller의 역할을 수행할 수 있도록 등록해줄 수 있다.
@GET, @POST, @PUT, @DELETE
각각의 HTTP Method에 매핑되는 애너테이션이다.
@GET
@GetMapping("/api/get")
@ResponseBody
public String get() {
return "GET Method 요청";
}
@POST
@PostMapping("/api/post")
@ResponseBody
public String post() {
return "POST Method 요청";
}
@PUT
@PutMapping("/api/put")
@ResponseBody
public String put() {
return "PUT Method 요청";
}
@DELETE
@DeleteMapping("/api/delete")
@ResponseBody
public String delete() {
return "DELETE Method 요청";
}
@RequestMapping
@RequestMapping은 중복되는 URL을 단축시켜줄 수 있다.
@Controller
@RequestMapping("/api")
public class HelloController {
@GetMapping("/hello")
@ResponseBody
public String hello() {
return "Hello World!";
}
@GetMapping("/get")
@ResponseBody
public String get() {
return "GET Method 요청";
}
@PostMapping("/post")
@ResponseBody
public String post() {
return "POST Method 요청";
}
@PutMapping("/put")
@ResponseBody
public String put() {
return "PUT Method 요청";
}
@DeleteMapping("/delete")
@ResponseBody
public String delete() {
return "DELETE Method 요청";
}
}
'Spring 입문주차 > 1주차' 카테고리의 다른 글
10. 데이터를 Client에 반환하는 방법 (0) | 2024.08.13 |
---|---|
9. 정적 페이지와 동적 페이지 (0) | 2024.08.13 |
7. Spring MVC란 무엇일까? (0) | 2024.08.12 |
6. MySQL 설치하기 (0) | 2024.08.12 |
5. Lombok과 application.properties (0) | 2024.08.11 |