웹 개발에서 비동기 통신(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 |