노무현 대통령 배너

웹 어플리케이션 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 - 테그를 직접 만들어 쓸때 사용

크리에이티브 커먼즈 라이센스
Creative Commons License

"웹 프로그래밍" 카테고리의 다른 글


이 글의 관련글
2009/05/04 06:40 2009/05/04 06:40

트랙백을 보내세요

트랙백 주소 :: http://pippen80.cafe24.com/trackback/165

댓글을 달아 주세요

[로그인][오픈아이디란?]
비밀글 (Serect)
댓글 달기 (Submit)