본문 바로가기
컴퓨터 공부/JAVA Web

서블릿 포워드(servlet forward) / 바인딩(binding)

by 구깨비 2021. 8. 5.

 

* 포워드 : 하나의 서블릿에서 다른 서블릿이나 JSP와 연동하는 방법

 

* 포워드 4가지 방식

 

1. redirect

 - HttpServletResponse 객체의 sendRedirect() 메서드 이용

 - 웹 브라우저에 재요청하는 방식

 - 형식 : sendRedirect("포워드할 서블릿 또는 JSP")

 

2. Refresh

 - HttpServletResponse 객체의 addHeader() 메서드 이용

 - 웹브라우저에 재요청하는 방식

 - 형식: response.addHeader("Refresh", "경과시간(초); url=요청할 서블릿 또는 jsp")

 

3. location

 - 자바스크립트 location 객체의 href 속성을 이용

 - 자바스크립트에서 재요청하는 방식

 - 형식: location.href='요청할 서블릿 또는 jsp'

 

4. dispatch

 - 일반적으로 포워딩기능을 지칭

 - 서블릿이 직접 요청하는 방법

 - RequestDispatcher 클래스의 forward() 메서드를 이용합니다.

 - 형식: RequestDispatcher dis = request.getRequestDispatcher("포워드할 서블릿 또는 jsp");

           dis.forward(request,response);

 

 

1,2,3 방법은 서블릿이 웹브라우저를 거쳐 다른 서블릿이나 jsp에게 요청하는 방식

4번 방법은 서블릿에서 바로 다른 서블릿에 요청하는 방법!

'

 

+) dispatch 는 서블릿의 이동이 있더라도 url의 변경이 일어나지 않는다.

    ex) /first 서블릿에서 /second 서블릿으로 이동해도 localhost:8080/first로 보인다.

    다른 방식들은 웹브라우저를 거치기 때문에 url의 변경이 일어난다.

 


 

전달하는 데이터의 양이 적을 경우에는 get방식(ex. response.sendRedirect("서블릿이름?데이터이름=데이터값"))으로

데이터 전달을 하면 되지만 

대량의 데이터를 공유하거나 전달하고 싶을 경우 바인딩 기능을 사용한다.

 

* 바인딩 :  웹 프로그램 실행 시 데이터를 서블릿 관련 객체에 저장하는 방법.

                  주로 HttpServletRequest, HttpSession, ServletContext 객체에서 사용된다.

                  저장된 데이터는 프로그램 실행 시 서블릿 또는 JSP에서 공유하여 사용한다.

 

 

* 바인딩 관련 메서드

  - setAttribute(String name, Object obj) : 자원을 각 객체에 바인딩한다.

                                                      request.setAttribute로 사용.

  - getAttribute(String name) : 각 객체에 바인딩된 자원을 name으로 가져온다.

                                        request.getAttribute로 사용.

                                        request.setAttribute에 담아온 내용을 받아옵니다.

  - removeAttribute(String name) : 각 객체에 바인딩된 자원을 name으로 제거한다.

 

 

    +)  response.sendRedirect로는 request.setAttribute값 전달안됨!

        첫번째 전달된 서블릿의 request와 redirect를 통해서 두번째로 전달되는 서블릿의 request가 다르기 때문에~

        dispatch는 request를 그대로 두 번째 서블릿으로 포워드하기 때문에 값을 받아 올 수 있다.

        ex) RequestDispatcher dis = request.getRequestDispatcher("두번째 서블릿");

             dispatch.forward(request,response);

 

 

 

 

 

 

 

 

 

'컴퓨터 공부 > JAVA Web' 카테고리의 다른 글

JSP  (0) 2021.08.10
세션(Session)  (0) 2021.08.09
쿠키(Cookie)  (0) 2021.08.09
세션 트래킹(Session Tracking)  (0) 2021.08.08
ServletContext/ ServletConfig  (0) 2021.08.05

댓글