웹 - JDBC
웹 - jdbc - 예제(방명록) - db,vo,dao구성/방명록 조회
우가본
2024. 6. 20. 09:44
->CRUD 처리하기
1. DB작업
--방명록 DB
-- 일련번호 관리하는 객체(시퀀스)
create sequence seq_visit_idx
-- 방명록 테이블 생성
create table visit
(
idx int,
name varchar2(100) not null,
content varchar2(2000) not null,
pwd varchar2(100) not null,
ip varchar2(100) not null,
regdate date
)
-- 기본키
alter table visit
add constraint pk_visit_idx primary key(idx);
-- sample data
insert into visit values(seq_visit_idx.nextVal,
'일길동',
'내가 1등이다',
'1234',
'192.168.219.170',
sysdate
);
insert into visit values(seq_visit_idx.nextVal,
'이길동',
'아쉽네 내가 1등할 수 있었는데...',
'1234',
'192.168.219.54',
sysdate
);
select * from visit
2. Vo만들기
package db.vo;
public class VisitVo {
int idx;
String name;
String content;
String pwd;
String ip;
String regdate;
public VisitVo() {
// TODO Auto-generated constructor stub
}
public VisitVo(int idx, String name, String content, String pwd, String ip, String regdate) {
super();
this.idx = idx;
this.name = name;
this.content = content;
this.pwd = pwd;
this.ip = ip;
this.regdate = regdate;
}
public int getIdx() {
return idx;
}
public void setIdx(int idx) {
this.idx = idx;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getRegdate() {
return regdate;
}
public void setRegdate(String regdate) {
this.regdate = regdate;
}
}
3. dao (조회 메서드만)
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import db.vo.VisitVo;
import service.DBService;
public class VisitDao {
// single-ton pattern : 객체 1개만 생성해서 이용하자
static VisitDao single = null;
public static VisitDao getInstance() {
//없으면 생성해라
if (single == null)
single = new VisitDao();
return single;
}
// 외부에서 객체생성하지 말아라...
private VisitDao() {
}
//목록조회
public List<VisitVo> selectList() {
List<VisitVo> list = new ArrayList<VisitVo>();
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "select * from visit order by idx desc";
try {
//1.Connection 얻어오기
conn = DBService.getInstance().getConnection();
//2.PreparedStatement
pstmt = conn.prepareStatement(sql);
//3.ResultSet 얻어온다
rs = pstmt.executeQuery();
while (rs.next()) {
//저장객체 생성->레코드에서 읽은 값을 넣는다
VisitVo vo = new VisitVo();
//rs가 가리키는 레코드값을 vo에 넣는다
vo.setIdx(rs.getInt("idx"));
vo.setName(rs.getString("name"));
vo.setContent(rs.getString("content"));
vo.setPwd(rs.getString("pwd"));
vo.setIp(rs.getString("ip"));
vo.setRegdate(rs.getString("regdate"));
//ArrayList에 추가
list.add(vo);
} //end:while
} catch (Exception e) {
e.printStackTrace();
} finally {
//마무리 작업(열린역순으로 닫기)
try {
if (rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
} // end - selectList()
}
4. 조회 서블릿 생성
package action;
import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* Servlet implementation class VisitListAction
*/
@WebServlet("/visit/list.do")
public class VisitListAction extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
*/
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Dispatcher형식으로 호출
String forward_page = "visit_list.jsp";
RequestDispatcher disp = request.getRequestDispatcher(forward_page);
disp.forward(request, response);
}
}
5. 조회 jsp 생성
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
방명록 보기...
</body>
</html>
) 서블릿 실행 후 url로 jsp로 이동하면...