출처 : https://kbwplace.tistory.com/162
DAO와 DTO를 사용하기 전 일반적인 서블릿 코드
Java와 Oracle을 연결하여 DB에서 책 데이터를 검색하는 간단한 코드
package com.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/book")
public class Book extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String id = "khs";
String pw = "1234";
Connection con = null;
Statement stmt = null;
ResultSet res = null;
try {
Class.forName(driver);
con = DriverManager.getConnection(url, id, pw);
stmt = con.createStatement();
String sql = "SELECT * FROM book";
res = stmt.executeQuery(sql);
while (res.next()) {
int bookId = res.getInt("book_id");
String bookName = res.getString("book_name");
String bookLoc = res.getString("book_Loc");
out.println("bookId : " + bookId + ", ");
out.println("bookName : " + bookName + ", ");
out.println("bookLoc : " + bookLoc + ", ");
}
} catch(Exception e) {
e.printStackTrace();
} finally {
try {
if (res != null) res.close();
if (stmt != null) res.close();
if (con != null) res.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
이 일반적인 서블릿을 DAO와 DTO를 이용하여 분리해서 간단하게 나타내볼 것이다.
"BookDAO"
package com.servlet.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import com.servlet.dto.BookDTO;
public class BookDAO {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String id = "khs";
String pw = "1234";
public BookDAO() {
// 클래스 로딩, 드라이버 로딩 처리 로직
try {
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
}
}
// 메서드 호출시 DB로부터 받은 값들을 list에 담음
public ArrayList<BookDTO> select() {
ArrayList<BookDTO> list = new ArrayList<>();
Connection con = null;
PreparedStatement pstmt = null;
ResultSet res = null;
try {
con = DriverManager.getConnection(url, id, pw);
String sql = "SELECT * FROM book";
pstmt = con.prepareStatement(sql);
res = pstmt.executeQuery();
while (res.next()) {
int bookId = res.getInt("book_id");
String bookName = res.getString("book_name");
String bookLoc = res.getString("book_loc");
BookDTO bookDTO = new BookDTO(bookId, bookName, bookLoc);
list.add(bookDTO);
}
} catch(Exception e) {
e.printStackTrace();
} finally {
try {
if (res != null) res.close();
if (pstmt != null) res.close();
if (con != null) res.close();
} catch(Exception e2) {
e2.printStackTrace();
}
}
return list;
}
}
"BookDTO"
package com.servlet.dto;
public class BookDTO {
int bookId;
String bookName;
String bookLoc;
public BookDTO(int bookId, String bookName, String bookLoc) {
this.bookId = bookId;
this.bookName = bookName;
this.bookLoc = bookLoc;
}
public int getBookId() {
return bookId;
}
public String getBookName() {
return bookName;
}
public String getBookLoc() {
return bookLoc;
}
}
"Book"
package com.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.servlet.dao.BookDAO;
import com.servlet.dto.BookDTO;
@WebServlet("/book")
public class Book extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
// dao 객체 생성 시 드라이버 로딩
BookDAO bookDAO = new BookDAO();
ArrayList<BookDTO> list = bookDAO.select();
for (BookDTO dto : list) {
int bookId = dto.getBookId();
String bookName = dto.getBookName();
String bookLoc = dto.getBookLoc();
out.println("bookId : " + bookId + ", ");
out.println("bookName : " + bookName + ", ");
out.println("bookLoc : " + bookLoc + "</br>");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}