이전에 화면을 담당하는 View와 이동을 담당했던 Controller를 만들었다면, 이번엔 기능을 담당하는 Service를 만들 예정입니다.
1. DTO 객체 생성
회원가입을 할때, Member의 속성을 선언 후, Getter & Setter 로 외부에서 쓸 수 있게 만들어 줍니다.
2-1 . View에서 값을 가져오는 방법 (HttpServletRequest)
스프링에서는 View 페이지에서 Controller로 값을 가져오는 방법은 크게 3가지 방법이 있습니다.
Form의 name 속성을 기준으로 가져옵니다.
2-2 . 스프링 어노테이션을 이용하는 방법 (@RequestParam)
Form의 name 속성을 기준으로 가져옵니다.
2-3 . 커멘드 객체를 이용하는 방법
스프링에서 제공하는 Model 이 아닌 만들어둔 DTO 객체를 호출하여 직접 값을 담아 View 페이지로 데이터를 가져 옵니다. 단 View 페이지에서는 ${객체.속성}으로 표현해주어야 합니다.
3-1 . Controller의 Model 전달과정
회원가입 페이지에서 Form 버튼을 누르게 되면 Form action이 @RequestMapping 을 찾아 실행합니다.
Form의 값들은 HttpServletRequest 를 통해 담겨서 넘어옵니다. Controller에서 받은 Param 값들은 Model에 담아 다시 View 페이지로 전달할 수 있습니다. Model은 데이터만 담습니다.
3-2. Controller의 ModelAndView 전달 과정
화면으로 전달하기 위한 또 다른 방법으로, ModelAndView가 있습니다. 이는 스프링에서 제공하는 객체로 데이터와 View의 이름을 같이 전달 합니다.
4. Service Interface의 생성
기능을 선언하는 인터페이스를 생성합니다. 추후 implements 를 통해서 기능을 정의해주어야 합니다.
5. ServiceImpl 의 생성
인터페이스에 정의된 기능을 사용하기 위하여 implements 선언 후 @Override를 통해 재정의 해주어야 합니다.
이는 비즈니스로직을 분리함으로써, 컨트롤러를 좀 더 깔끔하게 만들게 해줍니다.
6. @Service 선언
기존에 스프링 프로젝트를 진행하실 때, 스프링 설정파일에 Bean 을 만들면 스프링 컨테이너가 객체를 생성하고, 추후 신규 생성이 아닌 호출만을 해서 서버의 부담을 줄일 수 있다고 공부하였습니다. 원래라면 , Bean 설정을 해주어야 하지만 스프링에서는 @Service 어노테이션 하나로 동일한 효과를 지원합니다. ( @Component, @Repository 역시 동일 기능 )
7. @Autowired를 통한 연결
ServiceImpl 안에 기능을 재 정의하였다면, Controller에서 호출해서 사용해야 합니다. 이를 위하여 @Autowired를 통해 연결 할 수 있습니다.
위와 같이 스프링의 기능을 사용하여 개발을 진행하였습니다.
View(JSP 페이지) -> Controller -> Service(ServiceImpl)
'Web Programming > Spring' 카테고리의 다른 글
9. Spring 로그인 만들기를 통한 기능 엿보기 (0) | 2020.04.08 |
---|---|
8. Spring 로그인 만들기를 통한 기능 엿보기 (0) | 2020.04.07 |
6. Spring 로그인 만들기를 통한 기능 엿보기 (0) | 2020.04.05 |
5. Spring 프로젝트의 구조 분석 (0) | 2020.04.04 |
4. Spring 웹 프로그래밍 설계 모델 (0) | 2020.04.03 |