노승현
Spring MVC ver.2 로 변환하기 본문
Spring 에서의 MVC 패턴 구조
기업에서 Spring Boot 만 사용하는 곳은 없기때문에
처음보는 프레임 워크를 만나게 되는 순간이 생긴다.
Spring 에서의 MVC 패턴 구조에 대한 매커니즘을 이해 할 수 있다면,
처음보는 프레임 워크의 구조도 이해할 수 있기때문에 배우는 것이다.
한 번쯤은 처음 보는 프레임워크를 만나게 된다
1. 클래스 타입(자료형) 중심 VS 2. 기능 중심
패키지 관리는 현재 기능 중심으로 나눠놓았지만
중간 프로젝트 때처럼 DTO, DAO, Controller, Action,.. 처럼
클래스 타입(자료형) 중심으로 나눠도 괜찮음
대체적으론 ‘클래스 타입(자료형) 중심’으로 작업하는 편이다.
✅ Point
면접 시 관리 방법에 대한 이유를 묻는다면
팀 회의를 통해 과반수가 동의한 방법으로 진행했다고 말하면 된다.
DispatcherServlet(FrontController)
버전01
개발자가 직접만든 DispatcherServlet 사용
com.spring.controller.common.DispatcherServlet
1. 멤버번수 초기화
2. 생성자
3. Setter
4. 어노테이션
5. 의존주입
6. init() 메서드
버전02
Spring 프레임워크에서 제공하는 Dispatcher 사용
org.springframework.web.servlet.DispatcherServlet
DI(의존주입,init())을 위한 .xml(설정파일)이 필요함
dispatcher-servlet.xml
presentation layer(표현 계층)가 생겼다.
Spring 프레임워크에서 제공하는 인코딩 필터 사용
Spring 프레임워크에서 제공하는 인코딩 필터 사용
* not POJO(Servlet,Filter,Listener) 객체등록은 서블릿 컨테이너가 담당
서블릿 컨테이너의 설정파일인 web.xml에 등록해야함
* 중프때 했던 비동기 Action(Servlet) -> 최프 때 일반 Controller로 변경
Controller(Action)
버전01
개발자가 직접만든 Controller 인터페이스 사용
output 이 ActionForward 이었는데,
VR(ViewResolver)가 등장하면서, String 으로 변경
* output : 어디로(경로), 어떻게(방식:redirect, forward) 필수
버전02
Spring 프레임워크에서 제공하는 Controller 를 impl(구현, 상속)하여 사용
org.springframework.web.servlet.mvc.Controller
기존에는 request(not POJO)를 통해 데이터를 전달 -> 무거움
🔽🔽
MoodelAndView(may,POJO) 를 통해 데이터를 전달 -> 가벼움
버전03
<bean> -> @
@Component + implements Controller -> @Controller
메서드 시그니쳐의 강제성이 없음 -> 비슷한 로직을 하나의 Controller 에서 작성할 수 있다
서로 관련된 기능으로 묶을 수 있기 때문에 응집도를 높임
HandlerMapping
버전01
개발자가 직접만든 HM 사용
DI 로 생성자 주입을 사용
버전02
Spring 프레임워크에서 제공하는 HM 를 사용
org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
DI 로 setter로 주입을 사용
💯 주입하는 객체는 Map
버전03
@RequestMapping 으로 요청 맵핑
output 으로 String 으로 요청
요청 메서드가 GET,POST, … 등을 작성하는 것을 권장
member.do GET --> SELECTONE
SELECT 검색기능
member.do POST --> UPDATE
CUD 정보변경
ViewResolver
버전01
개발자가 직접만든 VR 사용
DI 로 setter 주입을 사용
버전02
Spring 프레임워크에서 제공하는 VR 사용
org.springframework.web.servlet.view.InteralResourceViewResolver
특정 페이지의 URL을 알면, 별도의 권한이 없어도 접근이 가능한 경우가 있다.
이 경우를 막기 위해 Controller 파트에서 별도의 접근 권한 유효성 검사를 구현
Spring 에서는, 애초에 페이지를 WEB-INF 폴더에 은닉(하이딩)해 저장
WEB-INF 폴더의 하위는 오직 VR 를 통해서만 접근 가능함을 이용
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
mav.setViewName(“test);
VR /WEB-INF/views/test.jsp -> url 로는 접근 불가능
'Spring' 카테고리의 다른 글
Spring 이관 및 boot 실행 (0) | 2024.03.08 |
---|---|
DBCP (0) | 2024.03.05 |
ASPECT 란? (1) | 2024.03.04 |
Spring 파일 생성 및 흐름 이해 (2) | 2024.02.28 |
DI 의존성 주입이란? (0) | 2024.02.28 |