수업 복습

비동기 통신 & FC 패턴 복습

_김영인 2025. 11. 27. 00:12

웹 개발에서 비동기 통신(AJAX)과 MVC에서의 FrontController 패턴은
유지보수성과 협업 효율을 크게 높여주는 핵심 기술입니다.


* 비동기 통신(AJAX)과 JSON

✔ 비동기 통신이란?

  • 화면 전체를 새로 고치는 방식(동기)이 아니라,
  • 필요한 데이터만 요청하여 즉시 화면에 반영하는 방식

→ 사용자 경험(UX)이 좋아진다 


✔JSON을 사용하는 이유

리스트, 배열, 객체, Map 등
값이 여러 개인 데이터를 클라이언트로 넘길 때 사용

 
dataType: "json"

프론트가 JSON을 기대하면
서버도 JSON으로 보내줘야 함!


✔ 서버에서 JSON 데이터 보내기 (Gson 사용)

 
String json = new Gson().toJson(datas); response.getWriter().write(json);

필수 추가

 
<dependency> Gson 라이브러리 import </dependency>

프론트 → 백엔드 → 프론트 실행 흐름

단계설명
1. Front AJAX 요청, dataType:"json" 설정
2. Back Java 객체 → JSON 변환 (Gson)
3. Front JSON 데이터 파싱 → 화면 출력

✔ 백엔드에서 직접 HTML 응답할 때 사용

 
response.setContentType("text/html; charset=UTF-8");

※ JSP 없이 서버에서 즉시 화면 출력해야 할 때


* FrontController 패턴

개념

모든 요청을 하나의 컨트롤러(서블릿)가 받아서
어떤 로직을 탈지 분기시키는 구조


쉬운 비유

역할이름설명
손님 사용자 주문을 요청
주문 받는 점원 FrontController 어떤 점원이 처리할지 연결
각 점원 Action 클래스 해당 기능 담당
음식 포장 ActionForward 어디로/어떻게 이동할지 데이터 포함

Java MVC 구조에서 역할 분리

구분종류설명
POJO DTO, DAO, Action, ActionForward 가벼움
NOT POJO Servlet(FrontController) 무거움, 핵심 라우터

➡ 분업 좋고, 유지보수 최고!


* FrontController 동작 흐름

1. 모든 요청은 *.do 형태로 들어온다
예) mainPage.do, write.do, logout.do…

2. FrontController가 URI 분석

 
String uri = request.getRequestURI(); String ctx = request.getContextPath(); String command = uri.substring(ctx.length());

3. 분기 처리

 
if(command.equals("/mainPage.do")) { action = new MainPageAction(); }

4. Action 실행 & 결과 반환

 
ActionForward forward = action.execute(request, response);

5. 페이지 이동 방식 결정

이동방식설명사용 예시
Forward request 유지 목록 출력
Redirect request 초기화 로그인, 회원가입 후 이동

Object: ActionForward가 path + redirect 여부 가지고 있음

 
if(forward.isRedirect()) { response.sendRedirect(forward.getPath()); } else { RequestDispatcher rd = request.getRequestDispatcher(forward.getPath()); rd.forward(request, response); }

* Action / ActionForward 구조

Action (인터페이스)

점원 역할
execute(request, response) 강제

 
public interface Action { ActionForward execute(HttpServletRequest request, HttpServletResponse response); }

ActionForward (클래스)

어디로 / 어떻게 이동할지 알려주기 위한 객체

 
private boolean isRedirect; private String path;

이 구조의 장점

장점이유
협업 최적화 서로 파일 간섭 없이 기능별 개발
코드 가벼움 대부분 POJO
유지보수 강함 Controller는 딱 하나
확장 용이 Action만 추가하면 새로운 기능 구현

오늘 배운 핵심 요약

키워드의미
JSON 서버 ↔ 프론트 데이터 전달 표준
AJAX 비동기 화면 업데이트
Gson Java 객체 → JSON 변환
FrontController 모든 요청 진입점
Action 기능 수행
ActionForward 페이지 이동 제어

 

MVC + AJAX 기반 웹 개발의 핵심 개념들을 이해함으로써
프론트/백엔드 흐름을 살피는 단계로 진입했다

 

'수업 복습' 카테고리의 다른 글

커스텀 태그 복습  (0) 2025.12.01
팩토리 패턴 & 싱글톤 복습  (0) 2025.11.28
JS 내장객체  (0) 2025.11.18
HTML 복습 및 코드리뷰 피드백  (0) 2025.11.11
Java MVC 복습 & 코드 필사  (0) 2025.10.28