Post

[Springboot] 리다이렉트(Redirect)란?


아이티윌의 국비지원 [스프링부트 SNS 포토그램 프로젝트] 강의를 수강하며 정리한 내용입니다.


오늘의 실습

  • 리다이렉션 해보기


🔎그 전에 알아야할 것


리다이렉트(Redirect)란?

리다이렉트(리다이렉션)는 클라이언트가 요청한 웹 페이지의 위치가 변경되었음을 나타내는 HTTP 응답이다.


리다이렉트(Redirect)가 필요한 이유?

  • 중복코드 방지
    비슷한 기능을 하는 코드가 여러 곳에서 반복되는 경우, 해당 코드를 함수나 클래스로 추출하여 재사용할 수 있다. 예를 들어, 사용자의 인증 상태를 확인하는 코드가 여러 페이지에서 반복될 수 있습니다. 이 경우, 인증 상태를 확인하는 코드를 중복하지 않고 공통으로 사용할 수 있는 기능으로 분리하고, 해당 기능이 필요한 곳에서 호출할 수 있다.


HTTP 상태코드란?

HTTP 상태 코드란 클라이언트가 서버에게 요청을 보내고 서버가 그 요청에 대한 처리 결과를 클라이언트에게 알려주는 데 사용되는 세 자리 숫자이다. 이 코드는 요청이 성공적으로 처리되었는지, 실패했는지, 그 이유가 무엇인지 등을 나타낸다. 오늘 기억해야할 상태코드는 아래 두가지다.

  • 200 : OK (요청한 것을 잘 응답했다.)
  • 302 : Found (요청한 리소스의 URI가 일시적으로 변경됨 = 리다이렉션)


실습


[HttpRedirectionController.java]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Controller
public class HttpRedirectionController {

    @GetMapping("/home")
    public String home() {
        // 1만줄 가정
        return "home";
    }

    @GetMapping("/away")
    public String away() {
        // 다른코드
        return "redirect:/home"; // 리다이렉션 된다. 
    }
}

컨트롤러에서 return문 앞에 redirect:를 붙여주면 리다이렉션이 이루어진다.



[home.jsp]

1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1> This is Home</h1>
</body>
</html>


[localhost:8080/home으로 요청] home

<크롬 브라우저에서 F12 -> Network -> F5를 눌러 HTTP 상태코드 200 확인>




[localhost:8080/away로 요청]

awy

<away 요청 시 리다이렉션 되어(상태코드 302) home으로 감>


This post is licensed under CC BY 4.0 by the author.