- ๊ด๋ จ ๊ธ
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (1) ํ์ ๋ชฉ๋ก ์กฐํ
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (2) ํ์ ๊ฐ์
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (3) ํ์ ์ ๋ณด ์์
- [IntelliJ] ํ์๊ฐ์ ์์ (MVC) - (4) ๋ทฐ(JSP) ๋ถ๋ฆฌํ๊ธฐ
[IntelliJ] JAVA ์๋ธ๋ฆฟ + MySQL + MVC ํ์๊ฐ์ ์์ - (1) ๋ทฐ(JSP) ๋ถ๋ฆฌํ๊ธฐ
์ด์ ํฌ์คํ ์์ ์์ฑํ๋ ํ์ ๋ชฉ๋ก ์๋ธ๋ฆฟ(StudentListServlet)์ ์ปจํธ๋กค๋ฌ, ๋ชจ๋ธ, ๋ทฐ ์ญํ ์ ๋ชจ๋ ํ๋์์ ๋ด๋นํ๋ค.
์ด๋ฅผ ๊ฐ์ ํ์ฌ StudentListServlet์ผ๋ก๋ถํฐ ์ถ๋ ฅ ๋ถ๋ถ์ ๋ถ๋ฆฌํ์ฌ JSP๋ฅผ ๋ง๋ค ๊ฒ์ด๋ค. ์ถ๋ ฅ์ JSP์์ ๋งก๋๋ค.
ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ฒญ์ด ๋ค์ด์ค๋ฉด StudentListServlet์ ๋ฐ์ดํฐ๋ฅผ ์ค๋น(๋ชจ๋ธ ์ญํ )ํ์ฌ JSP์ ์ ๋ฌ(์ปจํธ๋กค๋ฌ ์ญํ )ํ๋ค. JSP๋ ์๋ธ๋ฆฟ์ด ์ค๋นํ ๋ฐ์ดํฐ๋ก ์น ๋ธ๋ผ์ฐ์ ๋ก ์ถ๋ ฅํ ํ๋ฉด์ ๋ง๋ ๋ค.
VO = DTO
๋ฐ์ดํฐ๋ฅผ JSP์ ์ ๋ฌํ๋ ค๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ด์ ๊ฐ์ฒด๊ฐ ํ์ํ๋ค. ์ด๋ ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ์ ๋ฌํ ์ฉ๋๋ก ์ฌ์ฉํ๋ ๊ฐ์ฒด๋ฅผ Value Object(VO, ๊ฐ ๊ฐ์ฒด) ๋๋ Data Transfer Object(DTO, ๋ฐ์ดํฐ ์์ก ๊ฐ์ฒด)๋ผ๊ณ ํ๋ค.
๋ํ ์ด๋ฌํ ๋ฐ์ดํฐ๋ Business Domain(์ ๋ฌด ์์ญ)์ ๋ฐ์ดํฐ๋ฅผ ํฌํํ๊ธฐ ๋๋ฌธ์ Domain Object(๋๋ฉ์ธ ๊ฐ์ฒด)๋ผ๊ณ ๋ ํ๋ค.
VO ์์ฑ
vo ํจํค์ง์ Student ํด๋์ค๋ฅผ ์์ฑํ๋ค.
Student.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
|
public class Student {
protected String studentNo;
protected String department;
protected String studentName;
protected int grade;
protected String gender;
protected int age;
protected String phoneNumber;
protected String address;
public String getStudentNo() {
return studentNo;
}
public Student setStudentNo(String studentNo) {
this.studentNo = studentNo;
return this;
}
public String getDepartment() {
return department;
}
public Student setDepartment(String department) {
this.department = department;
return this;
}
public String getStudentName() {
return studentName;
}
public Student setStudentName(String studentName) {
this.studentName = studentName;
return this;
}
public int getGrade() {
return grade;
}
public Student setGrade(int grade) {
this.grade = grade;
return this;
}
public String getGender() {
return gender;
}
public Student setGender(String gender) {
this.gender = gender;
return this;
}
public int getAge() {
return age;
}
public Student setAge(int age) {
this.age = age;
return this;
}
public String getPhoneNumber() {
return phoneNumber;
}
public Student setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
return this;
}
public String getAddress() {
return address;
}
public Student setAddress(String address) {
this.address = address;
return this;
}
}
|
cs |
Setter์ ๋ฆฌํด๊ฐ์ Student๋ก ํ์ฌ Setter๋ฅผ ์ฐ์์ ์ผ๋ก ํธ์ถํ์ฌ ๊ฐ์ ํ ๋นํ ์ ์๊ฒ ํ๋ค.
์)
1
2
3
4
5
6
7
8
9
|
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"))
|
cs |
StudentListServlet.java ๋ณ๊ฒฝ
๋ค์๊ณผ ๊ฐ์ด StudentListServlet.java๋ฅผ ๋ณ๊ฒฝํ๋ค.
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
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
|
@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 {
// context parameter๋ฅผ ์ด์ฉํ JDBC ์ฐ๊ฒฐ
ServletContext sc = this.getServletContext();
Class.forName(sc.getInitParameter("driver"));
conn = DriverManager.getConnection(
sc.getInitParameter("url"),
sc.getInitParameter("username"),
sc.getInitParameter("password")
);
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");
/*
๋ทฐ ๋ถ๋ฆฌ๋ฅผ ์ํด ์ถ๋ ฅ ์ฝ๋ ์ฃผ์์ฒ๋ฆฌ
PrintWriter out = servletResponse.getWriter();
out.println("<html><head><title>ํ์ ๋ชฉ๋ก</title></head>");
out.println("<body><h1>ํ์ ๋ชฉ๋ก</h1>");
out.println("<p><a href='add'>์ ๊ท ํ์</a></p>");
while (rs.next()) {
out.println(
rs.getString("STUDENT_NO") + ", " +
rs.getString("DEPARTMENT") + ", " +
"<a href='update?student_no=" + rs.getString("STUDENT_NO") + "'>" +
rs.getString("STUDENT_NAME") + "</a>, " +
rs.getInt("GRADE") + ", " +
rs.getString("GENDER") + ", " +
rs.getInt("AGE") + ", " +
rs.getString("PHONE_NUMBER") + ", " +
rs.getString("ADDRESS") + "<br>");
}
out.println("</body></html>");*/
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 | ClassNotFoundException e) {
throw new ServletException(e);
} finally {
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
|
cs |
๋ณ๊ฒฝ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค.
1) HTML ์ถ๋ ฅ ์ฝ๋ ์ ๊ฑฐ
์ฐ์ HTML์ ์ถ๋ ฅํ๋ ์ฝ๋๋ฅผ ์ ๊ฑฐํ๋ค. ํ์ ๋ชฉ๋ก ํ๋ฉด์ ์์ฑํ๊ณ ์ถ๋ ฅํ๋ ๊ฒ์ StudentList.jsp๊ฐ ๋ด๋นํ ๊ฒ์ด๋ค.
2) JSP์ ์ ๋ฌํ ํ์ ๋ชฉ๋ก ๋ฐ์ดํฐ ์ค๋น
JSP๋ก ์ ๋ฌํ๊ธฐ ์ํด List ๊ฐ์ฒด์ DB์์ ๊ฐ์ ธ์จ ํ์ ๋ชฉ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ด๋๋ค.
3) RequestDispatcher๋ฅผ ์ด์ฉํ forward, include
RequestDispatcher ๊ฐ์ฒด๋ฅผ ์ด์ฉํด JSP๋ก ํ๋ฉด ์์ฑ์ ์์ํ๋ค.
์ด ๊ฐ์ฒด๋ HttpServletRequest์ getRequestDispatcher()๋ฅผ ํตํด ์ป๋๋ค.
getRequestDispatcher()๋ฅผ ํธ์ถํ ๋ ์ด๋๋ก ์์ํ ๊ฒ์ธ์ง ๋งค๊ฐ๋ณ์๋ก ์ง์ ํด์ค์ผํ๋ค.
RequestDispatcher ๊ฐ์ฒด๋ฅผ ์ป์ ํ์๋ foward ํน์ include ๋ฐฉ์์ผ๋ก ์์ํ๋ค.
foward๋ก ์์ํ๋ฉด ์ ์ด๊ถ์ด ๋์ด๊ฐ ํ ๋ค์ ๋์์ค์ง ์๋๋ค.
include๋ก ์์ํ๋ฉด ์์ ์ด ๋๋ ํ ๋ค์ ์ ์ด๊ถ์ด ๋์์จ๋ค.
์ ์ฝ๋์์๋ include ๋ฐฉ์์ผ๋ก StudentList.jsp์ ์์ ์ ์์ํ๋ค.
4) ServletRequest(HttpServletRequest)๋ฅผ ํตํ ๋ฐ์ดํฐ ์ ๋ฌ
StudentListServlet์ HttpServletRequest ๊ฐ์ฒด๋ StudentList.jsp์ ๊ณต์ ๋๊ธฐ ๋๋ฌธ์ request์ ๋ฐ์ดํฐ๋ฅผ ๋ด์๋๋ฉด StudentList.jsp์์ ๊บผ๋ด์ธ ์ ์๋ค.
StudentList.jsp๋ฅผ includeํ ๋ HttpServletRequest์ HttpServletResponse์ ์ธ์คํด์ค๋ฅผ ํจ๊ป ๋๊ฒผ๋ค.
์ฆ StudentListServlet๊ณผ StudentList.jsp๋ request์ response๋ฅผ ๊ณต์ ํ๋ค.
์ด ๋ถ๋ถ์ ์ด์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์๋ค.
ServletRequest๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ค๋ฃจ๋ ๊ธฐ๋ฅ ์ธ์ ์ด๋ค ๊ฐ์ ๋ณด๊ดํ๋ ๋ณด๊ด์ ๊ธฐ๋ฅ๋ ๊ฐ๋๋ค.
setAttribute()๋ฅผ ํธ์ถํด์ ๊ฐ์ ๋ณด๊ดํ ์ ์๊ณ getAttribute()๋ฅผ ํธ์ถํด์ ๊ฐ์ ๊บผ๋ผ ์ ์๋ค.
์ ์ฝ๋์์๋ ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํด์ students(ํ์ ๋ชฉ๋ก)์ StudentList.jsp์ ์ ๋ฌํ๋ค.
StudentList.jsp ์์ฑ
ํ๋ก์ ํธ์ ์น ์ฝํ ์ธ ๋๋ ํ ๋ฆฌ์ student ๋๋ ํ ๋ฆฌ์ StudentList.jsp๋ฅผ ์๋ก ์์ฑํด์ ์์ฑํ๋ค.
StudentList.jsp
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
|
<%@ page import="com.atoz_develop.spms.vo.Student" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>ํ์ ๋ชฉ๋ก</title>
</head>
<body>
<h1>ํ์ ๋ชฉ๋ก</h1>
<p><a href="add">์ ๊ท ํ์</a></p>
<%
List<Student> students = (ArrayList<Student>)request.getAttribute("students");
for(Student student: students) {
%>
<%=student.getStudentNo()%>,
<%=student.getDepartment()%>,
<a href="update?student_no=<%=student.getStudentNo()%>"><%=student.getStudentName()%></a>,
<%=student.getGrade()%>,
<%=student.getGender()%>,
<%=student.getAge()%>,
<%=student.getPhoneNumber()%>,
<%=student.getAddress()%><br>
<%
}
%>
</body>
</html>
|
cs |
page ์ง์์์ import ์์ฑ์ผ๋ก ํ์ํ ํด๋์ค๋ฅผ importํ๋ค.
์ฐธ๊ณ ๋ก page ์ง์์์ import ์์ฑ์ JSP ์์ง์ด ์๋ธ๋ฆฟ ์์ค๋ฅผ ์์ฑํ ๋ ์๋์ ๊ฐ์ด import ์ฝ๋๋ก ๋ณํ๋๋ค.
StudentListServlet์ด ๋๊ฒจ์ค ํ์ ๋ชฉ๋ก ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด๊ธฐ ์ํด request.getAttribute()๋ฅผ ํธ์ถํ์๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฐ๋ณต๋ฌธ๊ณผ ํํ์ <%= %>์ ์ฌ์ฉํด์ ํ์ ๋ชฉ๋ก์ ์ถ๋ ฅํ์๋ค.
์ ์ฒด ์น ํ๋ก์ ํธ๊ฐ ๋์ผํ MVC ์ํคํ ์ฒ๋ฅผ ๊ฐ๋๋ก ํ์ ๊ฐ์ , ํ์ ์ ๋ณด ์์ ์ ์ฒ๋ฆฌํ๋ ์๋ธ๋ฆฟ๋ ์์ ๊ฐ์ด ๋ทฐ๋ฅผ ๋ถ๋ฆฌํ๋ค.
- ๊ด๋ จ ๊ธ
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (1) ํ์ ๋ชฉ๋ก ์กฐํ
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (2) ํ์ ๊ฐ์
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (3) ํ์ ์ ๋ณด ์์
- [IntelliJ] ํ์๊ฐ์ ์์ (MVC) - (4) ๋ทฐ(JSP) ๋ถ๋ฆฌํ๊ธฐ
'Javaยท๏ปฟServletยท๏ปฟJSP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ServletContext๋ก DB ์ปค๋ฅ์ ๊ฐ์ฒด ๊ด๋ฆฌํ๊ธฐ (0) | 2020.02.12 |
---|---|
RequestDispatcher.forward()๋ฅผ ์ด์ฉํ ์๋ฌ ํ์ด์ง ์ถ๋ ฅํ๊ธฐ (0) | 2020.02.12 |
JSP ๊ธฐ๋ณธ ๋ฌธ๋ฒ ์ด ์ ๋ฆฌ - ํ ํ๋ฆฟ ๋ฐ์ดํฐ, JSP ์ ์ฉ ํ๊ทธ, ๋ด์ฅ ๊ฐ์ฒด (2) | 2020.02.11 |
JSP ๊ตฌ๋ ์๋ฆฌ (0) | 2020.02.11 |
Servlet Filter ์ฌ์ฉํ๊ธฐ (0) | 2020.02.11 |
๋๊ธ