๐Ÿ“Œ JSP Redirect ๋ฐฉ์‹ ์™„๋ฒฝ ๊ฐ€์ด๋“œ - ํ๋ฆ„, ํŠน์ง•, Forward์™€ ์ฐจ์ด์  ์ •๋ฆฌ

My Pale Blue Dotยท2025๋…„ 4์›” 2์ผ
0

JSP/SERVLET

๋ชฉ๋ก ๋ณด๊ธฐ
5/25
post-thumbnail

๐Ÿ“… ๋‚ ์งœ

2025๋…„ 4์›” 2์ผ


๐Ÿ“ ํ•™์Šต ๋‚ด์šฉ

โœ… 1. Redirect ๋ฐฉ์‹์ด๋ž€?

Redirect๋Š” ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ƒˆ๋กœ์šด ์š”์ฒญ ๊ฒฝ๋กœ(URL)๋ฅผ ์‘๋‹ต์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

ํด๋ผ์ด์–ธํŠธ๋Š” ํ•ด๋‹น ๊ฒฝ๋กœ๋กœ ๋‹ค์‹œ ์š”์ฒญํ•˜๊ฒŒ ๋˜๋ฉฐ, ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ์š”์ฒญ-์‘๋‹ต ์ฃผ๊ธฐ๊ฐ€ ์‹œ์ž‘๋œ๋‹ค.

์ฃผ์š” ํŠน์ง•:

  • ํด๋ผ์ด์–ธํŠธ์˜ URL์ด ๋ฐ”๋€œ
  • ์ด์ „ ์š”์ฒญ์˜ request ๊ฐ์ฒด์™€ response ๊ฐ์ฒด๋Š” ์œ ์ง€๋˜์ง€ ์•Š์Œ
  • setAttribute()๋กœ ์ €์žฅํ•œ ๊ฐ’์€ ์ „๋‹ฌ๋˜์ง€ ์•Š์Œ
  • ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ URL ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด๋กœ ์ง์ ‘ ์ „๋‹ฌํ•ด์•ผ ํ•จ
  • ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ƒˆ๋กญ๊ฒŒ ์š”์ฒญํ•˜๋ฏ€๋กœ ์ค‘๋ณต ์ฒ˜๋ฆฌ ๋ฐฉ์ง€, ๋ช…์‹œ์  ํ๋ฆ„ ์ œ์–ด ๋“ฑ์— ์œ ์šฉ

๐Ÿ’ก Redirect๋Š” ์ด๋ ‡๊ฒŒ ์ž‘๋™ํ•œ๋‹ค:

response.sendRedirect("url")๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด

์„œ๋ฒ„๋Š” HTTP 302 ์‘๋‹ต + Location ํ—ค๋”๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ๋ณด๋‚ด๊ณ ,

ํด๋ผ์ด์–ธํŠธ๋Š” ํ•ด๋‹น URL๋กœ ์ƒˆ๋กœ์šด GET ์š”์ฒญ์„ ๋‹ค์‹œ ๋ณด๋‚ธ๋‹ค.


โœ… 2. ์ „์ฒด ํ๋ฆ„ ์š”์•ฝ

01Form.html
   โ†“  (submit)
02Page.jsp
   โ†“  (redirect)
03Page.jsp
   โ†“  (redirect)
04Result.jsp

1๏ธโƒฃ 01Form.html โ€“ ์ž…๋ ฅ ํผ ํŽ˜์ด์ง€

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Form</title>
</head>
<body>
<form action="02Page.jsp">
	<input type="text" name="username" />
	<input type="text" name="password" />
	<button>์ „์†ก</button>
</form>
</body>
</html>

2๏ธโƒฃ 02Page.jsp โ€“ ์ž…๋ ฅ ๊ฐ’ ์ˆ˜์‹  + Redirect to 03Page

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.net.*" %>

<%
	String username = request.getParameter("username");
	String password = request.getParameter("password");

	System.out.println("----------02PAGE---------------");
	System.out.println("username :" + username);
	System.out.println("password :" + password);
	System.out.println("-------------------------------");

	request.setAttribute("02Page", "02PageValue");

	// ํ•œ๊ธ€ ํŒŒ๋ผ๋ฏธํ„ฐ ์ธ์ฝ”๋”ฉ ํ•„์ˆ˜!
	response.sendRedirect("./03Page.jsp?hobby=" + URLEncoder.encode("๋“ฑ์‚ฐ", "UTF-8"));
%>

โ— Redirect ์‹œ URL์— ํ•œ๊ธ€์ด ํฌํ•จ๋˜๋ฉด ๋ฐ˜๋“œ์‹œ URLEncoder.encode(๊ฐ’, "UTF-8")๋กœ ์ธ์ฝ”๋”ฉํ•ด์•ผ ๊นจ์ง€์ง€ ์•Š์Œ


3๏ธโƒฃ 03Page.jsp โ€“ ํŒŒ๋ผ๋ฏธํ„ฐ ์ˆ˜์‹  + Redirect to 04Page

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
	String username = request.getParameter("username");
	String password = request.getParameter("password");
	String Page02Value = (String) request.getAttribute("02Page"); // null
	String hobby = request.getParameter("hobby");

	System.out.println("----------03PAGE---------------");
	System.out.println("username :" + username);
	System.out.println("password :" + password);
	System.out.println("Page02Value : " + Page02Value); // null
	System.out.println("hobby : " + hobby);
	System.out.println("-------------------------------");

	response.sendRedirect("./04Result.jsp");
%>

โš ๏ธ username, password, Page02Value๋Š” ๋ชจ๋‘ null๋กœ ์ถœ๋ ฅ๋œ๋‹ค.

๊ทธ ์ด์œ ๋Š” response.sendRedirect()๋กœ ์ธํ•ด request ๊ฐ์ฒด๊ฐ€ ์ƒˆ๋กœ ์ƒ์„ฑ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ!


4๏ธโƒฃ 04Result.jsp โ€“ ์ตœ์ข… ๊ฒฐ๊ณผ ํŽ˜์ด์ง€

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>RESULT</title>
</head>
<body>
<h1>04 RESULT</h1>
</body>
</html>

๐Ÿ–ฅ๏ธ ์ฝ˜์†” ์ถœ๋ ฅ ์˜ˆ์‹œ

----------02PAGE---------------
username : testuser
password : 1234
-------------------------------

----------03PAGE---------------
username : null
password : null
Page02Value : null
hobby : ๋“ฑ์‚ฐ
-------------------------------

๐ŸŒ ์›น ์ถœ๋ ฅ ์˜ˆ์‹œ

04 RESULT

๐Ÿ“Š getParameter() vs getAttribute() ๋น„๊ต ์š”์•ฝ

ํ•ญ๋ชฉgetParameter()getAttribute()
์‚ฌ์šฉ ๋ชฉ์ form ์ž…๋ ฅ๊ฐ’ ์ˆ˜์‹ JSP ๊ฐ„ ์„œ๋ฒ„ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ
๋ฐ์ดํ„ฐ ์ถœ์ฒ˜ํด๋ผ์ด์–ธํŠธ์„œ๋ฒ„ ์ธก์—์„œ ์ €์žฅ
์œ ์ง€ ์—ฌ๋ถ€URL ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜๊ธฐ๋ฉด ์œ ์ง€Forward ์‹œ์—๋งŒ ์œ ์ง€, Redirect ์‹œ ์‚ฌ๋ผ์ง
์‚ฌ์šฉ ์˜ˆrequest.getParameter("username")request.getAttribute("02Page")

๐Ÿ” Forward vs Redirect ํ•ต์‹ฌ ๋น„๊ต

ํ•ญ๋ชฉForwardRedirect
URL ๋ณ€๊ฒฝโŒ ๊ทธ๋Œ€๋กœ ์œ ์ง€โœ… ๋ณ€๊ฒฝ๋จ
request ์œ ์ง€โœ… ์œ ์ง€๋จโŒ ์ƒˆ๋กœ ์ƒ์„ฑ๋จ
์†๋„๋น ๋ฆ„ (๋‚ด๋ถ€ ์ด๋™)๋А๋ฆผ (์™ธ๋ถ€ ์ด๋™)
์šฉ๋„๋‚ด๋ถ€ ํ๋ฆ„ ์—ฐ๊ฒฐํŽ˜์ด์ง€ ์ด๋™, ์ƒˆ ์š”์ฒญ ์ฒ˜๋ฆฌ
setAttribute ์ „๋‹ฌโœ… ๊ฐ€๋ŠฅโŒ ๋ถˆ๊ฐ€
ํŒŒ๋ผ๋ฏธํ„ฐ ์ „๋‹ฌ๋‚ด๋ถ€ ๊ณต์œ URL ์ฟผ๋ฆฌ์ŠคํŠธ๋ง ์‚ฌ์šฉ

๐Ÿงญ Forward vs Redirect ์‚ฌ์šฉ ์ƒํ™ฉ ๋น„๊ต

์ƒํ™ฉForward ์‚ฌ์šฉRedirect ์‚ฌ์šฉ
๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ ํ›„O (๋‚ด๋ถ€ ์ฒ˜๋ฆฌ ํ›„ view ์ด๋™)O (๋กœ๊ทธ์ธ ํ›„ ๋ฉ”์ธ ํŽ˜์ด์ง€ ์ด๋™)
๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ/์ˆ˜์ • ํ›„โŒ (์ค‘๋ณต ์ „์†ก ๊ฐ€๋Šฅ์„ฑ)โœ… (์™„๋ฃŒ ํ›„ ๋ชฉ๋ก ์ด๋™)
๋‹จ์ˆœ ์กฐํšŒ/์ถœ๋ ฅ ํŽ˜์ด์ง€โœ… (์„œ๋ฒ„ ๋‚ด๋ถ€ ์—ฐ๊ฒฐ)โŒ (๋ถˆํ•„์š”)
์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์‹คํŒจโœ… (์ž…๋ ฅ๊ฐ’ ์œ ์ง€ ๊ฐ€๋Šฅ)โŒ (๊ฐ’ ์‚ฌ๋ผ์ง)
๋ช…์‹œ์  URL ์ด๋™โŒโœ…
request ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ํ•„์š”โœ…โŒ

๐Ÿ’ก ์‹ค๋ฌด ํ™œ์šฉ ์˜ˆ์‹œ

  • ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ ์™„๋ฃŒ ํ›„ โ†’ ๋ชฉ๋ก ํŽ˜์ด์ง€๋กœ Redirect
  • ๋กœ๊ทธ์ธ ์„ฑ๊ณต ํ›„ โ†’ ๋ฉ”์ธ ํŽ˜์ด์ง€๋กœ Redirect
  • ํŽ˜์ด์ง€ ์ƒˆ๋กœ๊ณ ์นจ ์‹œ ์ค‘๋ณต ๋ฐฉ์ง€ โ†’ Redirect ์‚ฌ์šฉ
  • ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ๋ช…ํ™•ํ•œ ๊ฒฝ๋กœ๋กœ ์ด๋™ โ†’ Redirect

๐Ÿ”ฅ ์ •๋ฆฌ

  • response.sendRedirect()๋Š” ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ƒˆ๋กœ์šด URL์„ ์‘๋‹ตํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
  • ๊ธฐ์กด์˜ request ๊ฐ์ฒด๋Š” ์‚ฌ๋ผ์ง€๋ฉฐ, request.setAttribute()๋ฅผ ํ†ตํ•œ ๊ฐ’ ์ „๋‹ฌ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ธฐ๋ ค๋ฉด ์ฟผ๋ฆฌ์ŠคํŠธ๋ง ๋˜๋Š” ์„ธ์…˜์„ ํ™œ์šฉํ•ด์•ผ ํ•˜๋ฉฐ, ํ•œ๊ธ€ ๋ฐ์ดํ„ฐ๋Š” ๋ฐ˜๋“œ์‹œ URLEncoder๋กœ ์ธ์ฝ”๋”ฉํ•ด์•ผ ๊นจ์ง€์ง€ ์•Š๋Š”๋‹ค.
  • Forward๋Š” ๋‚ด๋ถ€ ์—ฐ๊ฒฐ, Redirect๋Š” ์ƒˆ๋กœ์šด ์š”์ฒญ ์œ ๋„๋ผ๋Š” ์ฐจ์ด๋ฅผ ๋ช…ํ™•ํžˆ ์ธ์ง€ํ•˜์ž.

๐Ÿ”— ์ฐธ๊ณ  ์ž๋ฃŒ

  • JSP ๊ณต์‹ ๋ฌธ์„œ
  • ์ธํ”„๋Ÿฐ JSP Servlet ๊ฐ•์˜
  • ์‹ค์Šต ํ”„๋กœ์ ํŠธ ํŒŒ์ผ

๐Ÿ’ฌ ๋А๋‚€ ์ 

์ด๋ฒˆ ์‹ค์Šต์„ ํ†ตํ•ด Redirect ๋ฐฉ์‹์˜ ํ๋ฆ„์„ ๋ช…ํ™•ํžˆ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ ,

request ๊ฐ์ฒด๊ฐ€ ์ƒˆ๋กœ ์ƒ์„ฑ๋œ๋‹ค๋Š” ์ , ๊ทธ๋ฆฌ๊ณ  setAttribute()๋กœ ๊ฐ’์„ ์ „๋‹ฌํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์€ ์‹ค์Šต์„ ํ†ตํ•ด ๋ช…ํ™•ํžˆ ์ฒด๊ฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” Forward์ฒ˜๋Ÿผ ๋™์ž‘ํ•  ์ค„ ์•Œ๊ณ  ๊ฐ’์„ ๋„˜๊ฒผ๋‹ค๊ฐ€ null์ด ๋– ์„œ ๋‹นํ™ฉํ–ˆ๋˜ ๊ฒƒ๋„ ๊ธฐ์–ต๋‚œ๋‹ค ๐Ÿ˜‚

์‹ค๋ฌด์—์„œ Redirect๋Š” ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ, ๊ฒŒ์‹œ๊ธ€ ๋“ฑ๋ก ํ›„ ์ด๋™, ์ค‘๋ณต ๋ฐฉ์ง€ ๋“ฑ์˜ ์ƒํ™ฉ์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์œผ๋‹ˆ ๊ผญ ์ตํ˜€๋‘ฌ์•ผ๊ฒ ๋‹ค.


๐Ÿ“Œ ์š”์•ฝ

  • Redirect๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‹ค์‹œ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ตฌ์กฐ์ด๋‹ค.
  • request๋Š” ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑ๋˜๋ฏ€๋กœ setAttribute๋Š” ์ „๋‹ฌ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ธธ ๋• ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง ๋˜๋Š” ์„ธ์…˜ ์‚ฌ์šฉ ํ•„์š”
  • Forward์™€ Redirect์˜ ๊ฐœ๋… ์ฐจ์ด, ์‚ฌ์šฉ ๋ชฉ์ , ์ ์šฉ ์‹œ์ ์„ ๋ฐ˜๋“œ์‹œ ๊ตฌ๋ถ„ํ•  ๊ฒƒ!

profile
Here, My Pale Blue.๐ŸŒ

0๊ฐœ์˜ ๋Œ“๊ธ€