๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

JSP&Servlet

Redirect์™€ Forward

Redirect์™€ Forward

Redirect

  • ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ํŠน์ • URL๋กœ ์ด๋™์„ ์š”์ฒญํ•˜๋Š” ๊ฒƒ
  • ์ฒ˜์Œ์— ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ธ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต ์ฝ”๋“œ 302์™€ ํ—ค๋” ๋‚ด Location ๊ฐ’์— URL์„ ๋ณด๋ƒ„
  • HttpServletResponse์˜ sendRedirect() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธํ•จ
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์˜ ์š”์ฒญ์— ์˜ํ•ด ์ƒˆ๋กœ์šด URL์„ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ, Request Scope์˜ ์ƒํƒœ ์ •๋ณด๊ฐ€ ์œ ์ง€๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ์ƒˆ๋กœ์šด URL์„ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ, ์ฃผ์†Œ์ฐฝ์˜ URL์ด ๋ณ€ํ•œ๋‹ค.
  • ๊ฐ™์€ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์•„๋‹ˆ์–ด๋„ Redirect๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.

Redirct์˜ ๊ตฌํ˜„

  response.sendRedirect("Redirect ํ•  ํŽ˜์ด์ง€");

Servlet์—์„ , service(), doGet(), doPost() ๋“ฑ์— ์ธ์ž๋กœ ๋“ค์–ด๊ฐ€ ์žˆ๋Š” HttpServletResponse์˜ sendRedirct() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ด๋™ํ•œ๋‹ค.

JSP์—์„  ๋‚ด์žฅ ๊ฐ์ฒด๋กœ HttpServletResponse๊ฐ€ ๋“ค์–ด์žˆ์œผ๋ฏ€๋กœ, response.sendRedirct()๋กœ ์ด๋™ํ•œ๋‹ค.

Forwarding

  • ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋‹ค๊ฐ€, ๋‹ค๋ฅธ ์„œ๋ธ”๋ฆฟ์ด๋‚˜ JSP์—๊ฒŒ ์ถ”๊ฐ€์ ์ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ์š”์ฒญ์„ ์œ„์ž„ํ•˜๋Š” ๊ฒƒ
  • Forwarding์˜ ์ฃผ์†Œ๋Š” '/'๋กœ ์‹œ์ž‘ํ•œ๋‹ค.
  • Forwarding์€ ๊ฐ™์€ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋งŒ ์ด๋™ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์ด ์ „๋‹ฌ๋˜์ง€ ์•Š์€ ์ƒํƒœ์ด๋ฏ€๋กœ, Forwarding์„ ํ•ด๋„ ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ์œ ์ง€๋œ๋‹ค.
  • ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ์œ ์ง€๋˜๊ธฐ ๋•Œ๋ฌธ์— Request Scope์˜ ์ƒํƒœ ์ •๋ณด๊ฐ€ ์œ ์ง€๋œ๋‹ค.
  • Servlet์œผ๋กœ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ณ , Servlet์˜ ๋ฐ์ดํ„ฐ๋ฅผ JSP๋กœ Forwarding ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ Servlet๊ณผ JSP๋ฅผ ์—ฐ๋™ํ•œ๋‹ค.
  • Forwarding ๋ฐฉ์‹์€ ์ฃผ์†Œ์ฐฝ์˜ URL์ด ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ ์ž…์žฅ์—์„  ์š”์ฒญ์— ๋Œ€ํ•œ ์ •๋ณด๋งŒ ๋ฐ›์œผ๋ฏ€๋กœ, ์–ด๋–ค ์„œ๋ธ”๋ฆฟ๋“ค์ด Forwarding์œผ๋กœ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ–ˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค.

Forwarding์˜ ๊ตฌํ˜„

  String data = "๋ณด๋‚ด๊ณ  ์‹ถ์€ ์ž๋ฃŒ";
    request.setAttribute("dataName", data);
    RequestDispatcher requestDispatcher = request.getRequestDispatcher("/path");
    requestDispatcher.forward(request, response);

๋ณด๋‚ด๊ณ  ์‹ถ์€ ์ž๋ฃŒ๋ฅผ String data๋ผ๊ณ  ํ•  ๋•Œ, ์šฐ์„  request์˜ setAttribute๋กœ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ด๋ฆ„๊ณผ ๋ฐ์ดํ„ฐ ๊ฐ’์„ HttpServletRequest์— ์ €์žฅํ•ด ์ค€๋‹ค. ์ด๋•Œ, data๋Š” Stringํ˜•์ด ์•„๋‹Œ Objectํ˜•์œผ๋กœ ์ €์žฅ๋œ๋‹ค.
RequestDispatcher๋ฅผ getRequestDispatcher๋กœ ํ˜ธ์ถœํ•˜๋Š”๋ฐ, ์ด๋•Œ Forwarding์„ ์›ํ•˜๋Š” ์ฃผ์†Œ๋กœ ์จ์ฃผ์–ด์•ผ ํ•˜๊ณ , '/'๋กœ ์‹œ์ž‘ํ•˜์—ฌ์•„ํ•œ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ requestDispatcher์˜ forward() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด request์™€ response ๊ฐ์ฒด๊ฐ€ /path๋กœ ์ „๋‹ฌ๋œ๋‹ค.

  String data = (String)request.getAttribute("dataName");

ํ˜ธ์ถœ ๋ฐ›์€ Servlet์—์„  request, response ๊ฐ์ฒด๊ฐ€ Forwarding์„ ํ†ตํ•ด ์œ ์ง€๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, request์˜ getAttribute()๋กœ ๊ฐ’์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

์ด๋•Œ์˜ ์ž๋ฃŒ๋Š” Objectํ˜•์ด๋ฏ€๋กœ, ์›ํ•˜๋Š” ์ž๋ฃŒํ˜•์œผ๋กœ ํ˜• ๋ณ€ํ™˜์„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

'JSP&Servlet' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Servlet ์ƒํƒœ ์ •๋ณด Scope  (0) 2022.03.08
JSP ๋ฌธ๋ฒ•๊ณผ ์ƒ๋ช…์ฃผ๊ธฐ  (0) 2022.03.07
Servlet์˜ Request, Response ๊ฐ์ฒด  (0) 2022.03.07
Servlet ์ƒ๋ช…์ฃผ๊ธฐ  (0) 2022.03.06