- ๊ด๋ จ ๊ธ
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (1) ํ์ ๋ชฉ๋ก ์กฐํ
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (2) ํ์ ๊ฐ์
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (3) ํ์ ์ ๋ณด ์์
- [IntelliJ] ํ์๊ฐ์ ์์ (MVC) - (4) ๋ทฐ(JSP) ๋ถ๋ฆฌํ๊ธฐ
[IntelliJ] JAVA ์๋ธ๋ฆฟ + MySQL ํ์๊ฐ์ ์์ - (3) ํ์ ์ ๋ณด ์์
ํ์ ์์ธ ์ ๋ณด ๋งํฌ ์ถ๊ฐ
ํ์ ๋ชฉ๋ก ํ์ด์ง์ ํ์์ ์์ธ ์ ๋ณด๋ฅผ ์์ฒญํ๋ ๋งํฌ๋ฅผ ์ถ๊ฐํ๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
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>");
|
cs |
ํ์ ์์ธ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๋ ์๋ธ๋ฆฟ์ URL์ '/student/update'๋ก ํ ๊ฒ์ด๋ฏ๋ก href='update'๋ก ์ง์ ํด์ฃผ๊ณ ์์ธ ์ ๋ณด๋ฅผ ์กฐํํ๋ ค๋ฉด ํ๋ฒ์ด ํ์ํ๋ฏ๋ก ?student_no=๋ฅผ ๋ถ์ฌ ๋งค๊ฐ๋ณ์๋ฅผ ํฌํจ์ํจ๋ค.
ํ์ ์์ธ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๋ ์๋ธ๋ฆฟ ๊ตฌํ
StudentUpdateServlet ํด๋์ค๋ฅผ ๋ง๋ค๊ณ doGet() ๋ฉ์๋๋ฅผ overrideํ์ฌ ํ์ ์์ธ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
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
|
@WebServlet("/student/update")
public class StudentUpdateServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// context init 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" +
" WHERE STUDENT_NO = " + req.getParameter("student_no")
);
rs.next();
resp.setContentType("text/html; charset=UTF-8");
PrintWriter out = resp.getWriter();
out.println("<html><head><title>ํ์์ ๋ณด</title></head>");
out.println("<body><h1>ํ์์ ๋ณด</h1>");
out.println("<form action='update' method='post'>");
out.println("ํ๋ฒ: <input type='text' name='student_no' value='" + req.getParameter("student_no") + "' readonly><br>");
out.println("ํ๊ณผ: <input type='text' name='department' value='" + rs.getString("DEPARTMENT") + "'><br>");
out.println("์ด๋ฆ: <input type='text' name='student_name' value='" + rs.getString("STUDENT_NAME") + "'><br>");
out.println("ํ๋
: <input type='text' name='grade' value='" + rs.getInt("GRADE") + "' readonly><br>");
out.println("์ฑ๋ณ: <input type='text' name='gender' value='" + rs.getString("GENDER") + "' readonly><br>");
out.println("๋์ด: <input type='text' name='age' value='" + rs.getInt("AGE") + "' readonly><br>");
out.println("์ ํ๋ฒํธ: <input type='text' name='phone_number' value='" + rs.getString("PHONE_NUMBER") + "'><br>");
out.println("์ฃผ์: <input type='text' name='address' value='" + rs.getString("ADDRESS") + "'><br>");
out.println("<input type='submit' value='์์ '>");
out.println("<input type='button' value='์ทจ์' onClick='location.href=\"list\"'>");
out.println("</form></body></html>");
} catch (ClassNotFoundException e) {
throw new ServletException(e);
} catch (SQLException 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 |
WebServlet ์ด๋ ธํ ์ด์ ์ ์ด์ฉํด ์๋ธ๋ฆฟ URL์ ์ง์ ํ๋ค.
ํ์ ๋ชฉ๋ก ์กฐํ ์๋ธ๋ฆฟ๊ณผ ๋ฌ๋ฆฌ Context parameter๋ฅผ ์ฌ์ฉํด์ JDBC ๋๋ผ์ด๋ฒ๋ฅผ ๋ก๋ฉํ๊ณ ์ฐ๊ฒฐํ์๋ค.
์ฐธ๊ณ : Servlet init parameter์ Context init parameter๋ฅผ ์ด์ฉํด DB ์ฐ๊ฒฐ ์ ๋ณด ๊ด๋ฆฌํ๊ธฐ
- Context Parameter(์ปจํ ์คํธ ๋งค๊ฐ๋ณ์)๋ก web.xml์ DB ์ฐ๊ฒฐ ์ ๋ณด ๊ด๋ฆฌํ๊ธฐ
์์ฒญ ๋งค๊ฐ๋ณ์๋ก ๋์ด์จ ํ๋ฒ(student_no)์ผ๋ก ํ์ ์ ๋ณด๋ฅผ ์ง์ํ๊ณ ํ ๋ช ์ ํ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ฏ๋ก next()๋ฅผ ํ ๋ฒ๋ง ํธ์ถํ๋ค.
์ถ๋ ฅ HTML์ ํ์ ์์ธ ํ์ด์ง์์ ๋ฐ๋ก ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋๋ก <form> ํํ๋ก ๋ง๋ ๋ค. ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ ํ๋๋ readonly ์์ฑ์ ์ถ๊ฐํด์ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์ค์ ํ๋ค.
'์ทจ์' ๋ฒํผ์ ๋ค์ ํ์ ๋ชฉ๋ก์ผ๋ก ๋์๊ฐ ์ ์๋๋ก onClick ์์ฑ์ location.href='list' ์คํฌ๋ฆฝํธ๋ฅผ ์ง์ ํ๋ค.
location์ ์น ๋ธ๋ผ์ฐ์ ์ ํ์ด์ง ์ด๋์ ๊ด๋ฆฌํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ก href ํ๋กํผํฐ์ URL์ ์ค์ ํ๋ค.
์ฆ '์ทจ์' ๋ฒํผ์ ๋๋ฅด๋ฉด /student/list ์์ฒญ์ ๋ฐ์์ํจ๋ค.
<form>์ action ๊ฐ์ ํ์ ์์ธ ํ์ด์ง์ ๋์ผํ URL 'update'๋ฅผ ์ง์ ํ๋ค. method๋ 'post' ์ด๋ฏ๋ก ์๋ฒ์ ์์ฒญํ ๋ POST ์์ฒญ์ ๋ณด๋ธ๋ค.
doPost() ๊ตฌํ
StudentUpdateServlet์ doPost()๋ฅผ overrideํ์ฌ ํ์ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
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
|
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// req.setCharacterEncoding("UTF-8"); // Filter๋ก ์ฒ๋ฆฌ
Connection conn = null;
PreparedStatement pstmt = null;
try {
// context init parameter๋ฅผ ์ด์ฉํ JDBC ์ฐ๊ฒฐ
ServletContext sc = this.getServletContext();
Class.forName(sc.getInitParameter("driver"));
conn = DriverManager.getConnection(
sc.getInitParameter("url"),
sc.getInitParameter("username"),
sc.getInitParameter("password")
);
pstmt = conn.prepareStatement(
"UPDATE STUDENT SET DEPARTMENT = ?, STUDENT_NAME = ?, PHONE_NUMBER = ?, ADDRESS = ? WHERE STUDENT_NO = ?"
);
pstmt.setString(1, req.getParameter("department"));
pstmt.setString(2, req.getParameter("student_name"));
pstmt.setString(3, req.getParameter("phone_number"));
pstmt.setString(4, req.getParameter("address"));
pstmt.setString(5, req.getParameter("student_no"));
pstmt.executeUpdate();
resp.sendRedirect("list");
} catch (ClassNotFoundException | SQLException e) {
throw new ServletException(e);
} finally {
try {
if(pstmt != null) pstmt.close();
if(conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
|
cs |
setCharacterEncoding()์ ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ๋ ๊ณณ๋ง๋ค ์์ฑํด์ผ ํด์ ์ค๋ณต๋๊ธฐ ๋๋ฌธ์ ์ฃผ์ ์ฒ๋ฆฌํ๊ณ Filter๋ก ์ฒ๋ฆฌํ์๋ค.
์ฐธ๊ณ : Servlet Filter ์ฌ์ฉํ๊ธฐ
doGet()์์์ ๋ง์ฐฌ๊ฐ์ง๋ก JDBC ๋๋ผ์ด๋ฒ๋ฅผ ๋ก๋ฉํ๊ณ ์ฐ๊ฒฐํ๋ ๋ถ๋ถ์ Context init parameter๋ฅผ ์ด์ฉํ๋ค.
ํ์ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํด UPDATE๋ฌธ์ ์์ฑํ๋ค.
executeUpdate() ํธ์ถ ํ sendRedirect("list")๋ฅผ ํธ์ถํ์ฌ ํ์ ์ ๋ณด ๋ณ๊ฒฝ ํ ํ์ ๋ชฉ๋ก ํ๋ฉด์ผ๋ก ์ด๋ํ๋ค. ํ์ ๋ชฉ๋ก ํ์ด์ง์์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
- ๊ด๋ จ ๊ธ
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (1) ํ์ ๋ชฉ๋ก ์กฐํ
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (2) ํ์ ๊ฐ์
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (3) ํ์ ์ ๋ณด ์์
- [IntelliJ] ํ์๊ฐ์ ์์ (MVC) - (4) ๋ทฐ(JSP) ๋ถ๋ฆฌํ๊ธฐ
#JAVA MySQL UPDATE
References
์ดํ๊ฐ์ ์๋ฐ ์น ๊ฐ๋ฐ ์ํฌ๋ถ(ํ๋ฆฌ๋ , 2016, ์์ง์)
'Javaยท๏ปฟServletยท๏ปฟJSP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Servlet Filter ์ฌ์ฉํ๊ธฐ (0) | 2020.02.11 |
---|---|
Servlet Init Parameter(์๋ธ๋ฆฟ ์ด๊ธฐํ ๋งค๊ฐ๋ณ์)๋ก web.xml์ DB ์ฐ๊ฒฐ ์ ๋ณด ๊ด๋ฆฌํ๊ธฐ (1) | 2020.02.11 |
[IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (2) ํ์ ๊ฐ์ (0) | 2020.02.09 |
[IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (1) ํ์ ๋ชฉ๋ก ์กฐํ (1) | 2020.02.09 |
@WebServlet ์ด๋ ธํ ์ด์ ์ฃผ์ ์์ฑ ์ ๋ฆฌ (0) | 2020.02.08 |
๋๊ธ