작성
·
189
0
서블릿에서 request.setAttribute 한 것을 jsp에서 사용하기위해 디스패처 포워딩을 해주었는데
이후 더 향상된 방법의 PoJo 활용 강의에서는
"PoJo파일에서 request.setAttribute 한 것을 어떻게 서블릿에서 공유가 가능한건지" 궁금합니다.
"서블릿에서 PoJo의 메서드를 사용할때 request와 response 참조변수를 인수를 줬기 때문인가요?"
만약 그렇다면 공유라는 측면에서만 봤을때 디스패처 포워딩을 사용 안하고 서블릿에서 JSP으로 service메서드에 request와 response를 파라미터로 주는 방법으로 하여도 서블릿에서 setAttribute한 것을 JSP에서 사용이 가능한건가요~??
(jsp에도 기본적으로 service메서드와 request response가 보이지는 않지만 있으므로)
이해시켜 주시면 너무 감사할거 같습니다 ㅠㅠㅠ
답변 1
0
pojo를 사용하면 pojo에서 model을 연동하게 됩니다. 그러면 model에서 넘겨받은 데이터를 pojo가 객체바인을 해주면 서블릿으로 데이터를 넘겨줄 필요가 없겠죠. 그래서 pojo에서 객체바인딩까지 해주어야해서 서블릿에서 pojo로 request와 response를 넘겨주는 것입니다. 객체바인딩(setAttribute)을 해주지 않으면 JSP에서는 서블릿에있는 데이터를 가져가기가 어렵습니다.
request.setAttribute("list",list);
그리고 당연히 서블릿에서 JSP로 포워딩시 request와 response를 넘겨주어야되구요.
rd.forward(request,response);
위처럼 포워딩하면 JSP에서 request.getAttribute("list")로 데이터를 꺼내가면 됩니다.
이해가되셨을까요?
네 감사합니다 ! 제가 글솜씨가 좀 없어서 질문 전달이 잘못된 거 같습니다.
다시 써보겠습니다 ㅠㅠㅠ
1."서블릿 페이지에서" 객체 바인딩한 list를 jsp에서 사용하기 위해 (서블릿에서 페이지에서)
request와 response 객체를 rd.forward(requset,response)를 해줍니다.
2."PoJo 페이지에서" 객체바인딩 한 list를 jsp에서 사용하기 위해 (서블릿 페이지에서)
request와 response 객체를 rd.forward(requset,response)를 해줍니다.
그런데 2번에서는 객체바인딩한 위치와 포워딩해준 페이지가 다른데 어떻게 서로 공유하고 있었는지 궁금합니다.
제 추측은 requestHandler()메서드를 쓸때 인수로 request, response 참조변수를 PoJo에 전달해줬기 때문에 공유가 가능했다고 생각하는데 맞는지요 ㅠ
1번은 선생님 수업에서 많이 들었습니다.
2번은 제 추측인데 맞는지 모르겠습니다.