Database

(22.11.30)Database : DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฝ‘์•„ MVC๋ฐฉ์‹์œผ๋กœ ์›นํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•˜๊ธฐ, ์‚ฌ์›์ •๋ณด ์ˆ˜์ •ํ•˜๊ธฐ

ํ”„๋กœ๊ทธ๋ž˜๋จธ ์˜ค์›” 2022. 11. 30.

โ—โ—DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฝ‘์•„ ์›นํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•˜๊ธฐโ—โ—

 

 

์ด์šฉ์ž๊ฐ€ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ค‘ '์ด๋ฆ„๊ฒ€์ƒ‰'๊ณผ '๋ถ€์„œ๋ฒˆํ˜ธ' ๊ฒ€์ƒ‰ ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์—ฌ 

๋งŒ์•ฝ ์ด์šฉ์ž๊ฐ€ '๋ถ€์„œ๋ฒˆํ˜ธ'๋ฅผ ์„ ํƒํ–ˆ๋‹ค๋ฉด ์„œ๋ฒ„์ธก์— ๋ถ€์„œ๋ฒˆํ˜ธ ๋ฆฌ์ŠคํŠธ๋ฅผ ์š”์ฒญํ•˜์—ฌ 
์‘๋‹ต(JSONArray ๋ฌธ์ž์—ด)์„ ๋ฐ›์•„์„œ ' keyword' ๋ฐ•์Šค์— ๋ณด์—ฌ์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฒ€์ƒ‰์„ ํ•˜๋ฉด ์ƒ์„ธ๋ณด๊ธฐ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

 

 

Servlet

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(view).forward(request, response);
      }
   }
}
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
 
public class EmpDAO 
{    
    private Connection conn;
    private Statement stmt;
    private PreparedStatement pstmt;
    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();  
            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> getEmpByDeptno(int deptno)
    {
        getConn();
        
        try {
            this.stmt = conn.createStatement();
            String sql = "SELECT * FROM emp WHERE deptno=" + deptno;
            this.rs = stmt.executeQuery(sql);
            
            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 EmpVO getEmpByEmpno(int empno)
    {
        getConn();
        
        try {
            this.stmt = conn.createStatement();
            String sql = "SELECT * FROM emp WHERE empno="+empno;
            this.rs = stmt.executeQuery(sql);
 
            if(rs.next())
            {
                int eno = rs.getInt("EMPNO");
                String ename = rs.getString("ENAME");
                int deptno = rs.getInt("DEPTNO");
                java.sql.Date hiredate = rs.getDate("HIREDATE");
                float salary = rs.getFloat("SAL");
                
                EmpVO emp = new EmpVO();
                emp.setEmpno(eno);
                emp.setEname(ename);
                emp.setDeptno(deptno);
                emp.setHiredate(hiredate);
                emp.setSal(salary);
                return emp;
            }
        }catch(Exception ex) {
            ex.printStackTrace();
        }finally {
            closeAll();
        }
        return null;
    }
    public EmpVO getEmpByEname(String ename)
    {
        getConn();
        
        try {
            //this.stmt = conn.createStatement();
            String sql = "SELECT * FROM emp WHERE ename=?";
            this.pstmt =conn.prepareStatement(sql);
            pstmt.setString(1, ename);
            //์ฒซ๋ฒˆ์งธ ? ๋‹ค์Œ์— ename์„ ์ง‘์–ด ๋„ฃ์–ด๋ผ. 
            //prepareStatement๊ฐ€ ์•Œ์•„์„œ ' ' ๋ฅผ ๋„ฃ์–ด์„œ ์™„์„ฑ์‹œ์ผœ์ค€๋‹ค.
            
            //this.rs = stmt.executeQuery(sql);
            this.rs = pstmt.executeQuery();
 
            if(rs.next())
            {
                int eno = rs.getInt("EMPNO");
                String insertename = rs.getString("ENAME");
                int deptno = rs.getInt("DEPTNO");
                java.sql.Date hiredate = rs.getDate("HIREDATE");
                float salary = rs.getFloat("SAL");
                
                EmpVO emp = new EmpVO();
                emp.setEmpno(eno);
                emp.setEname(insertename);
                emp.setDeptno(deptno);
                emp.setHiredate(hiredate);
                emp.setSal(salary);
                return emp;
            }
        }catch(Exception ex) {
            ex.printStackTrace();
        }finally {
            closeAll();
        }
        return null;
    }
    
    public List<Integer> getDeptnoList()
    {
        getConn();
        
        try {
            this.stmt = conn.createStatement();
            String sql = "SELECT distinct deptno FROM emp ORDER BY deptno";
            this.rs = stmt.executeQuery(sql);
            
            List<Integer> list = new ArrayList<>();
            while(rs.next())
            {
                int deptno = rs.getInt("DEPTNO");
 
                list.add(deptno);
            }
            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(pstmt!=null) pstmt.close();
            if(conn!=null) conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
cs

164~187 ํ–‰ : ์„œ๋ฒ„์—์„œ ๋ถ€์„œ ๋ฒˆํ˜ธ๋ฅผ ๋ฐ›์•„์˜ค๋Š” ๋ฉ”์†Œ๋“œ

list ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ 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
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
96
97
98
import java.io.*;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.simple.JSONArray;
 
public class EmpService 
{
    private HttpServletRequest request;
    private HttpServletResponse response;
    private String viewPath = "/WEB-INF/jsp/emp";
    
    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 viewPath + "/empList.jsp";
        }
        else if(cmd.equals("findByDeptno"))
        {
            int deptno = Integer.valueOf(request.getParameter("deptno"));
            List<EmpVO> list = getEmpByDeptno(deptno);
            request.setAttribute("list", list);
            return viewPath + "/empList.jsp";
        }
        else if(cmd.equals("getEmpByEmpno"))
        {
            int empno = Integer.valueOf(request.getParameter("empno"));
            EmpVO emp = getEmpByEmpno(empno);
            request.setAttribute("emp", emp);
            return viewPath + "/empDetail.jsp";
        }
        else if(cmd.equals("findByEname"))
        {
            String ename = request.getParameter("ename");
            EmpVO emp = getEmpByEname(ename);
            System.out.println("์„œ๋น„์Šค์‚ฌ๋ฒˆ:"+emp.getEmpno());
            request.setAttribute("emp", emp);
            return viewPath + "/empDetail.jsp";
            
        }
        else if(cmd.equals("getDeptList"))
        {
            String strDeptlist = getDeptList();
            try {
                PrintWriter out = response.getWriter();
                out.print(strDeptlist);
                out.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
    
    public List<EmpVO> getList()
    {
        EmpDAO dao = new EmpDAO();
        List<EmpVO> list = dao.getList();
        return list;
    }
    public List<EmpVO> getEmpByDeptno(int deptno)
    {
        EmpDAO dao = new EmpDAO();
        List<EmpVO> list = dao.getEmpByDeptno(deptno);
        return list;
    }
    public EmpVO getEmpByEmpno(int empno)
    {
        EmpDAO dao = new EmpDAO();
        EmpVO emp = dao.getEmpByEmpno(empno);
        return emp;
    }
    public EmpVO getEmpByEname(String ename) {
        EmpDAO dao = new EmpDAO();
        EmpVO emp = dao.getEmpByEname(ename);
        return emp;    
    }
    public String getDeptList()
    {
        EmpDAO dao = new EmpDAO();
        List<Integer> list = dao.getDeptnoList();
        JSONArray jsArr = new JSONArray();
        for(int i=0;i<list.size();i++)
        {
            jsArr.add(list.get(i));
        }
        return jsArr.toJSONString();
    }
}
cs

50~62ํ–‰ : ๋ถ€์„œ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ ธ์˜ค๋ผ๋Š” cmd ๋ช…๋ น์–ด ๋กœ์ง, 96ํ–‰์—์„œ ๋„˜์–ด์˜จ ๋ฌธ์ž์—ด์„ view๋ฅผ ๋‹ด๋‹นํ•˜๋Š” jsp๋กœ ๋ณด๋‚ด์ค€๋‹ค.

87~97ํ–‰ : EmpDAO ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ทธ๊ณณ์—์„œ ๋ฆฌํ„ด๋œ list๊ฐ์ฒด๋ฅผ ์–ป๊ณ  ๊ทธ ๋ฆฌ์ŠคํŠธ ๊ฐ์ฒด๋ฅผ jsonarray๊ฐ์ฒด์— ๋„ฃ์–ด์„œ ๋ฌธ์ž์—ด๋กœ ๋ฆฌํ„ดํ•œ๋‹ค.

 

 

empList.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
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
<%@ 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>
<style type="text/css">
   a { text-decoration: none; color:blue; }
   form { margin-top:1em;}
</style>
<script src="https://code.jquery.com/jquery-3.6.1.min.js" 
integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous">
</script>
<script type="text/javascript">
   function onSelectChange()
   {
      $('#keyword').val('');
      var cat = $('select[name=category]').val();
      if(cat=='deptno')
      {
         $('input[name=cmd]').val('findByDeptno');//[]์†์„ฑ ์…€๋ ‰ํ„ฐ name์ธ cmd์ธ ์ธํ’‹ ํƒœ๊ทธ
         $('input#keyword').prop('name','deptno'); //prop: ๋™์ ์ธ ๋ณ€๊ฒฝ, ๊ฐ์ฒด์˜ ์†์„ฑ์„ ๊ด€๋ฆฌ
         $.ajax({
            url:'oracle',
            method:'post',
            data:{"cmd":"getDeptList"},
            cache:false,
            dataType:'json',
            success:function(res){
               $('#deptList>option').remove();
               $('#keyword').attr('list','deptList'); 
                //attr: attribute๋Š” ํƒœ๊ทธ์˜ ์†์„ฑ์ด๋ผ๋Š” ๋œป์ด๋‹ค.
               for(var i=0;i<res.length;i++){
                  $('#deptList').append('<option>'+res[i]+'</option>');
               }
            },
            error:function(xhr,status,err){
               alert('์—๋Ÿฌ:'+err);
            }
         });
      }
      else{
         $('#keyword').attr('list','');
         $('#deptList>option').remove();
         $('input[name=cmd]').val('findByEname');
      }
   }
</script>
</head>
<body>
<main>
<h3>์‚ฌ์›์ •๋ณด ๋ชฉ๋ก๋ณด๊ธฐ</h3>
<c:forEach var="emp" items="${list}">
   <div>
      ${emp.empno} 
      <a href="oracle?cmd=getEmpByEmpno&empno=${emp.empno}">${emp.ename}</a>
      ${emp.hiredate} 
      ${emp.sal} 
   </div>
</c:forEach>
<div>
   <form id="searchForm" action="oracle" method="get">
      <input type="hidden" name="cmd" value="findByEname">
      <select name="category" onchange="onSelectChange();">
         <option value="ename">์‚ฌ์›์ด๋ฆ„</option>
         <option value="deptno">๋ถ€์„œ๋ฒˆํ˜ธ</option>
      </select>
      <input id="keyword" type="text" name="ename" list="deptList" autocomplete="off">
      <button type="submit">๊ฒ€์ƒ‰</button>
   </form>
</div>
</main>
<datalist id="deptList"></datalist>
</body>
</html>
cs

attributes : ํƒœ๊ทธ์˜ ์†์„ฑ, htmlํƒœ๊ทธ์˜ ์†์„ฑ์„ ๊ด€๋ฆฌ

properties : ๊ฐ์ฒด์˜ ์†์„ฑ, ๋™์ ์œผ๋กœ ํƒœ๊ทธ์˜ ์†์„ฑ์„ ์ถ”์ถœํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ๋•Œ ์“ฐ์ธ๋‹ค.

 

empDetail.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
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>์‚ฌ์›์ •๋ณด ์ƒ์„ธ๋ณด๊ธฐ</title>
<style>
    main { width: fit-conent; padding:1em; }
    h3 { width:fit-content; text-align: center; }
    label { display:inline-block; margin-right:1em; width:3em; 
        background-color:rgb(200,255,200); text-align:right; padding:0.5em;
    }
    div { margin-top:0.5em; }
</style>
</head>
<body>
<main>
<h3>์‚ฌ์›์ •๋ณด ์ƒ์„ธ๋ณด๊ธฐ</h3>
<div><label>์‚ฌ๋ฒˆ</label> ${emp.empno}</div>
<div><label>์ด๋ฆ„</label> ${emp.ename}</div>
<div><label>๋ถ€์„œ</label> ${emp.deptno}</div>
<div><label>๊ธ‰์—ฌ</label> ${emp.sal}</div>
<div><label>์ž…์‚ฌ</label> ${emp.hiredate}</div>
</main>
</body>
</html>
cs

 

์‹คํ–‰๊ฒฐ๊ณผ :

์ฒซ ์‹คํ–‰ ํ™”๋ฉด

 

SELET ํƒœ๊ทธ๋กœ ์‚ฌ์›์ด๋ฆ„๊ณผ ๋ถ€์„œ๋ฒˆํ˜ธ๋ฅผ ๊ณ ๋ฅผ ์ˆ˜ ์žˆ๋‹ค.

 

 

๋ถ€์„œ๋ฒˆํ˜ธ๋ฅผ ๊ณ ๋ฅด๋ฉด ์„œ๋ฒ„์—์„œ ๋ถ€์„œ๋ฒˆํ˜ธ๋ฅผ ๋ฐ›์•„์™€์„œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ณด์—ฌ์ค€๋‹ค

 

 

๋ถ€์„œ๋ฒˆํ˜ธ 20์œผ๋กœ ๊ฒ€์ƒ‰ํ•œ ๊ฒฐ๊ณผ

 

 

์‚ฌ์› ์ด๋ฆ„์œผ๋กœ ๊ฒ€์ƒ‰


โ—โ—์‚ฌ์›์ •๋ณด ์ˆ˜์ •ํ•˜๊ธฐโ—โ—

 

 

์‚ฌ์›์ •๋ณด ์ƒ์„ธ๋ณด๊ธฐ ํŽ˜์ด์ง€์—์„œ [์ˆ˜์ •] ๋งํฌ๋‚˜ ๋ฒ„ํŠผ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํด๋ฆญ์‹œ ํ˜„์žฌ ์‚ฌ์› ์ •๋ณด๊ฐ€ ์ˆ˜์ •ํผ์— ํ‘œ์‹œ๋˜๋„๋กํ•œ๋‹ค.

์ˆ˜์ •ํผ์—์„œ [์ˆ˜์ •]์„ ํด๋ฆญํ•˜๋ฉด ์˜ค๋ผํด์˜ emp2 ํ…Œ์ด๋ธ”์— ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์ ์šฉ๋˜๊ฒŒ ํ•œ๋‹ค.

์ˆ˜์ •์— ์„ฑ๊ณตํ•˜๋ฉด ํ•ด๋‹น ์‚ฌ์›์ •๋ณด์˜ ์ƒ์„ธ๋ณด๊ธฐ ํŽ˜์ด์ง€์— ํ‘œ์‹œํ•ด์ค€๋‹ค.

์ˆ˜์ • ๋Œ€์ƒ ํ•ญ๋ชฉ : ๋ถ€์„œ๋ฒˆํ˜ธ, ๊ธ‰์—ฌ

 

 

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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
 
public class EmpDAO 
{    
    private Connection conn;
    private Statement stmt;
    private PreparedStatement pstmt;
    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();  
            this.rs = stmt.executeQuery("SELECT * FROM emp2");
            
            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> getEmpByDeptno(int deptno)
    {
        getConn();
        
        try {
            this.stmt = conn.createStatement();
            String sql = "SELECT * FROM emp2 WHERE deptno=" + deptno;
            this.rs = stmt.executeQuery(sql);
            
            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 EmpVO getEmpByEmpno(int empno)
    {
        getConn();
        
        try {
            this.stmt = conn.createStatement();
            String sql = "SELECT * FROM emp2 WHERE empno="+empno;
            this.rs = stmt.executeQuery(sql);
 
            if(rs.next())
            {
                int eno = rs.getInt("EMPNO");
                String ename = rs.getString("ENAME");
                int deptno = rs.getInt("DEPTNO");
                java.sql.Date hiredate = rs.getDate("HIREDATE");
                float salary = rs.getFloat("SAL");
                
                EmpVO emp = new EmpVO();
                emp.setEmpno(eno);
                emp.setEname(ename);
                emp.setDeptno(deptno);
                emp.setHiredate(hiredate);
                emp.setSal(salary);
                return emp;
            }
        }catch(Exception ex) {
            ex.printStackTrace();
        }finally {
            closeAll();
        }
        return null;
    }
    public EmpVO getEmpByEname(String ename)
    {
        getConn();
        
        try {
            //this.stmt = conn.createStatement();
            String sql = "SELECT * FROM emp2 WHERE ename=?";
            this.pstmt =conn.prepareStatement(sql);
            pstmt.setString(1, ename);//์ฒซ๋ฒˆ์งธ ? ๋‹ค์Œ์— ename์„ ์ง‘์–ด ๋„ฃ์–ด๋ผ. prepareStatement๊ฐ€ ์•Œ์•„์„œ ' ' ๋ฅผ ๋„ฃ์–ด์„œ ์™„์„ฑ์‹œ์ผœ์ค€๋‹ค.
            //this.rs = stmt.executeQuery(sql);
            this.rs = pstmt.executeQuery();
 
            if(rs.next())
            {
                int eno = rs.getInt("EMPNO");
                String insertename = rs.getString("ENAME");
                int deptno = rs.getInt("DEPTNO");
                java.sql.Date hiredate = rs.getDate("HIREDATE");
                float salary = rs.getFloat("SAL");
                
                EmpVO emp = new EmpVO();
                emp.setEmpno(eno);
                emp.setEname(insertename);
                emp.setDeptno(deptno);
                emp.setHiredate(hiredate);
                emp.setSal(salary);
                return emp;
            }
        }catch(Exception ex) {
            ex.printStackTrace();
        }finally {
            closeAll();
        }
        return null;
    }
    public boolean updateEmp(EmpVO emp)
    {
        getConn();
        
        try {
            String sql = "UPDATE emp2 SET sal=?, deptno=? WHERE empno=?";
            this.pstmt = conn.prepareStatement(sql);
            pstmt.setFloat(1, emp.getSal());
            pstmt.setInt(2, emp.getDeptno());
            pstmt.setInt(3, emp.getEmpno());
 
            int rows = pstmt.executeUpdate();
 
            return rows>0 ? true : false;
 
        }catch(Exception ex) {
            ex.printStackTrace();
        }finally {
            closeAll();
        }
        return false;
    }
    
    public List<Integer> getDeptnoList()
    {
        getConn();
        
        try {
            this.stmt = conn.createStatement();
            String sql = "SELECT distinct deptno FROM emp ORDER BY deptno";
            this.rs = stmt.executeQuery(sql);
            
            List<Integer> list = new ArrayList<>();
            while(rs.next())
            {
                int deptno = rs.getInt("DEPTNO");
 
                list.add(deptno);
            }
            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(pstmt!=null) pstmt.close();
            if(conn!=null) conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
cs

 

 

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
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
import java.io.*;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
 
public class EmpService 
{
    private HttpServletRequest request;
    private HttpServletResponse response;
    private String viewPath = "/WEB-INF/jsp/emp";
    
    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 viewPath + "/empList.jsp";
        }
        else if(cmd.equals("findByDeptno"))
        {
            int deptno = Integer.valueOf(request.getParameter("deptno"));
            List<EmpVO> list = getEmpByDeptno(deptno);
            request.setAttribute("list", list);
            return viewPath + "/empList.jsp";
        }
        else if(cmd.equals("getEmpByEmpno"))
        {
            int empno = Integer.valueOf(request.getParameter("empno"));
            EmpVO emp = getEmpByEmpno(empno);
            request.setAttribute("emp", emp);
            return viewPath + "/empDetail.jsp";
        }
        else if(cmd.equals("findByEname"))
        {
            String ename = request.getParameter("ename");
            EmpVO emp = getEmpByEname(ename);
            System.out.println("์„œ๋น„์Šค์‚ฌ๋ฒˆ:"+emp.getEmpno());
            request.setAttribute("emp", emp);
            return viewPath + "/empDetail.jsp";
            
        }
        else if(cmd.equals("editEmp"))
        {
            int empno = Integer.valueOf(request.getParameter("empno"));
            EmpVO emp = getEmpByEmpno(empno);
            request.setAttribute("emp", emp);
            return viewPath + "/empEdit.jsp";
        }
        else if(cmd.equals("updateEmp"))
        {
            boolean updated = updateResult();
            JSONObject jsObj = new JSONObject();
            Map<String, Object> map = new HashMap<>();
            map.put("updated", updated);
            sendJSONStr(map);
        
        }
        else if(cmd.equals("getDeptList"))
        {
            String strDeptlist = getDeptList();
            try {
                PrintWriter out = response.getWriter();
                out.print(strDeptlist);
                out.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
 
    public List<EmpVO> getList()
    {
        EmpDAO dao = new EmpDAO();
        List<EmpVO> list = dao.getList();
        return list;
    }
    
    public List<EmpVO> getEmpByDeptno(int deptno)
    {
        EmpDAO dao = new EmpDAO();
        List<EmpVO> list = dao.getEmpByDeptno(deptno);
        return list;
    }
    
    public EmpVO getEmpByEmpno(int empno)
    {
        EmpDAO dao = new EmpDAO();
        EmpVO emp = dao.getEmpByEmpno(empno);
        return emp;
    }
    public EmpVO getEmpByEname(String ename) {
        EmpDAO dao = new EmpDAO();
        EmpVO emp = dao.getEmpByEname(ename);
        return emp;    
    }
    public boolean updateResult() {
        String sEmpno = request.getParameter("empno");
        String sSal = request.getParameter("sal");
        String sDeptno = request.getParameter("deptno");
        
        EmpVO emp = new EmpVO();
        emp.setEmpno(Integer.parseInt(sEmpno));
        emp.setSal(Float.parseFloat(sSal));
        emp.setDeptno(Integer.parseInt(sDeptno));
        
        EmpDAO dao = new EmpDAO();
        return dao.updateEmp(emp);
    }
    public String getDeptList()
    {
        EmpDAO dao = new EmpDAO();
        List<Integer> list = dao.getDeptnoList();
        JSONArray jsArr = new JSONArray();
        for(int i=0;i<list.size();i++)
        {
            jsArr.add(list.get(i));
        }
        return jsArr.toJSONString();
    }
    public void sendJSONStr(Map<String, Object> map){
        JSONObject jsobj = new JSONObject(map);
        String jsStr = jsobj.toJSONString();
        
        try {
            PrintWriter out = response.getWriter();
            out.print(jsStr);
            out.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
cs

 

 

empDetail.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
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>์‚ฌ์›์ •๋ณด ์ƒ์„ธ๋ณด๊ธฐ</title>
<style>
    main { width: fit-conent; padding:1em; }
    h3 { width:fit-content; text-align: center; }
    label { display:inline-block; margin-right:1em; width:3em; 
        background-color:rgb(200,255,200); text-align:right; padding:0.5em;
    }
    div { margin-top:0.5em; }
</style>
</head>
<body>
<main>
<h3>์‚ฌ์›์ •๋ณด ์ƒ์„ธ๋ณด๊ธฐ</h3>
<div><label>์‚ฌ๋ฒˆ</label> ${emp.empno}</div>
<div><label>์ด๋ฆ„</label> ${emp.ename}</div>
<div><label>๋ถ€์„œ</label> ${emp.deptno}</div>
<div><label>๊ธ‰์—ฌ</label> ${emp.sal}</div>
<div><label>์ž…์‚ฌ</label> ${emp.hiredate}</div>
<a href="oracle?cmd=editEmp&empno=${emp.empno}">[์ˆ˜์ •]</a>
</main>
</body>
</html>
cs

 

 

empEdit.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
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
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>์‚ฌ์›์ •๋ณด ์ˆ˜์ •ํ•˜๊ธฐ</title>
<style>
    main { width: fit-conent; padding:1em; }
    h3 { width:fit-content; text-align: center; }
    label { display:inline-block; margin-right:1em; width:3em; 
        background-color:rgb(200,255,200); text-align:right; padding:0.5em;
    }
    div { margin-top:0.5em; }
</style>
<script src="https://code.jquery.com/jquery-3.6.1.min.js" 
integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous">
</script>
<script type="text/javascript">
function updateEmp()
{
    var obj = $('#updateForm').serialize();
    $.ajax({
        url : 'oracle',
        method: 'post',
        data: obj,
        cache : false,
        dataType:'json',
        success:function(res){
            alert(res.updated ? '์ˆ˜์ • ์„ฑ๊ณต' : '์ˆ˜์ • ์‹คํŒจ');
            location.href="oracle?cmd=getEmpByEmpno&empno=${emp.empno}";
        },
        error : function(xhr,status,err){
            alert('์—๋Ÿฌ:' + err);
        }
    });
    return false;
}
</script>
</head>
<body>
<main>
<h3>์‚ฌ์›์ •๋ณด ์ƒ์„ธ๋ณด๊ธฐ</h3>
<form id="updateForm" onsubmit="return updateEmp();">
<input type="hidden" name="cmd" value="updateEmp">
<input type="hidden" name="empno" value="${emp.empno}">
<div><label>์‚ฌ๋ฒˆ</label> ${emp.empno}</div>
<div><label>์ด๋ฆ„</label> ${emp.ename}</div>
<div><label for="deptno">๋ถ€์„œ</label> 
    <input type="text" id="deptno" name="deptno" value="${emp.deptno}" list="deptList">
</div>
<div><label>๊ธ‰์—ฌ</label> <input id="sal" type="number" name="sal" value="${emp.sal }"></div>
<div><label>์ž…์‚ฌ</label> ${emp.hiredate}</div>
<div class="btn">
        <button type="reset">์ทจ์†Œ</button>
        <button type="submit">์ €์žฅ</button>
    </div>
</form>
</main>
</body>
</html>
cs

 

 

 

์‹คํ–‰ ๊ฒฐ๊ณผ : 

 

 

 

 

 

 

๋Œ“๊ธ€