복붙노트

[SPRING] Spring MVC에서 리다이렉션을 사용하는 이유는 무엇입니까?

SPRING

Spring MVC에서 리다이렉션을 사용하는 이유는 무엇입니까?

URL이 자신의 웹 응용 프로그램에있는 경우 사용자가 리디렉션해야하는 이유는 무엇입니까? 왜 Spring 사람들은 컨트롤러의 핸들러 메쏘드에서 같은 컨트롤러의 다른 핸들러 메쏘드로 리디렉션을합니까? 리디렉션은 브라우저 기반이라고 들었습니다. 다른 URL로 요청을 보내려면 브라우저에 요청을 보내는 것과 같습니다. 앞으로는 (spring mvc) 응용 프로그램 내에서 사용되므로 브라우저 윈도우의 URL이 동일하게 유지되므로 앞쪽에는 의미가 있습니다.

그러나 리디렉션을 사용하는 것이 영웅적입니까 : / url을 사용하면 단순히보기 이름을 보내거나 필요하면 앞으로 사용할 수 있습니다.

해결법

  1. ==============================

    1.컨트롤러의 리디렉션 접두어를 사용하면 302 상태 코드와 리디렉션 URL을 가리키는 위치 헤더가있는 HTTP 응답이 생성됩니다. 그러면 브라우저가 해당 URL로 리디렉션됩니다 (첫 번째 요청에서 노출 된 모델은 손실되고 브라우저 URL은 두 번째 요청이됩니다).

    컨트롤러의 리디렉션 접두어를 사용하면 302 상태 코드와 리디렉션 URL을 가리키는 위치 헤더가있는 HTTP 응답이 생성됩니다. 그러면 브라우저가 해당 URL로 리디렉션됩니다 (첫 번째 요청에서 노출 된 모델은 손실되고 브라우저 URL은 두 번째 요청이됩니다).

    forward 접두어를 사용하면 forward가 서블릿에 의해 내부적으로 수행되므로 두 번째 요청 (URL은 동일하게 유지됨)이 필요하지 않습니다. 정방향 접두어는 브라우저에서 안전하게 반복 할 수있는 요청에만 사용해야합니다. 데이터베이스 상태를 변경하는 양식을 보내는 경우에는 해당되지 않습니다 (브라우저를 다시로드하면 중복 제출 될 수 있음). 이 경우 리디렉션을 사용하고 POST-redirect-GET 패턴을 적용해야합니다. http://en.wikipedia.org/wiki/Post/Redirect/Get을 참조하십시오.

  2. ==============================

    2.특정 컨텍스트가 없으면 핸들러를 실행 한 후 리디렉션을 사용하는 이유를 모두 설명하기가 어렵습니다.

    특정 컨텍스트가 없으면 핸들러를 실행 한 후 리디렉션을 사용하는 이유를 모두 설명하기가 어렵습니다.

    핸들러 처리 후 (예 : POST 이후) 리디렉션이 원하는 디자인 패턴 (POST / Redirect / GET)으로 간주되는 경우가 있습니다.

    한 가지 공통적 인 문제는 POST 메서드를 사용하여 양식을 중복 제출하는 것입니다. 양식을 처리 한 후 리디렉션을 사용하면 응용 프로그램이 대부분 새로 고쳐진 URL에 있으므로 양식을 새로 고치고 다시 제출하는 것을 방지 할 수 있습니다.

  3. ==============================

    3.리다이렉트 이후의 패턴을 우리의 폼 제출에 적용하기 때문에 페이지로 전달하는 대신 리디렉션을 수행합니다.

    리다이렉트 이후의 패턴을 우리의 폼 제출에 적용하기 때문에 페이지로 전달하는 대신 리디렉션을 수행합니다.

    이 패턴을 사용하면 성공적인 양식 제출은 사용자가 페이지를 다시로드하거나 책갈피에 추가하면 재전송을 피하기 위해 HTTP 경로 재 지정을 발행합니다.

  4. from https://stackoverflow.com/questions/18671463/why-do-we-use-redirect-in-spring-mvc by cc-by-sa and MIT license