main.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>
<div align = "center">
<hr width = "30%" color = blue>
<h3>EMP 테이블 메인 페이지</h3>
<hr width = "30%" color = blue>
<br/> <br/>
<%-- request.getContextPath() : 현재 프로젝트명을 문자열로 반환해주는 메서드 --%>
<%-- select는 별칭 --%>
<a href = "<%=request.getContextPath() %>/select">[전체 사원 목록]</a>
</div>
</body>
</html>
Java Resources -> src/main/java -> com.emp.controller / com.emp.model 패키지 두 개 생성

com.emp.model 패키지에 EmpDTO, EmpDAO 클래스 두 개 생성
EmpDTO에 DB 상의 EMP 테이블의 컬럼명을 멤버변수로 선언
=============================코드=============================
package com.emp.model;
// DB 상의 EMP 테이블의 컬럼명과 유사하게 멤버 구성
public class EmpDTO {
private int empno;
private String ename;
private String job;
private int mgr;
private String hiredate;
private int sal;
private int comm;
private int deptno;
public int getEmpno() {
return empno;
}
public void setEmpno(int empno) {
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public int getMgr() {
return mgr;
}
public void setMgr(int mgr) {
this.mgr = mgr;
}
public String getHiredate() {
return hiredate;
}
public void setHiredate(String hiredate) {
this.hiredate = hiredate;
}
public int getSal() {
return sal;
}
public void setSal(int sal) {
this.sal = sal;
}
public int getComm() {
return comm;
}
public void setComm(int comm) {
this.comm = comm;
}
public int getDeptno() {
return deptno;
}
public void setDeptno(int deptno) {
this.deptno = deptno;
}
}
EmpDAO 클래스로 DB연동
=============================코드=============================
package com.emp.model;
import java.sql.*;
public class EmpDAO {
// DB와 연동하는 객체
Connection con = null;
// DB에 SQL문을 전송하는 객체
PreparedStatement pstmt = null;
// SQL문을 실행한 후에 결과값을 가지고 있는 객체
ResultSet rs = null;
// SQL문을 저장할 문자열 변수
String sql = null;
public EmpDAO() {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "goott";
String password = "99229922";
// 1단계 : 오라클 드라이버를 메모리로 로딩
try {
Class.forName(driver);
System.out.println("오라클 드라이버 메모리로 로딩 완료!");
// 2단계 : 오라클 데이터베이스와 연결 작업 진행
con = DriverManager.getConnection(url, user, password);
System.out.println("오라클 데이터베이스와 연결 성공!");
} catch (Exception e) {
e.printStackTrace();
}
} // 기본 생성자
}
데이터 연동 하기 위해서는 webapp -> WEB-INF -> lib에 ojdbc6.jar 복사 붙여넣기!

com.emp.controller에 /select 를 mapping 으로 준 서블릿 생성
service는 체크, doGet, doPost는 체크 풀기!

=============================코드=============================
package com.emp.controller;
import java.io.IOException;
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.emp.model.EmpDAO;
@WebServlet("/select")
public class SelectServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public SelectServlet() {
super();
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// main.jsp 페이지에서 요청 내용
// ==> EMP 테이블에 있는 전체 사원을 보여달라는 요청(비즈니스 로직)
// 1단계 : DB와 연결작업 진행
EmpDAO dao = new EmpDAO();
// 2단계 : DB에서 EMP 테이블의 전체 사원목록을 조회
List<EmpDTO> empList = dao.selectEmpList();
}
}
main.jsp에서 실행!

성공된 것을 확인했다면
EmpDAO.jsp로 가서 나머지 코드를 작성하자!
=============================코드=============================
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class EmpDAO {
// DB와 연동하는 객체
Connection con = null;
// DB에 SQL문을 전송하는 객체
PreparedStatement pstmt = null;
// SQL문을 실행한 후에 결과값을 가지고 있는 객체
ResultSet rs = null;
// SQL문을 저장할 문자열 변수
String sql = null;
public EmpDAO() {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "goott";
String password = "99229922";
// 1단계 : 오라클 드라이버를 메모리로 로딩
try {
Class.forName(driver);
System.out.println("오라클 드라이버 메모리로 로딩 완료!");
// 2단계 : 오라클 데이터베이스와 연결 작업 진행
con = DriverManager.getConnection(url, user, password);
System.out.println("오라클 데이터베이스와 연결 성공!");
} catch (Exception e) {
e.printStackTrace();
}
} // 기본 생성자
// ------------------ 여기서부터 작성--------------------
// EMP 테이블에서 사원 전체 목록을 조회하는 메서드
public List<EmpDTO> selectEmpList() {
List<EmpDTO> list = new ArrayList<EmpDTO>();
try {
// 3단계 : 데이터베이스에 전송할 SQL문을 작성
sql = "select * from emp order by hiredate desc";
// 4단계 : SQL문을 데이터베이스 전송객체에 저장
pstmt = con.prepareStatement(sql);
// 5단계 : SQL문을 데이터베이스에 전송 및 실행
rs = pstmt.executeQuery(); // 쿼리문을 전송하고 DB에서 실행
while(rs.next()) {
EmpDTO dto = new EmpDTO();
dto.setEmpno(rs.getInt("empno"));
dto.setEname(rs.getString("ename"));
dto.setJob(rs.getString("job"));
dto.setMgr(rs.getInt("mgr"));
dto.setHiredate(rs.getString("hiredate"));
dto.setSal(rs.getInt("sal"));
dto.setComm(rs.getInt("comm"));
dto.setDeptno(rs.getInt("deptno"));
list.add(dto); // dto는 주소값
}
// 6단계 : DB와 연결되어 있던 자원 종료
rs.close(); pstmt.close(); con.close();
} catch (SQLException e) {
e.printStackTrace();
}
return list;
} // selectEmpList() 메서드 end
}
다시 서블릿으로 가자!
=============================코드=============================
package com.emp.controller;
import java.io.IOException;
import java.util.List;
import javax.servlet.RequestDispatcher;
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.emp.model.EmpDAO;
import com.emp.model.EmpDTO;
@WebServlet("/select")
public class SelectServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public SelectServlet() {
super();
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// main.jsp 페이지에서 요청 내용
// ==> EMP 테이블에 있는 전체 사원을 보여달라는 요청(비즈니스 로직)
// 1단계 : DB와 연결작업 진행
EmpDAO dao = new EmpDAO();
// 2단계 : DB에서 EMP 테이블의 전체 사원목록을 조회
List<EmpDTO> empList = dao.selectEmpList();
// ----------------- 여기서부터 작성 --------------------
-
// 3단계 : 페이지 이동시 정보(데이터)를 넘겨 주어야 함
request.setAttribute("List", empList); // "Lsit"는 key , empLIst는 value 라고 생각하면 됨
// 4단계 : 이동할 페이지 경로를 설정해주어야 함
RequestDispatcher rd = request.getRequestDispatcher("view/emp_list.jsp");
// 5단계 : 실제 페이지로 이동
rd.forward(request, response);
}
}
view 폴더 생성 -> emp_list.jsp 생성
=============================코드=============================
<%@page import="com.emp.model.EmpDTO"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
List<EmpDTO> list = (List<EmpDTO>) request.getAttribute("List"); // empList의 값이 넘어옴
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div align = "center">
<hr width = "30%" color = "red">
<h3>EMP 테이블 전체 사원 리스트 페이지</h3>
<hr width = "30%" color = "red">
<br/> <br/>
<table border = '1' width = "400">
<tr>
<th>사원 No.</th> <th>사원명</th> <th>부서No.</th> <th>입사일자</th>
</tr>
<%
if(list.size() != 0) { // 데이터가 있다면
for(int i = 0; i < list.size(); i++){
EmpDTO dto = list.get(i);
%>
<tr>
<td> <%=dto.getEmpno() %> </td>
<td> <%=dto.getEname() %> </td>
<td> <%=dto.getDeptno() %> </td>
<td> <%=dto.getHiredate().substring(0,10) %> </td>
</tr>
<% } // for문 end
}else {
// 사원목록이 없는 경우
%>
<tr>
<td colspan="4" align = "center">
<h3>사원 전체 목록이 없습니다..</h3>
</td>
</tr>
<% }
%>
</table>
</div>
</body>
</html>

전체 사원 목록 클릭
