✅ 각 페이지별 컨트롤러가 갖고있던 SessionFactory를 어디로 보내야할까?
: RequestMapping을 사용하면 상위 경로인 /Menu로 맵핑할 수있고, 그 아래에 각 화면에서 쓰는 Session들을 붙여서 jsp로 값을 전달해 줄 수 있다.
: 이때 ModelAndView를 프론트컨트롤러가 만든 Model로 교체하면 프론트 컨트롤러가 필요한 객체를 알아서 생성해준다.
👉 그런데! 이렇게 각 페이지마다 ServletContext와 SqlSessionFactory를 가지고 다녀야할까? ▶ 애초에 컨트롤러에서 서비스함수를 사용하는게 아니라 직접 repository함수를 사용하는건 MVC모델에도 맞지 않음.
#️⃣ 필요한 것들은 전역에서 저장해두고 쓸수있도록 하기 (Spring IoC 활용)
: 서블릿끼리 데이터를 공유하는 저장소가 있다고 해도, repository에 관한 세션객체를 서블릿들이 가지고 있게된다면 또다시 setter나 생성자로 연결해줘야하는 문제가 생긴다. 무엇보다도 서블릿에 계속해서 종속적이게 된다. ▶ 더 상위의 전역저장소에 저장해야한다 ▶ 스프링 IoC에게 객체 생성과 저장을 맡긴다
✅ 스프링 MVC의 최종형태
✅ 처음부터 Spring MVC 구축해보기
: 위의 완전체를 보고 흐름으로 접근해봤다!
: 구조 자체는 금방 짰는데 자잘한 경로와 오류를 잡느라 좀 헤맸음.
1. maven 프로젝트 만들기 ▶ pom.xml 설정 (필요한것들 다 꽂아주기)
2. 톰캣 연결하기 ▶ (webapp 내에 WEB-INF 폴더 만들고) web.xml 설정하기
3. 스프링 설정하기 ▶ web.xml에서 설정해놓은 이름에 따라서 -servlet.xml 파일 만들기
4. Repository 인터페이스 & 구현체, Service 인터페이스 & 구현체, Controller 구현체 java 파일 생성하기
-- 여기서 Mybatis를 사용하기위한 MyBatis.xml을 resources 내부에 넣어줌
5. 컨트롤러 구현하기
- @Controller
- @RequetMapping("경로")
- @Autowired (Service객체)
- @RequestMapping(필요한 하위페이지)
- Return값으로 list.jsp; 지정. --- 여기서 view폴더에 jsp 파일을 넣어준다
6. ServiceImp구현하기
- @Service
- @Autowired (리파지토리 객체)
- 서비스함수 getList()구현 -- repository.findAll(); 사용
7. MbRepository (==MyBatis Repository) 구현하기
- @Repository
- @Autowired (스프링이 만들어둔 세션객체)
- @리파지토리의 findAll() 구현하기-- repository.findAll(); Dao사용. 리파지토리의 구현값 대신에 mybatis-config.xml과 MenuRepositoryMapper.xml에 설정해둔 값으로 조회한 객체를 만들어낸다
#️⃣ 놓쳤던 부분
1. mybatis-config.xml과 MenuRepositoryMapper.xml에서 프로젝트 패키지명 바꿔줘야하는데 놓침!
2. 서버에 기존 수업용 프로젝트와 새로만든 프로젝트 두개 다 가동중이었는데, 맵핑 이름이 같다보니까 자꾸 수업프로젝트가 우선으로 실행돼서 결국 새 프로젝트만 놔두고 서버에서 삭제시켰다.
3. detail.jsp 이름을 다른걸로 바꿔봤는데 return으로 jsp를 잘 넣어놔도 안됐다... 진행하는동안 404 에러가 제일 많이 났었다!!! 맵핑이 단순한거같으면서도 요상하게 어려움.
'😵 ~23.11.10' 카테고리의 다른 글
0919 | 타임리프 입문 - html 추가 / 레이아웃 라이브러리 사용하기 (0) | 2023.09.19 |
---|---|
0918 | 스프링부트 / 부트에서 컨트롤러 설정하기 (0) | 2023.09.18 |
0914 | 스프링 config.xml과 annotation 설정법 / 경로별로 클래스 나누고 annotation 설정하기 (0) | 2023.09.15 |
0913 | DI, 스프링기능(IoC개념), XML과 Annotation을 활용한 지시서찾기 (0) | 2023.09.13 |
0912 | 컨트롤분리와 POJO / 스프링MVC / POJO 컨트롤러 만들기 (0) | 2023.09.13 |