-
Controller 이해하기spring/스프링 입문 주차 2024. 1. 17. 19:28
로그인 페이지 GET /user/login login 페이지 로그아웃 처리 GET /user/logout "/" 으로 redirect 회원 가입 페이지 GET /user/signup signup 페이지 회원 가입 처리 POST /user/signup "/" 으로 redirect
만약에 우리가 Servlet객체를 만들어서 위 API를 만들어야 한다면, 이렇게 코드를 짤 수 있다.(1) 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) { // ... } }
(2) Controller Code
- 다행히 Spring MVC는 효율적인 API 처리를 위해 Front Controller 패턴을 만들어냈다.
- 이제는 API 마다 파일을 만들 필요가 없다.
- 보통 하나의 Controller 에 모든 API를 넣지는 않는다.
- 유사한 성격의 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 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은 중복되는 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 > 스프링 입문 주차' 카테고리의 다른 글
HTTP 데이터를 객체로 처리하는 방법 (0) 2024.01.18 PathVariable과 ReqestParam (0) 2024.01.18 스프링에서 Jackson 형태로 반환하는 법 (0) 2024.01.18 스프링 MVC란? (0) 2024.01.17 간단한 Postman 사용법 (0) 2024.01.17