웹 어플리케이션 07 - 서블릿을 이용한 페이지 출력 2 (방명록) 에서는 순수 servlet 만 가지고
방명록을 구현했었다.
이제 다른 방법으로 구현을 하여보자
web.xml 에 만들 GBServlet 내용을 기재하고
GBServlet 을 만들자
doGet, doPost 둘다 만들고 각각 execute 메소드를 호출한다.
get 방식이든 post 방식이든 동일한 execute 메소드 내용을 실행하기 위함
list.jsp 를 만들어준다.
기본틀만 만들어져있는 상태이다.
실행하여보면...

----그림1----
/newgb 라는 주소가 호출되어(get방식) GBServlet 을 호출,
/guestbook/list.jsp 로 forwarding 된것을 알 수 있다.
주소창의 주소는 처음 사용자가 입력한 그대로 유지 되고있다.
창고를 이용해서 데이터를 jsp 로 넘겨보자
request 창고를 이용...
창고는 attribute ...
GBServlet 에 구문을 추가한다.
request.setAttribute("ttt", "물건을 넣습니다.");
ttt 가 창고 이름이라고 보면 된다.
"ttt" 라는 이름으로 "물건을 넣습니다."라는 물건을 request에 저장한다 라는 구문이다.
list.jsp 에서 창고에 넣은 물건을 꺼내어 뿌려줄것임
<%=request.getAttribute("ttt") %> 을 방명록의 내용이 들어갈 부분에 넣어줌
실행하여보면....

-----그림 2-----
GBServlet 에서는 setAttribute (창고에 물건을 넣음)
list.jsp 에서는 getAttribute (창고에서 물건을 꺼냄)
ttt 라는 이름으로 넣은 물건내용(물건을 넣습니다.) 가 잘 출력됨을 볼 수 있다.
이러한 형태가... MVC Model 1 의 기본적인 형식임
이때 바로 /guestbook/list.jsp 를 호출하면....

-----그림 3----
jsp 에서 <%=request.getAttribute("ttt") %> 요구문에 의해 물건을 꺼내오려하지만
request는 요청과 응답이 끝날때 까지만 살아있으므로
그림1에서 물건을 꺼내왔다고 해서 남아있는 것이 아니고
물건을 꺼내오지 못하고 null 로 표시가 된다.

----그림9
창고에 넣었던 물건을 불러오기까지는 했었다.
이제 물건을 db 의 데이터로 바꾸어 보자
OracleDataSource 를 만든다.
GBServlet 의 execute 메소드 안쪽에 OracleDataSource 를 구현해준다.
그리고... list.jsp 에서도 ds를 사용하여야하므로 창고에 넣어준다.
물론 list.jsp 에 직접 스크립트릿을 이용해서 구현하여도 된다.
이제 list.jsp 에서 반복되어지는 부분을 구현해준다.
request.getAttribute("ds") 해서 가져오는 데 OracleDataSource 로 형변환을 하고
OracleDataSource 형 변수인 ds 에 넣는다.
이상태에선 에러가 나는데 OracleDataSource 가 무엇인지 jsp 가 몰라서이다.
import="oracle.jdbc.pool.*" 를 추가해준다.
connection, statement, resultset 등을 구현해주고
while 문으로 반복되는 부분을 감싸준다.
실행하여보면....

----그림11
데이터를 잘 불러옴을 알 수 있다.
---- 중요 내용 정리 ----
<web application 영역별 객체>
(1) ServletContext (창고, 파라메터 저장)
: 어플리케이션 전체에 있는 모든 Servlet 에 영향을 끼칠 수 있는 객체
(오직 하나만 존재한다.)
(2) ServletConfig (파라메터 저장)
: Servlet 마다 존재
(3) HttpSession (창고)
: 사용자가 웹브라우져로 접속해서 웹브라우져를 끌때까지 존재하는 객체
(4) HttpServletRequest (창고, client 에서 넘어오는 파라메터 저장)
: 사용자의 요청이 들어오면 생성되는 객체
(응답이 끝나면 사라진다.)
(1)이 가장 영역이 넓고 아래로 내려올수록 좁다.
ServletContext, HttpSession, HttpServletRequest 는 창고 역할을 한다.
Servlet 이 jsp 에게 화면을 보여주는 것을 위임하는데
이런식으로 넘어갈때 필요한 데이터들을 저장해서 넘겨주는 것 이라고 생각하자
<내장객체> => jsp 에서 자동지원되는것들
*application -> ServletContext
*config -> ServletConfig
*session -> HttpSession // 로그인 용도
*request - >HttpServletRequest
*response -> HttpServletResponse
pageContext
page
out
exception
페이지, 리퀘스트, 세션, 어플리케이션
page <request <session < appllication
==> 창고역할 가능 ==> 공통적으로 setAttribute, getAttribute 메소드를 가지고 있다.
Attribute 는 창고역할을 하는 메소드.... 오브젝트다... (오브젝트,객체이므로 아무거나 다 들어갈 수 있음)
parametter는 스트링이다. (문자열)...
pageContext - 테그를 직접 만들어 쓸때 사용
"웹 프로그래밍" 카테고리의 다른 글
- 웹 어플리케이션 04 - 서블릿을 이용한 페이지 출력 (1) (방명록) (댓글 0개 / 트랙백 0개) 2009/05/02
- 왠지 골치아픈 한글처리 (get방식) (댓글 2개 / 트랙백 0개) 2009/03/30
- 웹 어플리케이션 08 - 페이지이동의 두가지 방식 (1) redirect 방식 (댓글 0개 / 트랙백 0개) 2009/05/03
- 웹 어플리케이션 09 - 페이지이동의 두가지 방식 (2) foward 방식 (댓글 0개 / 트랙백 0개) 2009/05/03
- 웹 어플리케이션 11 - jsp 의 기본 (댓글 0개 / 트랙백 0개) 2009/05/07
- 웹 어플리케이션 07 - 서블릿을 이용한 페이지 출력 2 (방명록) (댓글 0개 / 트랙백 0개) 2009/05/03
- 웹 어플리케이션 01 - 간단한 개념 정리 (댓글 0개 / 트랙백 0개) 2009/04/08
- 웹 어플리케이션 12 - jsp 에서 db에 입력을 하여보자!! (댓글 0개 / 트랙백 0개) 2009/06/16
- 웹 어플리케이션 06 - 한글처리 (post 방식) (댓글 0개 / 트랙백 0개) 2009/05/02
- 웹 어플리케이션 05 - 한글처리 (get 방식) (댓글 0개 / 트랙백 0개) 2009/05/02



댓글을 달아 주세요