📌 JSP Forward 액션 태그 정리
1. 기본 개념
- <jsp:forward> 액션 태그 :
현재 JSP에서 다른 JSP로 요청(request)을 그대로 전달하는 기능. - 거쳐가는 페이지(중간 처리 페이지) 역할을 한다.→ DB 입력, 로그 기록, 세션 처리 등 중간 작업을 수행한 뒤 최종 페이지로 이동할 때
2. 예제 흐름
form.jsp → via.jsp → result.jsp
form.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<form method="post" action="via.jsp">
아이디 : <input type="text" name="id"><br><br>
패스워드 : <input type="text" name="passwd"><br><br>
<input type="submit" value="로그인">
</form>
via.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
via.jsp<br>
<%
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String pw = request.getParameter("passwd");
System.out.println("via id :" + id);
System.out.println("via pw :" + pw);
%>
via.jsp 아이디 : <%= id %><br>
via.jsp 비밀번호 : <%= pw %><br>
<jsp:forward page="result.jsp">
<jsp:param name="addr" value="서울"/>
</jsp:forward>
✔ via.jsp는 화면에 출력되지 않고, 요청이 result.jsp로 그대로 전달됨
✔ <jsp:param>으로 추가 파라미터(addr=서울) 전달 가능
result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String pw = request.getParameter("passwd");
String addr = request.getParameter("addr");
%>
아이디 : <%= id %><br>
비밀번호 : <%= pw %><br>
주소 : <%= addr %><br>
예제2
form.jsp → via.jsp → blue.jsp(or red/green/yellow.jsp)
1. form.jsp (입력 화면)
<form action="Ex02_via.jsp" method="post">
이름 : <input type="text" name="name"><br>
색 선택 : <br>
<input type="radio" name="color" value="yellow">노란색
<input type="radio" name="color" value="green">초록색
<input type="radio" name="color" value="blue">파란색
<input type="radio" name="color" value="red">빨간색
<input type="submit" value="확인">
</form>
✔ 사용자가 이름 입력 + 색상 선택 → Ex02_via.jsp로 POST 요청
2. Ex02_via.jsp (거쳐가는 페이지, Forward 담당)
<%
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
String color = request.getParameter("color");
// 선택된 색상에 맞는 이미지 경로
String imgSrc = "../images/" + color + ".jpg";
// forward 대상 JSP 파일명 (예: blue.jsp)
String selectedColor = color + ".jsp";
%>
이름 : <%= name %><br>
선택 색 : <%= color %><br>
<!-- 방법 1) 직접 forward -->
<jsp:forward page='<%= color + ".jsp"%>'></jsp:forward>
<!-- 방법 2) 변수를 forward -->
<jsp:forward page="<%= selectedColor %>"></jsp:forward>
✔ 핵심 포인트:
- forward는 request 객체를 공유 → name, color 값이 다음 JSP에도 그대로 전달됨
- 따라서 blue.jsp, red.jsp, … 등에서 다시 request.getParameter로 꺼낼 수 있음
3. blue.jsp (최종 페이지)
<%
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
String color = request.getParameter("color");
String imgSrc = "../images/" + color + ".jpg";
%>
<%= name %><br>
<%= color %><br>
<img src="<%= imgSrc %>">
📌 최종 실행 순서
- form.jsp → 사용자 입력 (이름, 색상)
- Ex02_via.jsp
- 값 확인 (System.out.println으로도 확인)
- forward 실행 (color.jsp로 이동)
- blue.jsp/red.jsp/green.jsp/yellow.jsp
- 같은 request 공유
- 이름 + 색상 + 이미지 출력
📌 Forward 동작 특징 다시 정리
- <jsp:forward> 실행 시 via.jsp 화면은 출력되지 않음 (거쳐가는 페이지 역할만 함).
- request 공유됨 → name, color 값이 최종 페이지까지 유지됨.
- 주소창은 via.jsp로 보이지만, 출력은 최종 페이지(blue.jsp 등)의 결과가 나타남.
Forward vs Redirect 비교
| 구분 | jsp:forward | response.sendRedirect |
| 실행 시점 | 서버 내부에서 실행 (서버 이동) | 클라이언트에게 새 요청 지시 (브라우저 이동) |
| 주소창 표시 | 거쳐가는 페이지 주소 | 최종 목적지 주소 |
| request 공유 | ✅ 공유됨 | ❌ 공유 안 됨 (새 request 생성) |
| 파라미터 전달 | <jsp:param> 사용 가능 | 쿼리스트링으로 전달 (?id=aaa) |
✅ 핵심 요약
- jsp:forward
- 실행 시점에 다른 JSP로 요청을 전달
- 주소창은 “거쳐가는 페이지”로 표시
- request 객체 공유 O
- sendRedirect
- 클라이언트에 새 요청을 보내는 방식
- 주소창은 최종 페이지로 변경
- request 객체 공유 X
- https://ryuding.tistory.com/287 sendRedirect 글정리 링크
“forward 액션 태그의 실행 흐름은 항상 form → via(거쳐가는 페이지) → 최종 페이지 구조다.
단, 최종 페이지는 상황에 따라 고정일 수도 있고, 동적으로 바뀔 수도 있다.”
'기초 및 언어 > ▶ Java&JSP' 카테고리의 다른 글
| 10. JSP 유효성 검정 / usebean 숙제 (0) | 2025.09.10 |
|---|---|
| 09. JSP_ActionTag : useBean (0) | 2025.09.10 |
| 07. JSP_ActionTag : includeActionTag & include지시어와 차이점 (0) | 2025.09.10 |
| 04. JSP_여러 값을 request보내기 (1) | 2025.09.08 |
| 03. JSP_requset & post ,get (0) | 2025.09.08 |