본문 바로가기
기초 및 언어/▶ Java&JSP

08. JSP_ActionTag : fowardAction

by 류딩이 2025. 9. 10.

📌 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 %>">

📌 최종 실행 순서

  1. form.jsp → 사용자 입력 (이름, 색상)
  2. Ex02_via.jsp
    • 값 확인 (System.out.println으로도 확인)
    • forward 실행 (color.jsp로 이동)
  3. 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(거쳐가는 페이지) → 최종 페이지 구조다.
단, 최종 페이지는 상황에 따라 고정일 수도 있고, 동적으로 바뀔 수도 있다.”