[LG U+ 유레카 3기] JSP Forward/Redirect MVC 흐름
2025. 10. 30. 10:28ㆍJava/JSP
❶ MVC 구조 속 JSP의 역할
이번 실습은 MVC 패턴에서 Controller → View 전달 과정을 이해하고, JSP 문법과 함께 forward / redirect 개념을 실습한 코드이다.
Controller(서블릿)는 Model을 request 객체에 담아 JSP로 전달하고, JSP(View)는 그 데이터를 화면에 출력한다.
---
❷ MVCServlet (Controller) 코드 분석
@WebServlet("/mvc")
public class MVCServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String job = request.getParameter("job");
switch (job) {
case "list":
List<String> strList = List.of("Java", "Servlet", "JSP");
request.setAttribute("strList", strList);
request.getRequestDispatcher("/mvc.jsp").forward(request, response);
break;
case "info":
response.sendRedirect("/WebBasic/info.html");
break;
}
}
}
forward는 서버 내부에서 JSP로 이동하여 request 객체를 공유하고,
redirect는 클라이언트에게 새로운 요청을 보내 URL이 변경된다.
---
❸ JSP (View) 코드 분석
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.List"%>
<%
// Controller가 전달한 모델을 request에서 꺼냄
List<String> strList = (List<String>) request.getAttribute("strList");
%>
<html>
<body>
<h1>String List</h1>
<%
for(String str : strList) {
%>
<h4><%= str %></h4>
<%
}
%>
</body>
</html>
이 JSP는 request에 담긴 List<String> 데이터를 꺼내어 화면에 반복 출력한다.
forward된 상태이므로 request.getAttribute("strList")로 접근이 가능하다.
---
❹ JSP 기본 문법 (Expression / Scriptlet / Declaration)
| 문법 | 형태 | 설명 | 예시 |
|---|---|---|---|
| Expression | <%= %> |
자바 변수를 출력할 때 사용 | <%= str %> |
| Scriptlet | <% %> |
자바 코드를 작성하는 공간 (변수 선언, 제어문 등) | <% for(String s : list) { %> |
| Declaration | <%! %> |
메서드나 전역변수 선언 시 사용 | <%! int count = 0; %> |
---
❺ forward / redirect 비교
| 구분 | forward | redirect |
|---|---|---|
| 이동 주체 | 서버 내부 이동 | 클라이언트 재요청 |
| 요청 횟수 | 1회 | 2회 |
| URL 변경 | 변경 없음 | URL 변경됨 |
| 데이터 유지 | request 객체 유지 |
request 새로 생성됨 |
| 사용 예시 | JSP로 데이터 전달 (MVC View) | 로그인 후 메인 이동, 등록 후 목록 리다이렉트 |
---
❼ 실행 흐름 시각화

브라우저 → MVCServlet(job=list)
↓
request.setAttribute("strList", list)
request.getRequestDispatcher("/mvc.jsp").forward()
↓
JSP에서 request.getAttribute("strList") 사용

브라우저 → MVCServlet(job=info)
↓
response.sendRedirect("/WebBasic/info.html")
↓
브라우저가 새 요청으로 이동
---
❽ 핵심 요약
- forward는 서버 내부에서 JSP로 요청을 넘길 때 사용한다.
- redirect는 클라이언트에게 다시 요청을 시켜 URL이 바뀐다.
- JSP는
<% %>,<%= %>문법을 통해 자바 코드를 포함할 수 있으며, Model 데이터를 표현하는 View 역할을 담당한다.
---
'Java > JSP' 카테고리의 다른 글
| [LG U+ 유레카 3기] JPA 연관관계 & Fetch 전략 (0) | 2025.11.19 |
|---|---|
| [LG U+ 유레카 3기] JSP + Servlet + Ajax로 도서 관리 화면 만들기 (0) | 2025.10.31 |
| [LG U+ 유레카 3기] JSP + Servlet + DAO 기반 도서관리 CRUD 실습 (0) | 2025.10.30 |
| [LG U+ 유레카 3기]Web Server vs WAS 관련 정리 (0) | 2025.10.29 |
| [LG U+ 유레카 3기]Servlet, JSP, MVC 패턴 (+Postman)정리 (0) | 2025.10.29 |