웹어플리케이션 04 – 서블릿을 이용한 페이지 출력 (1) (방명록)’ 에서는 기본틀 까지만 만들었었다.

이제 기본틀에 db에 있는 데이터를 불러와 뿌려줄 것이다.

db에 guestbook 이라는 테이블을 만들고, record를 5개 입력한다.

 

CREATE TABLE guestbook
(
no NUMBER primary key
,writer VARCHAR2(50)
,content VARCHAR2(4000)
,wdate DATE DEFAULT SYSDATE
,pass VARCHAR2(50)
);

INSERT into GUESTBOOK
(no,
writer,
content,
pass)
VALUES 
(
	(SELECT NVL(MAX(no),0)+1 FROM guestbook),
    '호머 심슨',
    '충격과 공포다 그지 깽깽이들아 1',
    '1111'
);

INSERT into GUESTBOOK
(no,
writer,
content,
pass)
VALUES 
(
	(SELECT NVL(MAX(no),0)+1 FROM guestbook),
    '호머 심슨',
    '충격과 공포다 그지 깽깽이들아 2',
    '1111'
);

INSERT into GUESTBOOK
(no,
writer,
content,
pass)
VALUES 
(
	(SELECT NVL(MAX(no),0)+1 FROM guestbook),
    '호머 심슨',
    '충격과 공포다 그지 깽깽이들아 3',
    '1111'
);

INSERT into GUESTBOOK
(no,
writer,
content,
pass)
VALUES 
(
	(SELECT NVL(MAX(no),0)+1 FROM guestbook),
    '호머 심슨',
    '충격과 공포다 그지 깽깽이들아 4',
    '1111'
);

INSERT into GUESTBOOK
(no,
writer,
content,
pass)
VALUES 
(
	(SELECT NVL(MAX(no),0)+1 FROM guestbook),
    '호머 심슨',
    '충격과 공포다 그지 깽깽이들아 5',
    '1111'
);

 

사용자 삽입 이미지

 

이제 GBListServlet 으로 가서 실제적으로 데이터가 나오게끔 바꾼다.

예전에 만들어 놓은 부분에서  for 문으로 돌렸던 부분을 수정한다.

 

package gb;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import oracle.jdbc.pool.OracleDataSource;

public class GBListServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//한글세팅
		response.setCharacterEncoding("euc-kr");
		
		PrintWriter pw = response.getWriter();
		pw.write("");
		pw.write("");
		pw.write("");
		pw.write("");
		pw.write("Insert title here");
		pw.write("");
		pw.write("");
		pw.write("");
		pw.write("
"); pw.write("
    "); pw.write("
  • 글번호
  • "); pw.write("
  • 작성자
  • "); pw.write("
  • 작성일
  • "); pw.write("
"); pw.write("
"); Connection conn=null; Statement stmt=null; ResultSet rs=null; try { OracleDataSource ds = new OracleDataSource(); ds.setURL("jdbc:oracle:thin:@192.168.10.100:1521:ora9i"); conn = ds.getConnection("wps","wps"); stmt = conn.createStatement(); rs = stmt.executeQuery("select * from guestbook"); while(rs.next()){ pw.write("
"); pw.write("
    "); pw.write("
"); pw.write("
    "); pw.write("
  • "+rs.getString("no")+"
  • "); pw.write("
  • "+rs.getString("writer")+"
  • "); pw.write("
  • "+rs.getString("wdate")+"
  • "); pw.write("
"); pw.write("
"); pw.write(rs.getString("content")); pw.write("
"); pw.write("
"); } rs.close(); stmt.close(); conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ try { if(rs !=null) rs.close(); if(stmt != null) stmt.close(); if(conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } pw.write(""); pw.write(""); } }

OracleDataSource 를 이용해서 db 에 접속하고 try/catch 문으로 감싸준다.

try 절 안쪽에 반복될 내용을 넣는다.

for문을 while 문으로 바꾸어준다.

ResultSet 에서 next 메소드가 호출되었을때

다음 값이 있으면 true 값을 리턴하면서 이동하고

다음 값이 없으면 false 값을 리턴하므로 (resultset 구조 참조)

테이블의 row 수만큼 while 문을 실행하게 된다.

rs.getString() 메소드를 이용해서 테이블의 각컬럼 값을 읽어온다.

실행을 하여보면...

 

사용자 삽입 이미지

 

테이블의 내용이 잘 출력됨을 알 수 있다.

 

여기까지는 순수 servlet 으로만 구현을 하였다.

끝~

05 3, 2009 03:45 05 3, 2009 03:45
iamback 이 작성.

Trackback URL : http://pippen80.cafe24.com/trackback/162

Trackback RSS : http://pippen80.cafe24.com/rss/trackback/162

Trackback ATOM : http://pippen80.cafe24.com/atom/trackback/162


« Prev : 1 : ... 114 : 115 : 116 : 117 : 118 : 119 : 120 : 121 : 122 : ... 251 : Next »