ToBe끝판왕

[ 개념 정리 ] 특정 View 반환 ( return 과 redirect ) 본문

■ 공부 기록/개념 정리

[ 개념 정리 ] 특정 View 반환 ( return 과 redirect )

업그레이드중 2024. 12. 11. 23:39
반응형

 

 

 


 

 

Return 과 Redirect

 

 

1) Return 이란 ?

 

•  메서드의 반환타입이 String

-   해당 메서드가 호출되면, 특정 View ( View 템플릿 ) 의 이름을 반환

-   클라이언트의 요청을 처리하고 처리결과에 따라 어떤 화면을 보여줄지 결정

 

 

•  예시

@Controller
@RequestMapping("/main")
public class MyController {

    @GetMapping("/home")    
	// home.jsp 파일을 찾아 렌더링    
    public String home() {
        return "home"; 
    }
}

 

-   Controller 클래스의 @RequestMapping("/main") 과 @GetMapping("/home")은 http://localhost8080:/main/home 과

     같은 URL 요청을 처리하는 메서드임을 의미

-  home() 메서드는 "home"이라는 문자열을 반환하고 이는 home.jsp를 의미한다.

-  따라서 클라이언츠가 /main/home URL을 요청하면 home.jsp 파일이 렌더링되어 브라우저에 표시된다.

 

※  String 외에 반환 방식  :  ModelAndView 반환 , @ResponseBody 어노테이션 사용하여 반환 등

 

 

 

2)  Return "redirect:" 이란 ?

 

•  메서드의 반환타입이 String

-   redirect: 접두사는 다른 URL로 리다이렉트 하라는 의미 ( HTTP 리다이렉트 응답 )

-  주로 폼 처리 이후, RPG(Post/Redirect/Get) 패턴에서 사용

 

•  사용 이유

-   클라이언트의 요청이 완료된 이후, 다른 페이지로 이동시켜야 하는 경우 사용됩니다.

ex) 회원가입 완료 이후, 로그인 페이지 이동

 

•  예시

@Controller
public class MyController {

    @PostMapping("/join")
    public String join(User user) {
        // 회원 가입 로직
        // ...

        return "redirect:/login"; // 로그인 페이지로 리다이렉트
    }
}

 

-   redirect: 접두사 뒤에 오는 경로는 상대경로 이어야 한다.

-  쿼리파라미터를 함께 전달 가능하다.

ex) redirect:localhost:8080/join?param1=value&param2=value

-  Flash Attribute  :  RedirectAttributes를 이용하여 일회성으로 사용되는 속성을 다른 요청으로 전달 가능

 

 

3)  Return 과 "redirect:" 비교

 

특징 Rreturn Redirect:
목적 View 렌더링 클라이언트가 다른 URL로 새요청 지시
URL 변경 여부 변경되지 않음 ( URL 유지 ) 변경됨
HTTP 동작 서버 내부에서 View 처리 HTTP 302 리다이렉트 응답 클라이언트에게 전달
사용 시점 데이터를 뷰로 전달해 바로 렌더링 데이터 처리 이후, 페이지 새로고침 or 새로운 경로 이동
RPG 패턴 지원 X 지원

 

반응형
Comments