Web
4 Jun 2020

Page Moving

해당 게시글은 웹을 공부하기 위해 개인적으로 기록했던 자료입니다.

Cycle재정리


서버가 실행되면 서버는 제일 먼저 DD(Deploy Descriptor)를 읽고 Filter 생성자 만듭니다. 이후 ServletContext의 생성자가 실행되고 DD에 매핑되어져있는 Servlet의 기본생성자를 생성합니다.

Servlet 객체마다 ServletConfig가 생성되고 Servlet instance에서 init()을 실행하면서 외부자원으로 필드를 초기화합니다. 마지막으로 dofilter()을 실행하고 Ready on 상태를 마칩니다.

요청이 들어오면 ServletRequest, ServletResponse가 만들어지고 doProcess에서 Form값을 받습니다.

VO를 생성하고 DAO를 리턴받아 Business Logic을 호출하고 Business Logic으로 부터 데이터를 받았다면 Attribute에 값을 설정한 후 다음 페이지로 보냅니다. 만약 보낼 데이터가 없다면 다음 페이지의 경로만 지정합니다.

Foward 방식


forwarding은 서버상에서 다이렉트로 이동하는 방법입니다. 요청을 하면 데이터를 보내는 페이지를 따로 만들지 않아도 되기 때문에 주로 쓰입니다.

ServletRequest 인터페이스 안에 getRequestDispatcher(String url)이라는 메소ㄷ로 RequestDispatcher 인스턴스를 만들고 forward메소드를 호출합니다.

forward하려는 페이지로 현재 서블릿의 제어권을 가지고 서버상에서 다이렉트로 이동합니다. View의 내용은 jsp이지만 출력된 결과창의 주소를 확인하면 forwarding이 일어난 서블릿 주소로 뜨는 것을 확인할 수 있습ㄴ다.

응답이 Servlet으로 다시 돌아오는 것이 아니기 때문에 HttpServletResponse 객체가 쓰이지 않습니다. 그렇기때문에 서블릿에서 PrintWriter객체를 사용할 일이 전혀 없습니다.

Include 방식


Servlet의 printwriter객체를 이용하려 한다면 include방식으로 페이지를 이동해야 합니다. include에 연결된 페이지(흔히 jsp)의 모든 내용을 가지고 다시 서블릿으로 돌아오기 때문에 include한 다음에 있는 출력내용을 모두 다 응답을 한다.

forward방식이건 include방식이건 서버상에서 직접 다른 페이지를 호출하는 방식이기 때문에 페이지의 이동속도가 빠릅니다. 다시말해서 브라우저를 거치지 않는다는 중요한 포인트가 있습니다. 거의 모든 페이지 연결방식의 80%이상이 forward방식입니다.

Redirect 방식


Redirect방식은 글자 그대로 방향(direct)를 다시 잡는 것을 말합니다. 즉 브라우저가 다시 요청을 하게 됩니다. redirect는 주로 웹서버상에 있는 정적인 문서를 가져올 때나 Error페이지를 요청할 때나 Attribute를 통해 넘겨주는 데이터값이 없을 때 사용할 수도 있습니다.


Tags:
0 comments