리다이렉트의 세 가지 방법
✅response.sendRedirect()✅
- 클라이언트 측 리다이렉션 방식
- 브라우저가 새로운 URL로 HTTP 요청을 보냄
- URL이 변경되어 보임
- 새로운 요청이므로 request 객체가 유지되지 않음
✅forward()✅
- 서버 측 리다이렉션 방식
- 서버 내부에서 페이지 전환이 일어남
- URL 변경되지 않음
- 동일한 request 객체가 유지됨
✅쿼리 스트링✅
- URL 끝에 파라미터를 추가하여 데이터 전달 (?key=value)
- GET 방식으로 데이터를 전달할 때 주로 사용
- URL에 데이터가 노출되므로 보안에 주의해야 함
📌 주요 차이점
- sendRedirect는 새로운 요청을 생성하고, forward는 기존 요청을 유지
- sendRedirect는 URL이 변경되지만, forward는 URL 유지
- 쿼리 스트링은 데이터 전달 방식이며, 다른 두 방식과 함께 사용될 수 있다
예시코드
@PostMapping("/join")
public String join(MemberVO vo, Model model) {
int result = mapper.join(vo);
System.out.println("회원가입 결과값 : "+result);
// 퀴리스트링 : URL에 데이터를 포함시켜서 전송하는법
return "redirect:/join_success?email=" + vo.getEmail();
}
@GetMapping("join_success")
public String join_success() {
return "join_success";
}
EL 표기법
EL(Expression Language) 표기법은 JSP에서 데이터를 쉽게 출력하기 위한 표현 방식이다.
- 기본 문법: ${식별자}
- 주로 사용되는 내장 객체:
- param: 요청 파라미터 값
- sessionScope: 세션 영역의 속성
- requestScope: 요청 영역의 속성
- applicationScope: 어플리케이션 영역의 속성
예시
- ${user_info.email} - session에 저장된 user_info 객체의 email 값을 가져옴
- ${param.name} - 요청 파라미터 중 name의 값을 가져옴
- ${sessionScope.attribute} - 세션에 저장된 attribute 값을 가져옴
EL 표기법은 <%= %> 스크립틀릿 표기법보다 더 간단하고 가독성이 좋은 장점이 있다.