[Spring] 12.SpringProject-컨트롤러




컨트롤러의 구현



웹에서 가장 중요한 단계는 컨트롤러와 뷰를 제작하는 것입니다~!

실제 개발 시간에서도 이 부분을 만드는 작업이 대부분 차지합니다.

스프링 MVC에서 컨트롤러를 설계할 때 고려해야 하는 사항은 다음과 같습니다!


  • 공통적인 URI 경로와 각 기능별 URI



  • 각 URI에 대한 호출 방식(GET, POST)



  • 결과 처리와 리다이렉트 방식의 페이지 결정



  • 예외 페이지




공통 경로의 처리와 호출 방식



컨트롤러 설계는 특별한 경우가 아니면 모듈의 개수에 맞게 컨트롤러의 숫자를 정하게 됩니다!

모듈은 흔히 메뉴나 기능의 묶음이라고 생각하시면 됩니다!


그리고 컨트롤러는 하나의 모듈을 나타내는 대표적인 경로를 갖도록 해주는 것이 좋습니다!

예를 들어 게시판의 경우 /board/ 혹은 /boards/ 라는 경로를 기준으로 모든 경로가 시작하도록 설계하는 것입니다!


컨트롤러를 설계할 때 가장 중요한 점은 URI를 어떤 방식으로 사용하게 할 것인가입니다~


  • GET 방식 : 외부나 다른사람에게 조회가 가능하도록 만들어야하는 모든 경우는 GET 방식으로 설계합니다.



  • POST 방식 : 외부에 노출하는 것이 아니라 사용자 본인이 결정해서 어떤 작업을 진행되는 일은 POST 방식으로 설계합니다.




Spring MVC 의 경우 애노테이션을 통해 URI를 분기하거나 GET/POST 방식을 지정하기 때문에 위와 같은 결정과 더불어 해당 작업의 URI를 미리 결정해두는 작업이 필요합니다!


image




리다이렉트의 처리 방식



웹페이지의 화면 전환을 할 때 고려해야할 사항이 있습니다!

  • 등록 작업이 끝나고 리스트가 보여지기 전에 사용자에게 어떤 식으로 등록이 성공했는지를 알려줄 것인가?



  • 수정 작업이 끝나고 어떤 식으로 결과를 알려주고 리스트로 이동하는가?



  • 삭제 작업이 끝나면 어떻게 결과를 알려줘야 하는가?




실제로 많은 사이트에서는 Ajax나 REST 방식이 적용되어서 동작하지만, 아직 저희는 배우지 않았기에

최대한 단순한 페이지의 구성과 많은 화면 전환(화면 깜빡임)을 사용해서 위의 사항들을 처리하겠습니다!

일단은 화면전환(다른 웹페이지로 이동)을 할 때 redirect: 를 사용하겠습니다!


파라미터의 결정



스프링 MVC는 메소드의 파라미터와 리턴 타입이 상당히 유연하기 때문에 개발자는 설계할 때 모든 것을 결정해야합니다.


  • 파라미터의 수집은 스프링 MVC에서 자동으로 이루어지므로, 파리미터의 수집이 필요하면 원하는 객체를 파라미터로 수집한다.



  • 특별한 경우가 아니라면 VO 클래스 혹은 DTO 클래스를 파라미터로 사용하는 것이 편리하다.



  • 브라우저에서 들어오는 요청이 자동으로 파라미터로 지정한 클래스의 객체 속성값으로 처리되는데 이를 바인딩(binding)이라고 한다.



  • 스프링 MVC의 Model 객체는 해당 메소드에서 뷰(jsp)에 필요한 데이터를 전달하는 용도로 사용된다.




이번 장에서는 컨트롤러를 구현할 때 고려할 사항에 대해 살펴보았는데요! 다음 장부터 직접 CRUD 기능을 구현해보겠습니다!