Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

노승현

Spring MVC ver.2 로 변환하기 본문

Spring

Spring MVC ver.2 로 변환하기

nsh95 2024. 3. 5. 14:04

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