โโ์น์์ MVC ๋ฐฉ์์ ๋ง์ถฐ Database์์ ์ ๋ณด๋ฅผ ๋ฝ์ ์น์์ ๋ํ๋ด๊ธฐโโ
โModel : ๋ฐ์ดํฐ์ ๊ด๋ จ๋ ์์ ๋ค -
-DB ์ ์ถ๋ ฅ์ ๋ด๋นํ๋ ํด๋์ค(DAO, Data Access Object)
-๋ฐ์ดํฐ ๊ทธ ์์ฒด๋ฅผ ๋ํ๋ด๋ VO ํด๋์ค(DTO, Data Transfor Object)
โView : ์ค์ ๋ธ๋ผ์ฐ์ ์ ๋ํ๋๋ ์์๋ค - html๋ฅผ ์ฌ์ฉํ์ฌ jsp ํ์ผ๋ก ์์ฑํ๋ค.
โController : ๋ชจ๋ธ๊ณผ ๋ทฐ ๊ฐ์ ํ๋ฆ์ ์ ์ด ํ๋ ์์
โโ์ ๊ฐ์ ๊ธฐ์กด ๋ฐฉ์์์ ์๋ธ๋ฆฟ์ ๊ธฐ๋ฅ์ ์ต์ํ ์ํค๊ณ DB ์ ์ถ๋ ฅ ํ๋ ๋ฉ์๋ ๋ค์ ์๋ก์ด ํด๋์ค๋ฅผ ๋ง๋ค์ด์ ์๋ํ๊ฒ ๋ง๋ค๊ธฐโโ
EmpVO.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
public class EmpVO {
private int empno;
private String ename;
private int deptno;
private float sal;
private java.sql.Date hiredate;
public EmpVO() {}
public EmpVO(int empno) {
this.empno= empno;
}
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 int getDeptno() {
return deptno;
}
public void setDeptno(int deptno) {
this.deptno = deptno;
}
public float getSal() {
return sal;
}
public void setSal(float sal) {
this.sal = sal;
}
public java.sql.Date getHiredate() {
return hiredate;
}
public void setHiredate(java.sql.Date hiredate) {
this.hiredate = hiredate;
}
}
|
cs |
EmpDAO.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
import java.sql.*;
import java.util.*;
public class EmpDAO
{ //DB ์
์ถ๋ ฅ(Data Access Object)
private Connection conn;
private Statement stmt;
private ResultSet rs;
//์ ์
private Connection getConn()
{
try {
Class.forName("oracle.jdbc.OracleDriver");
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:xe", "SCOTT", "TIGER");
this.conn=conn;
return conn;
} catch (Exception e) {
e.printStackTrace();;
}return null;
}
public List<EmpVO> getList()
{
getConn();
try {
this.stmt = conn.createStatement(); //SQL ๋ฌธ์ฅ์ ๋ค๋ฃจ๋ ๊ฐ์ฒด
this.rs = stmt.executeQuery("SELECT * FROM emp");
List<EmpVO> list = new ArrayList<>();
while(rs.next())
{
int empno = rs.getInt("EMPNO");
String ename = rs.getString("ENAME");
java.sql.Date hiredate = rs.getDate("HIREDATE");
float salary = rs.getFloat("SAL");
EmpVO emp = new EmpVO();
emp.setEmpno(empno);
emp.setEname(ename);
emp.setHiredate(hiredate);
emp.setSal(salary);
list.add(emp);
System.out.printf("%d\t%s\t%s\t%f \n", empno,ename,hiredate,salary);
}
return list;
}catch(Exception ex) {
ex.printStackTrace();
}finally {//์๋ฌ๊ฐ ๋๋ ์๋๋ ๋์๊ฐ๋ ๋ฉ์๋
closeAll();
}
return null;
}
private void closeAll(){
try {
if(rs!=null) rs.close();
if(stmt!=null) stmt.close();
if(conn!=null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
|
cs |
Servlet
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import java.io.IOException;
import java.util.*;
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("/oracle")
public class OracleJDBCTest extends HttpServlet
{
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
System.out.println("Oracle 11gR2 XE, ojdbc8.jar ํ
์คํธ");
EmpDAO dao = new EmpDAO();
List<EmpVO> list = dao.getList();
System.out.println("๊ฐ์ ธ์จ ํ"+ list.size());
}
}
|
cs |
์คํ ๊ฒฐ๊ณผ:
โโ์๋ฒฝํ MVC๋ฐฉ์์ผ๋ก DB์์ ์ ๋ณด๋ฅผ ๊บผ๋ด์ ์น ๋ธ๋ผ์ฐ์ ์ ๋ํ๋ด๋ ์นํ๋ก๊ทธ๋๋ฐ ํด๋ณด๊ธฐโโ
์์ ์ฝ๋๋ฅผ ์๋ฒฝํ MVC๋ฐฉ์์ผ๋ก ๋๋๊ธฐ ์ํด์ Service ํด๋์ค ๋ํ ํ์ํ๋ค. ์๋ธ๋ฆฟ์์ ์์ฒญ์ ๋ฐ์ ๋๊ธฐ๋ ๋ก์ง๋ง ์์ฑํ๊ณ ๋๋จธ์ง ์ ๋ณด ์ฒ๋ฆฌ ๋ก์ง์ ์๋น์ค ํด๋์ค๋ฅผ ๋ง๋ค์ด์ ๊ทธ๊ณณ์์ ์คํํ๋๋ก ํ๋ค.
EmpDAO.java ์EmpVO.java ๋ ๊ทธ๋๋ก ๋๊ณ Servlet์ ์์ ํ๊ณ ์๋ก Service ํด๋์ค๋ฅผ ๋ง๋ค์๋ค.
๊ทธ๋ฆฌ๊ณ view์ ํด๋นํ๋ jsp ํ์ผ๋ ํ๋ ๋ง๋ค์ด ๋ธ๋ผ์ฐ์ ์ ๋์ ๋ค.
M: EmpVO.java, EmpDAO.java
V: emp.jsp
C: Servlet(OracleJDBCTest.java)
+)MVCService Class : EmpService.java
EmpService.java
1
2
3
4
5
6
7
8
9
10
11
|
import java.util.List;
public class EmpService
{
public EmpService() {}
public List<EmpVO> getList() {
EmpDAO dao = new EmpDAO();
List<EmpVO> list = dao.getList();
return list;
}
}
|
cs |
๊ธฐ์กด์ ์๋ธ๋ฆฟ์ ์๋ ๋ก์ง์ Service ํด๋์ค๋ก ๋ฐ๋ก ๋นผ์ฃผ์๋ค.
Servlet(OracleJDBCTest.java)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
import java.io.IOException;
import java.util.*;
import javax.servlet.*;
@WebServlet("/oracle")
public class OracleJDBCTest extends HttpServlet
{
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
EmpService svc = new EmpService();
List<EmpVO> list = svc.getList();
request.setAttribute("list", list);
getServletContext().getRequestDispatcher("/WEB-INF/jsp/emp/emp.jsp").forward(request, response);
}
}
|
cs |
emp.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<%@ page contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> </title>
</head>
<body>
<h1>์ฌ์์ ๋ณด ๋ชฉ๋ก ๋ณด๊ธฐ</h1>
<c:forEach var="emp" items="${list}">
<div>${emp.empno} ${emp.ename} ${emp.hiredate} ${emp.sal}</div>
</c:forEach>
</body>
</html>
|
cs |
์คํ ๊ฒฐ๊ณผ :
์ฌ์ ์ ๋ณด๋ฅผ ์ด์ ์น ๋ธ๋ผ์ฐ์ ์์ ํ์ธํ ์ ์์๋ค.
โโ๋ถ์๋ฒํธ๋ก ๋ถ์๋ด์ ์๋ ์ฌ์๋ค ์ ๋ถ ์ฐพ๊ธฐโโ
EmpDAO.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class EmpDAO
{ //DB ์
์ถ๋ ฅ(Data Access Object)
private Connection conn;
private Statement stmt;
private ResultSet rs;
//์ ์
private Connection getConn()
{
try {
Class.forName("oracle.jdbc.OracleDriver");
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:xe", "SCOTT", "TIGER");
this.conn=conn;
return conn;
} catch (Exception e) {
e.printStackTrace();;
}return null;
}
public List<EmpVO> getList()
{
getConn();
try {
this.stmt = conn.createStatement(); //SQL ๋ฌธ์ฅ์ ๋ค๋ฃจ๋ ๊ฐ์ฒด
this.rs = stmt.executeQuery("SELECT * FROM emp");
List<EmpVO> list = new ArrayList<>();
while(rs.next())
{
int empno = rs.getInt("EMPNO");
String ename = rs.getString("ENAME");
java.sql.Date hiredate = rs.getDate("HIREDATE");
float salary = rs.getFloat("SAL");
EmpVO emp = new EmpVO();
emp.setEmpno(empno);
emp.setEname(ename);
emp.setHiredate(hiredate);
emp.setSal(salary);
list.add(emp);
}
return list;
}catch(Exception ex) {
ex.printStackTrace();
}finally {//์๋ฌ๊ฐ ๋๋ ์๋๋ ๋์๊ฐ๋ ๋ฉ์๋
closeAll();
}
return null;
}
public List<EmpVO> findList( int deptno){
getConn();
try {
this.stmt = conn.createStatement();
this.rs = stmt.executeQuery("SELECT * FROM emp WHERE deptno="+deptno);
List<EmpVO> list = new ArrayList<>();
while(rs.next())
{
int empno = rs.getInt("EMPNO");
String ename = rs.getString("ENAME");
java.sql.Date hiredate = rs.getDate("HIREDATE");
float salary = rs.getFloat("SAL");
EmpVO emp = new EmpVO();
emp.setEmpno(empno);
emp.setEname(ename);
emp.setHiredate(hiredate);
emp.setSal(salary);
list.add(emp);
System.out.printf("%d\t%s\t%s\t%f \n", empno,ename,hiredate,salary);
}
return list;
}catch(Exception ex) {
ex.printStackTrace();
}finally {
closeAll();
}
return null;
}
private void closeAll(){
try {
if(rs!=null) rs.close();
if(stmt!=null) stmt.close();
if(conn!=null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
|
cs |
55~77 ํ : getList()๋ฉ์๋์ ๋น์ทํ์ง๋ง, deptno๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ์ฃผ์ด 59ํ์ DB์ฟผ๋ฆฌ๋ ๋ถ์๋ฒํธ๋ฅผ ํตํ ์ฌ์์ ์ ๋ถ ์ฐพ๊ฒ๋ ๋ฐ๊ฟ์ฃผ์๋ค.
EmpService.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class EmpService
{
private HttpServletRequest request;
private HttpServletResponse response;
public EmpService() {}
public EmpService(HttpServletRequest request, HttpServletResponse response) {
this.request = request;
this.response = response;
}
public String exec() {
String cmd = request.getParameter("cmd");
if(cmd==null || cmd.equals("list")) {
List<EmpVO> list = getList();
request.setAttribute("list", list);
return "/WEB-INF/jsp/emp/emp.jsp";
}else if(cmd.equals("findList")) {
int deptno = Integer.valueOf(request.getParameter("deptno"));
List<EmpVO> list = findList(deptno);
request.setAttribute("list", list);
return "/WEB-INF/jsp/emp/emp.jsp";
}
return null;
}
public List<EmpVO> getList() {
EmpDAO dao = new EmpDAO();
List<EmpVO> list = dao.getList();
return list;
}
public List<EmpVO> findList(int deptno) {
EmpDAO dao = new EmpDAO();
List<EmpVO> list = dao.findList(deptno);
return list;
}
}
|
cs |
Servlet(OracleJDBCTest.java)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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;
@WebServlet("/oracle")
public class OracleJDBCTest extends HttpServlet
{
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
String view = new EmpService(request, response).exec();
if(view!=null) {
getServletContext().getRequestDispatcher("/WEB-INF/jsp/emp/emp.jsp").forward(request, response);
}
}
}
|
cs |
์คํ๊ฒฐ๊ณผ :
๋ถ์๋ฒํธ 30์ ๋ชจ๋ ์ฌ์๋ค์ด ๋์จ ๊ฑธ ๋ณผ ์ ์๋ค.
๋๊ธ