오늘보다 더 나은 내일의 나에게_
스마트인재개발원 국비지원무료교육 서블릿 포워드 방법 정리 본문
이번 주 또한 프로젝트를 진행하면서 servlet과 jsp코드를 작성하다 보니 서블릿 포워드 방식에 대해 조금 더 공부하고 싶어졌다. 주로 수업시간에 배운 내용은 redirect 방식을 많이 사용했고 익숙해져 있어서 다른 방식은 조금 낯설었던 것 같다.
📌포워드(forward) 란?
하나의 서블릿에서 다른 서블릿이나 JSP와 연동하는 방법
포워드 기능이 사용되는 용도
- 요청에 대한 추가 작업을 다른 서블릿에게 수행
- 요청에 포함된 정보를 다른 서블릿이나 JSP와 공유
- 요청에 정보를 포함시켜 다른 서블릿에 전달
- 모델2 개발 시 서블릿에서 JSP로 데이터를 전달하는 데 사용
서블릿의 포워드 방법은 크게 4가지로 볼 수 있다.
redirect, Refresh, location, dispatch
주로 sendredirect와 forward 방식을 주로 많이 사용한다.
forward는 스프링에서 많이 사용
⚡Redirect⚡
- HttpServletResponse 객체의 sendRedirect( ) 이용
- 웹 브라우저에 재요청하는 방식
- 다른 웹 컨테이너에 있는 주소로 이동 가능
- 추가적으로 발생하는 처리에 의해 포워딩보다 성능이 느림
sendRedirect("포워드할 서블릿 또는 JSP");
⚡Refresh⚡
- HttpServletResponse 객체의 addHeader( ) 메서드 사용
- 웹 브라우저에 재용 청하는 방식
response.addHeader("Refresh", 경과시간(초);url=요청할 서블릿 또는 JSP);
⚡location⚡
- 자바스크립트 location 객체의 href 속성을 이용
- 자바스크립트에서 재요청하는 방식
location.href = '요청할 서블릿 또는 JSP';
⚡dispatch⚡
- 일반적으로 포워딩 기능을 지칭
- 서블릿이 직접 요청하는 방법
- RequestDispatcher 클래스의 forward( ) 메서드 이용
- 웹브라우저의 URL 정보는 변경되지 않으므로 클라이언트는 다른 페이지로 이동했는지 알 수 없음
- 클라이언트와 통신 없이 서버에서만 처리되는 것이어서 redirect보다 성능이 좋음
- 현재 페이지와 포워딩에 의해 호출된 페이지는 Request와 Response 객체를 공유
RequestDispatcher dis = request.getRequestDispatcher("포워드할 서블릿 또는 JSP");
dis.forward(request, response);
📌Redirect와 Forward의 차이
코드를 작성하다 보면 redirect와 forward의 차이를 크게 못 느낄 수도 있지만
조금 생각해보면 사용하는 상황과 차이가 있다.
간단히 정리해보면 먼저 Scope(영역)에 차이가 있다.
Application > Session > Request > Page
Page
-> 페이지 내에서만 사용 가능
Request
-> 한번 요청-응답 후 더 이상 사용 불가능
Session
-> 브라우저 종료 시 or 세션 삭제 시까지 사용 가능
Application
-> 애플리케이션이 종료될 때까지 사용 가능(서버 종료 시까지 사용 가능)
redirect 경우 각각의 page에 각각의 request가 새롭게 형성되어 그 영향력이 각각의 page안으로 제한됨
forward 경우 page는 각각의 페이지만 해당하고 request는 두 가지 jsp를 포괄적으로 이르기 때문에 더 큰 영역에서 활용 가능
시스템에 변화가 생기는 요청(로그인, 회원가입, 글쓰기)에는 redirect 방식
시스템에 변화가 생기지 않는 단순 요청(글목록보기, 검색 등)의 방식에는 forward 방식
=> 변화를 주는 경우 redirect, 변화를 주지 않으면 forward 사용!
현재 모집 중인 과정
스마트인재개발원 본점 남구 CGI센터
스마트인재개발원 분점 동구 아트센터
스마트 인재개발원이 궁금하다면 아래 링크!
'스마트인재개발원' 카테고리의 다른 글
스마트인재개발원 국비지원무료교육 핵심프로젝트를 마무리하며 (0) | 2022.03.17 |
---|---|
스마트인재개발원 국비지원무료교육 Front Controller 패턴 (0) | 2022.03.13 |
스마트인재개발원 국비지원무료교육 핵심프로젝트 2차 멘토링, 기획발표 정리 (0) | 2022.02.26 |
스마트인재개발원 국비지원무료교육 지능형 빅데이터 IoT융합 SW전문가과정 (0) | 2022.02.19 |
스마트인재개발원 국비지원무료교육 아두이노란? (0) | 2022.02.13 |