상세 컨텐츠

본문 제목

Forward, 그리고 Servlet & Jsp의 연동

Study/자바

by 개발성훈 2020. 8. 31. 11:11

본문

Forward란?

 

1. 웹 브라우저에서 Servlet1에게 요청을 보냄

2. Servlet1은 요청을 처리한 후, 그 결과값을 HttpServletRequest에 저장. (Servlet1이 모든 일을 혼자 처리하지 않는다)

3. Servlet1은 결과가 저장된 HttpServletRequest와, 응답을 위한 HttpServletResponse를 같은 웹 어플리케이션 안에 있는 Servlet2에게 넘겨준다 (⇒ forward)

4. Servlet2는 Servlet1으로 부터 받은 HttpServletRequest와 HttpServletResponse를 이용하여 요청을 처리한 후, 웹 브라우저에게 결과를 전송

물론 여기서 forward를 꼭 Servlet과 Servlet 사이에서만 할 수 있는 것은 아니다! 뒤에서 Servlet과 JSP 사이의 forward도 살펴보자.

 

 

redirect와 forward의 차이는?

 

redirect는 서버가 클라이언트에게 요청을 받아 어떤 일을 처리한 뒤, 클라이언트에게 다시 요청할 곳을 알려주고 클라이언트에 의해 새로운 요청이 발생한다.

반면 forward는 다른 Servlet에게 추가적인 처리를 맡기는 것이다. 클라이언트 입장에서는, Servlet1이 모든 것을 다 처리했는지, 아니면 일부분을 Servlet2에게 위임했는지 여부는 알 필요가 없다. 그래서 forward가 처리된 다음에도 url은 바뀌지 않고 초기 요청한 그대로 유지된다.

 

클라이언트가 서버에 요청하게 되면, WAS는 HttpServletRequest 객체와 HttpServletResponse 객체를 만든다. 

Redirect는 요청이 여러 번 왔다갔다 하므로, 한번 요청할 때마다 새로운 Request와 Response 객체가 만들어진다.

반면 Forward는 새로운 요청이 추가되는 것이 아니므로, 각각의 객체가 한번만 만들어진다. 즉, 요청이 들어와서 응답을 할 때까지 Request와 Response 객체는 계속 유지되고 있는 상태다. 

 

결국 가장 큰 차이점은, "Request가 하나인지, 서로 다른 여러가지인지"가 다르다는 것이다.

 

 

그럼 이제 예제 코드를 살펴 보자.

 

 

 

 

 

Servlet과 JSP의 연동

 

Servlet은 프로그램 로직을 구현하기에는 편리하지만, HTML 태그를 출력하기엔 불편하다.

반면 JSP는 프로그램 로직을 구현하기에는 좀 불편하지만, HTML 태그를 출력하기엔 편리하다.

즉 서로의 장단점이 완전히 반대다.

 

이러한 점을 forward를 이용해 개선할 수 있다.

프로그램 로직이 필요한 부분은 Servlet에서 수행하고, 그 결과를 HTML 페이지를 구현한 JSP로 forwarding하면 된다. (Servlet과 JSP의 연동)

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

 

 

 


출처: https://starkying.tistory.com/entry/Forward-그리고-Servlet-JSP의-연동 [Random Access Memories]

'Study > 자바' 카테고리의 다른 글

XML이란  (0) 2020.09.01
SVN 이란?(정의) SVN 사용 이유  (0) 2020.09.01
[JAVA] MVC패턴  (1) 2020.08.16
[JAVA] 스택(Stack)란  (0) 2020.08.13
Servlet[서블릿] Request / Response출  (0) 2020.08.04

관련글 더보기