- ๊ด๋ จ ๊ธ
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (1) ํ์ ๋ชฉ๋ก ์กฐํ
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (2) ํ์ ๊ฐ์
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (3) ํ์ ์ ๋ณด ์์
- [IntelliJ] ํ์๊ฐ์ ์์ (MVC) - (4) ๋ทฐ(JSP) ๋ถ๋ฆฌํ๊ธฐ
- [IntelliJ] ํ์๊ฐ์ ์์ (MVC) - (5) ๋ก๊ทธ์ธ/๋ก๊ทธ์์(HttpSession)
- [IntelliJ] ํ์๊ฐ์ ์์ (MVC) - (6) ํ์ ์ญ์
- [IntelliJ] ํ์๊ฐ์ ์์ (MVC) - (7) DAO ๋ถ๋ฆฌํ๊ธฐ
์ง๊ธ๊น์ง ํ์๊ฐ์ ์์ ๋ ์๋ธ๋ฆฟ์์ JSP๋ก ํ๋ฉด ์์ฑ์ ์์ํ์ฌ ๋ทฐ๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฒ ๊น์ง ๊ตฌํ๋์๋ค.
์ด์ DB์ ์ฐ๋ํด์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์ DAO(Data Access Object)๋ก ๋ง๋ค์ด ๋ถ๋ฆฌํ ๊ฒ์ด๋ค.
DAO(Data Access Object)
๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ ๋ฌธ์ผ๋ก ํ๋ ๊ฐ์ฒด
DB, ํ์ผ, ๋ฉ๋ชจ๋ฆฌ ๋ฑ์ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ์์ฑ, ์กฐํ, ๋ณ๊ฒฝ, ์ญ์ ํ๋ ์ญํ ์ ์ํํ๋ค.
DAO๋ ๋ณดํต ํ๋์ DB ํ
์ด๋ธ์ด๋ ๋ทฐ์ ๋์ํ๋ค.
์
๋ฌด ๋ก์ง์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ถ๋ถ์ ๋ถ๋ฆฌํ์ฌ ๋ณ๋์ ๊ฐ์ฒด๋ก ์ ์ํ๋ฉด ์ฌ๋ฌ ์
๋ฌด์์ ๊ณตํต์ผ๋ก ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ์ง๋ณด์๊ฐ ์ฌ์์ง๊ณ ์ฌ์ฌ์ฉ์ฑ์ด ๋์์ง๋ค.
DAO ์์ฑ
dao ํจํค์ง์ Dao ํด๋์ค๋ฅผ ์์ฑํ๊ณ DB ์ฐ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
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
|
public class StudentDao {
Connection connection;
public void setConnection(Connection connection) {
this.connection = connection;
}
/**
* ํ์ ๋ชฉ๋ก ์กฐํ
*
* @return ํ์ ๋ชฉ๋ก
* @throws SQLException
*/
public List<Student> selectList() throws SQLException {
Statement stmt = null;
ResultSet rs = null;
List<Student> students = null;
try {
stmt = connection.createStatement();
rs = stmt.executeQuery(
"SELECT STUDENT_NO, DEPARTMENT, STUDENT_NAME, GRADE, GENDER, AGE, PHONE_NUMBER, ADDRESS " +
" FROM STUDENT " +
" WHERE STUDENT_NO != 'admin'" +
" ORDER BY STUDENT_NO"
);
students = new ArrayList<>();
while (rs.next()) {
students.add(new Student()
.setStudentNo(rs.getString("STUDENT_NO"))
.setDepartment(rs.getString("DEPARTMENT"))
.setStudentName(rs.getString("STUDENT_NAME"))
.setGrade(rs.getInt("GRADE"))
.setGender(rs.getString("GENDER"))
.setAge(rs.getInt("AGE"))
.setPhoneNumber(rs.getString("PHONE_NUMBER"))
.setAddress(rs.getString("ADDRESS"))
);
}
return students;
} catch (SQLException e) {
throw e;
} finally {
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
} catch (SQLException e) {
}
}
}
}
|
cs |
Connection ๊ฐ์ฒด ์ฃผ์
StudentDao์์๋ ServletContext์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ ์ธ๋ถ๋ก๋ถํฐ Connection ๊ฐ์ฒด๋ฅผ ์ฃผ์ ๋ฐ๊ธฐ ์ํ ์ธ์คํด์ค ๋ณ์์ setter()๊ฐ ํ์ํ๋ค.
Connection connection;
public void setConnection(Connection connection) {
this.connection = connection;
}
selectList()๊ฐ ํธ์ถ๋๊ธฐ ์ ์ Connection ๊ฐ์ฒด๊ฐ ๋จผ์ ์ค์ ๋์ด์ผ ํ๋ค.
์ด๋ ๊ฒ ํ์ํ ๊ฐ์ฒด๋ฅผ ์ธ๋ถ๋ก๋ถํฐ ์ฃผ์ ๋ฐ๋ ๊ฒ์ '์์กด์ฑ ์ฃผ์ (DI, Dependency Injection)' ๋๋ '์ญ์ ์ด(IoC, Inversion of Control)'์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
ํ์ ๋ชฉ๋ก ์๋ธ๋ฆฟ์์ DAO ์ฌ์ฉํ๊ธฐ
๋ค์์ ํ์ ๋ชฉ๋ก ์์ฒญ์ ์ฒ๋ฆฌํ๋ StudentListServlet.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
|
@WebServlet("/student/list")
public class StudentListServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
ServletContext sc = this.getServletContext();
// ServletContext์ ์ ์ฅ๋ DB ์ปค๋ฅ์
๊ฐ์ฒด ์ฌ์ฉ
conn = (Connection) sc.getAttribute("conn");
stmt = conn.createStatement();
rs = stmt.executeQuery(
"SELECT STUDENT_NO, DEPARTMENT, STUDENT_NAME, GRADE, GENDER, AGE, PHONE_NUMBER, ADDRESS FROM STUDENT" +
" ORDER BY STUDENT_NO");
resp.setContentType("text/html; charset=UTF-8");
List<Student> students = new ArrayList<>();
while (rs.next()) {
students.add(new Student()
.setStudentNo(rs.getString("STUDENT_NO"))
.setDepartment(rs.getString("DEPARTMENT"))
.setStudentName(rs.getString("STUDENT_NAME"))
.setGrade(rs.getInt("GRADE"))
.setGender(rs.getString("GENDER"))
.setAge(rs.getInt("AGE"))
.setPhoneNumber(rs.getString("PHONE_NUMBER"))
.setAddress(rs.getString("ADDRESS"))
);
}
req.setAttribute("students", students);
RequestDispatcher rd = req.getRequestDispatcher(
"/student/StudentList.jsp"
);
rd.include(req, resp);
} catch (SQLException e) {
req.setAttribute("error", e);
RequestDispatcher rd = req.getRequestDispatcher("/Error.jsp");
rd.forward(req, resp);
} finally {
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
|
cs |
์ด ์๋ธ๋ฆฟ์ doGet()์ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ๋ค.
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
|
@WebServlet("/student/list")
public class StudentListServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try {
ServletContext sc = this.getServletContext();
Connection conn = (Connection) sc.getAttribute("conn");
StudentDao studentDao = new StudentDao();
studentDao.setConnection(conn);
req.setAttribute("students", studentDao.selectList());
resp.setContentType("text/html; charset=UTF-8");
RequestDispatcher rd = req.getRequestDispatcher(
"/student/StudentList.jsp"
);
rd.include(req, resp);
} catch (SQLException e) {
req.setAttribute("error", e);
RequestDispatcher rd = req.getRequestDispatcher("/Error.jsp");
rd.forward(req, resp);
}
}
}
|
cs |
StudentDao๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ setter๋ฅผ ๋จผ์ ํธ์ถํด์ ServletContext์์ ๊บผ๋ธ DB ์ปค๋ฅ์ ๊ฐ์ฒด๋ฅผ ์ฃผ์ ํ์๋ค.
StudentListServlet์ DB ๊ด๋ จ ์ฝ๋๊ฐ ๋ชจ๋ StudentDao์ ์ด๊ด๋์๋ค.
StudentListServlet์ ์ปจํธ๋กค๋ฌ๋ก์จ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ํด ์ด๋ค Dao๋ฅผ ์ฌ์ฉํ๊ณ ์ด๋ JSP๋ก ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ด์ผ ํ๋์ง ์กฐ์ ํ๋ค.
์ ๊ท ํ์ ๊ฐ์ (StudentAddServlet), ํ์ ์ญ์ (StudentDeleteServlet), ํ์ ์ ๋ณด ์์ (StudentUpdateServlet), ๋ก๊ทธ์ธ(LogInServlet)๋ ๊ฐ์ ๋ฐฉ์์ผ๋ก DAO๋ฅผ ๋ถ๋ฆฌํ๋ฉด ๋๋ค.
์ด๋ก์จ ํ์๊ฐ์ ์์ ๋ MVC ์ํคํ ์ฒ์ ๋ฐ๋ผ ์๋ธ๋ฆฟ์ ์ปจํธ๋กค๋ฌ, Dao๋ ๋ชจ๋ธ, JSP๋ ๋ทฐ ์ญํ ์ ์ํํ๊ฒ ๋์๋ค.
- ๊ด๋ จ ๊ธ
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (1) ํ์ ๋ชฉ๋ก ์กฐํ
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (2) ํ์ ๊ฐ์
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (3) ํ์ ์ ๋ณด ์์
- [IntelliJ] ํ์๊ฐ์ ์์ (MVC) - (4) ๋ทฐ(JSP) ๋ถ๋ฆฌํ๊ธฐ
- [IntelliJ] ํ์๊ฐ์ ์์ (MVC) - (5) ๋ก๊ทธ์ธ/๋ก๊ทธ์์(HttpSession)
- [IntelliJ] ํ์๊ฐ์ ์์ (MVC) - (6) ํ์ ์ญ์
- [IntelliJ] ํ์๊ฐ์ ์์ (MVC) - (7) DAO ๋ถ๋ฆฌํ๊ธฐ
'Javaยท๏ปฟServletยท๏ปฟJSP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Tomcat ์๋ฒ DataSource ์ค์ ๋ฐฉ๋ฒ (+JNDI) (1) | 2020.02.17 |
---|---|
ServletContextListener๋ก DB ์ปค๋ฅ์ , DAO ๊ณต์ ๊ฐ์ฒด ๊ด๋ฆฌํ๊ธฐ (0) | 2020.02.15 |
[JSP] JSTL ํ์ฉ ๋ฐฉ๋ฒ - JSP์์ ์๋ฐ ์ฝ๋ ์ ๊ฑฐ (0) | 2020.02.15 |
[JSP] JSTL ์ฌ์ฉ ๋ฐฉ๋ฒ - ์ฃผ์ ํ๊ทธ ๋ฌธ๋ฒ ์ ๋ฆฌ (4) | 2020.02.15 |
JSP - EL ํํ์ ๋ฌธ๋ฒ๊ณผ ์ฌ์ฉ ๋ฐฉ๋ฒ (3) | 2020.02.13 |
๋๊ธ