Roel Notebook

[Web] redirect, forward, Servlet과 JSP연동

by Roel Downey

Web

728x90
반응형

 

1) 리다이렉트 (redirect)

  • 리다이렉트는 HTTP프로토콜로 정해진 규칙이다.
  • 서버는 클라이언트의 요청에 대해 특정 URL로 이동을 요청할 수 있다. 이를 리다이렉트라고 한다.
  • 서버는 클라이언트에게 HTTP 상태코드 302로 응답하는데 이때 헤더 내 Location 값에 이동할 URL 을 추가한다. 클라이언트는 리다이렉션 응답을 받게 되면 헤더(Location)에 포함된 URL로 재요청을 보내게 된다. 이때 브라우저의 주소창은 새 URL로 바뀌게 된다.
  • 클라이언트는 서버로부터 받은 상태 값이 302이면 Location헤더값으로 재요청을 보내게 된다. 이때 브라우저의 주소창은 전송받은 URL로 바뀌게 된다.
  • 서블릿이나 JSP는 리다이렉트하기 위해 HttpServletResponse 클래스의 sendRedirect() 메소드를 사용한다.

출처 : https://stackoverflow.com/q/2047122

 

2) 포워드 (forward)

 

클라언트의 요청을 서블릿이나 jsp가 처리하다가 추가적인 처리를 웹 어플리케이션 내부에 포함된 다른 서블릿이나 jsp에 건네 주는 기능이다.

다른 페이지로 이동 요청을 보내는 redirect 와는 다르게, forward는 다른 페이지에게 처리를 위임하기 때문에 reponse와 request 객체를 공유하는 특징을 가지고 있다. 

 

 

 

출처 : https://stackoverflow.com/q/2047122

 

정리해보자면, forward는 서버가 클라이언트로부터 Resource1을 요청받으면 해당 처리를 진행한 후 Resource 2로 일부 처리를 건네준다. 그 과정에서 response와 request 객체를 공유하고, 처리가 완료되면 클라이언트에게 처리 결과를 응답으로 보낸다. 새로운 객체를 생성하지 않기 때문에 브라우저의 URL 또한 변경되지 않는다는 특징을 가지고 있다.

▶ redirect : 객체 재사용 X , URL 변화 O

▶ forward : 객체 재사용 O , URL 변화 X

 

 

3) Servlet과 JSP연동

 

  • Servlet은 프로그램 로직이 수행되기에 유리하다.
  • JSP는 결과를 출력하기에 Servlet보다 유리하다. 필요한 html문을 그냥 입력하면 됨.
  • 프로그램 로직 수행은 Servlet에서, 결과 출력은 JSP에서 하는 것이 유리하다.
  • Servlet과 JSP의 장단점을 해결하기 위해서 Servlet에서 프로그램 로직이 수행되고, 그 결과를 JSP에게 포워딩하는 방법이 사용되게 되었다. 이를 Servlet과 JSP연동이라고 한다.

 

 

 

 

 

 

 

 

 

728x90
반응형

블로그의 정보

What doing?

Roel Downey

활동하기