베어_
TechBear
베어_
전체 방문자
오늘
어제
  • 분류 전체보기 (336)
    • Spring (33)
      • 개념 (13)
      • Security (5)
      • 실습 (1)
      • 토비 스프링 (11)
    • JPA (6)
    • 프로젝트 기록 (24)
    • DB (13)
    • JAVA (18)
    • 알고리즘 (50)
      • 유형정리 (8)
      • Baekjoon (21)
      • LeetCode (18)
    • 디자인패턴 (0)
    • 개발서적 (79)
      • Effective Java (78)
      • 객체지향의 사실과 오해 (1)
    • 독후감 (4)
    • 보안 (2)
    • 운영체제(OS) (53)
      • 공룡책 (53)
    • 컴퓨터 네트워크 (28)
      • 컴퓨터 네트워크 하향식 접근 (23)
    • 자료구조 (1)
    • DevOps (2)
    • 앱 개발 (20)
      • 안드로이드 스튜디오 (20)

블로그 메뉴

    공지사항

    인기 글

    태그

    • 토비스프링
    • jpa
    • 알고리즘
    • 백준
    • 함수형인터페이스
    • 스프링
    • 스프링시큐리티
    • leetcode
    • BFS
    • 스레드
    • C++
    • java
    • Spring
    • 데이터베이스
    • 자바8
    • 코드업
    • 자바
    • 운영체제
    • 이펙티브자바
    • dfs

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    베어_

    TechBear

    [Spring] 리다이렉트 동작 원리
    Spring/개념

    [Spring] 리다이렉트 동작 원리

    2022. 4. 29. 11:35

    폼 형식의 문서를 작성 후에 서버로 보낸다고 가정해보자 (HTTP Form Post 방식). 폼 형식의 데이터를 서버에서 받으면 곧바로 다른 페이지로 리다이렉트 한다. 이 때 새로운 HTTP GET 요청을 시작하는 것이기 때문에 수행된 모델 데이터는 모두 소멸된다. 그렇다면 어떻게 리다이렉트를 할 때 데이터를 전달할 수 있을까?

    Redirect 동작 과정

     

     

    GET의 파라미터 형식으로 정보를 전달한다는 특징을 이용하면 된다.

       GET/servlet/helloServlet?userId=hello

     

    하지만 중요한 정보가 URL에 그대로 노출된다는 문제점이 있고, 스프링은 이를 해결하기 위해 RedirectAttirbutes 클래스를 제공한다.

    RedirectAttribute는 리다이렉트가 발생하기 전에 모든 없어질만한 속성을 세션에 복사한다. 리다이렉션 이후에는 복사된 정보들을 세션에서 모델로 이동시킨다. 헤더에 파라미터를 붙이지 않기 때문에 URL에 노출되지 않아 안정성이 더 보장된다.

     

     

    [추가 설명]

    새로운 요청이 발생할 때 HttpServletRequest 객체는 소멸 후 새롭게 생성되며, HttpSession 객체는 그대로 유지된다. 즉, HttpServletRequest는 웹 브라우저에서 정보를 요청할 때 생성되고, 객체 안에 정보들이 저장된다. 이 객체가 새로 생성되기 때문에 이전의 정보가 사라지는 것이고, HttpSession의 경우 유지가 되기 때문에 RedirectAttribute는 이를 이용하여 정보들을 임시 저장하고 모델에 다시 이동시킬 수 있는 것이다. 

     

     

      'Spring/개념' 카테고리의 다른 글
      • [Spring] 쿼리 파라미터 매핑
      • [Spring] RequestMapping과 Controller
      • [Spring] Validation
      • [Spring] 의존성 주입과 동일 타입 클래스 문제 해결
      베어_
      베어_
      Today I learned | 문제를 해결하는 개발자

      티스토리툴바