반응형

웹 프로그램 실행 시 자원을 서블릿 관련 객체에 저장하는 방법으로 주로 HttpServletRequest, HttpSession, ServletContext  객체에서 사용되며 저장된 자원(데이터)은 프로그램 실행 시 서블릿이나 JSP에서 공유하여 사용합니다.

 

서블릿 관련 객체에서 바인딩 관련 기능을 제공하는 메서드

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

 - getAttribute(String name) 각 객체에 바인딩 된 자원(데이터)을 name으로 가져옵니다.

 - removeAttribute(String name) 각 객체에 바인딩된 자원(데이터)을 name으로 제거합니다.

 

실행 결과를 보면 정상적으로는 '서울시 성북구'가 출력되어야 하는데 null이 출력됩니다. 왜 그럴까요?  

 

포워딩 과정 1단계인 웹 브라우저에서 요청할 때 서블릿에서 전달되는 첫 번째 request는 웹브라우저를 통해 재요청되는 3단계의 두번째 request와 다른 요청입니다.

  즉, redirect방식으로는 서블릿에서 바인딩한 데이터를 다른 서블릿으로 전송할 수 없다는 것입니다.

 

 

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

지금까지 배운 포워딩과 다른점은 클라이언트의 웹을 거치지 않고 바로 서버에서 포워딩이 진행된다는 것입니다.

따라서 웹 브라우저 주소창의 URL이 변경되지 않습니다.

 

첫번째 서블릿
두번째 서블릿

실행하고 아래의 주소를 입력하면 주소는 그대로이지만 두번째 서블릿(second)가 작동하는 걸 확인할 수 있습니다.

 

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

refresh를 이용한 포워딩 역시 redirect 처럼 웹브라우저를 거쳐서 요청을 수행합니다.

response.addHeader("Refresh", "시간(초);url=서블릿명으로 재요청합니다");

 

위에 주소를 localhost:8080/pro08/first 를 입력하게 되면

1초 후에 second서블릿으로 넘어가서 출력이 됩니다.

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

forward : 하나의 서블릿에서 다른 서블릿이나 JSP와 연동하는 방법을 포워드(forward)라고 합니다.

기능 

1. 요청에 대한 추가 작업을 다른 서블릿에게 수행하게 합니다

2. 요청에 포함된 정보를 다른 서블릿이나 JSP와 공유할 수 있습니다.

3. 요청에 정보를 포함시켜 다른 서블릿에 전달할 수 있습니다.

4. 모델2 개발 시 서블릿에서 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);

 

이후부터 각각의 포워딩을  사용해 보도록 하겠습니다.

반응형
블로그 이미지

꽃꽂이하는개발자

,