Web programming

(22.11.17)Web ํ”„๋กœ๊ทธ๋ž˜๋ฐ: ํšŒ์›์ •๋ณด ๋ฆฌ์ŠคํŠธ ๋ณด๊ธฐ,์ƒ์„ธ ๋ณด๊ธฐ, ์ˆ˜์ •ํ•˜๊ธฐ(jsp, jsp:Bean ์•ก์…˜ํƒœ๊ทธ)

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

์ €์žฅ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ํšŒ์› ์ •๋ณด ๋ฆฌ์ŠคํŠธ ๋งŒ๋“ค๊ธฐ

(๋ชจ๋ธ ํด๋ž˜์Šค์™€ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์–ด์ œ ๋‚ด์šฉ์„ ์ฐธ๊ณ )

 

memJoin.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
77
78
79
80
81
82
83
84
85
86
87
88
<%@ page contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ํšŒ์›๊ฐ€์ž… </title>
</head>
<style type="text/css">
 main { width:fit-content; border:1px solid black; padding:1em;
      margin:0 auto; }
 h1 { text-align: center; }
</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 formCheck(){
        var name = $('#name').val();
        var gender ='';
        var birth = $('#birth').val();
        var email = $('#email').val();
        var exp = $('#exp').val();
        var subject ='';
        var inv = $('#inv').val();
        
        $('input[name=gender]').each(function(index, item){
            if(item.checked) {
                gender = $(item).val();
            }
        });
        $('input[name=subject]').each(function(index, item){
            if(item.checked) {
                subject = $(item).val();
            }
        });
        
        if(name==''|| gender==''|| birth==''|| email=='' ||exp=='' 
                || subject=='' || inv==''){
            alert('๋ชจ๋“  ํ•ญ๋ชฉ ์ž…๋ ฅ์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.');
            return false;
        }
        //alert($('#memberAdd').serialize());
        return join();    
    }
    
    function join(){
        console.log('join() ์‹œ์ž‘');
        $.ajax({
            url : 'joinProc.jsp',
            method:'post',
            data: $('#memberAdd').serialize(),
            cache:false,
            dataType:'json',
            success:function(res){
                alert(res.added ?'ํšŒ์›์ •๋ณด ์ถ”๊ฐ€ ์„ฑ๊ณต':'์ •๋ณด์ถ”๊ฐ€ ์‹คํŒจ');
            },
            error : function(xhr,status,err){
                alert('์—๋Ÿฌ:' + err);
            }
        });
        return false;
    }
</script>
<body>
<main>
<h1>ํšŒ์› ๊ฐ€์ž…</h1>
<form id = 'memberAdd' onsubmit="return formCheck();">
   <div><label>*์ด ๋ฆ„</label><input id="name" type="text" name="name"></div>
   <div><label id="gender">*์„ฑ ๋ณ„</label></div>
   <div><label>๋‚จ ์ž</label><input type="radio" name="gender" value="๋‚จ์ž"></div>
   <div><label>์—ฌ ์ž</label><input type="radio" name="gender" value="์—ฌ์ž"></div>
   <div><label>*์ƒ ์ผ</label><input id="birth" type="date" name="birth"></div>
   <div><label>*๋ฉ” ์ผ</label><input type="text" id="email" name="email"></div>
   <div><label>*๊ฒฝ๋ ฅ ์—ฐ์ˆ˜</label><input id="exp" type="number" name="exp" value="0"></div>
   <div><label id="subject">*๊ด€์‹ฌ ๊ณผ๋ชฉ</label></div>
   <div><input type="checkbox" name="subject" value="Java">Java</div>
   <div><input type="checkbox" name="subject" value="Python">Python</div>
   <div><input type="checkbox" name="subject" value="Spring">Spring</div>
   <div><input type="checkbox" name="subject" value="Android">Android</div>
   <div><input type="checkbox" name="subject" value="c++">c++</div>
   <textarea id="inv" name="inv" rows="5" cols="20" placeholder="๊ฐœ์ธ ์†Œ๊ฐœ ํ•„์ˆ˜ ์ž‘์„ฑ"></textarea>
   <div><button type="submit" >์ € ์žฅ</button></div>
   <div><button type="reset">์ทจ์†Œ</button></div>
   [<a href="memList.jsp"> ๋“ฑ๋ก๋œ ํšŒ์› ๋ฆฌ์ŠคํŠธ ๋ณด๊ธฐ </a>]
</form>
</main>
</body>
</html>
cs

๋“ฑ๋ก๋œ ํšŒ์› ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋งํฌ๋ฅผ ๋‹ฌ์•„์ค€๋‹ค.

 

joinProc.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%@page import="org.json.simple.JSONObject"%>
<%@page import="com.ezen.web.hello.MemberService"%>
<%@page import="java.util.*"%>
<%@page import="com.ezen.web.hello.Member"%>
<%@ page contentType="application/json; charset=utf-8"
    pageEncoding="utf-8"%>
<jsp:useBean id="mem" class= "com.ezen.web.hello.Member">
    <jsp:setProperty name="mem" property="*"/>
</jsp:useBean>
 
<jsp:useBean id="svc" class= "com.ezen.web.hello.MemberService" scope="session"/>
<jsp:setProperty name="svc" property="member" value="<%=mem %>"/>
 
    <%
        boolean added = svc.addMember();
        JSONObject jsobj = new JSONObject();
        jsobj.put("added", added);
    %>
    
    <%=    jsobj.toJSONString() %>
cs

 

MemberService.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
77
78
import java.io.*;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
 
public class MemberService {
 
    private Member member;
    private HttpServletRequest request;
    private String fpath = "D:/java_test/member.ser";
       
    public MemberService(){}
 
    public MemberService(HttpServletRequest request)
    {
       this.request = request;
    }
    public void setMember(Member member) {
        this.member = member;
    }
    public boolean addMember() 
    {
       List<Member> list = deserialize();
       Collections.sort(list);
       int num = 1;
       if(list.size()>0) {
           num = list.get(list.size()-1).getNum()+1;
       }
       member.setNum(num);
       list.add(member);
       return serialize(list);
    }
    private boolean serialize(List<Member> list)
    {
       try {
          ObjectOutputStream objOut = new ObjectOutputStream(new FileOutputStream(fpath));
          objOut.writeObject(list);
          objOut.close();
          return true;
       } catch (Exception e) {
          e.printStackTrace();
       }
       return false;
    }
    private List<Member> deserialize()
    {
        File f = new File(fpath);
        List<Member> list = null;
              
        if(!f.exists()) {
            list = new ArrayList<Member>();
        }else {
            try {
                ObjectInputStream objInput = new ObjectInputStream(new FileInputStream(fpath));
                list = (List<Member>)objInput.readObject();
                objInput.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return list;
    }
    public List<Member> getlist() {
 
        return deserialize();
    }
    public Member memDetail() {
        int num = Integer.parseInt(request.getParameter("num"));
        
        List<Member> list = deserialize();
        Member key = new Member(num);
        if(list.contains(key)) {
            list.get(list.indexOf(key));
        }
        Member memb = list.get(list.indexOf(key));
        return memb;
    }
}
 
cs

getList()๋ฉ”์†Œ๋“œ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ ๋‹ค. ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ์—ญ์ง๋ ฌํ™”๋งŒ ํ•˜๋ฉด๋œ๋‹ค.

 

memList.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
<%@page import="com.ezen.web.hello.Member"%>
<%@page import="java.util.List"%>
<%@ page contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<jsp:useBean id="mem" class= "com.ezen.web.hello.Member">
    <jsp:setProperty name="mem" property="*"/>
</jsp:useBean>
<jsp:useBean id="svc" class= "com.ezen.web.hello.MemberService" scope="session"/>
<table>
    <tr><th>๋ฒˆํ˜ธ</th><th>์ด๋ฆ„</th><th>์ƒ์ผ</th><th>์ด๋ฉ”์ผ</th></tr>
<%
    List<Member> list = svc.getlist();
    for(int i =0;i<list.size();i++){
        Member member = list.get(i);
        int num = member.getNum();
        String name = member.getName();
        String birth = member.getBirth();
        String email = member.getEmail();%>
    
        <tr>        
                <td><%=num%></td>
                <td>><%=name%></td>
                <td><%=birth %></td>
                <td><%=email %></td>
        </tr>
    </table>
    <%} %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> ํšŒ์› ์ •๋ณด ๋ณด๊ธฐ </title>
</head>
<body>
[<a href="memJoin.jsp"> ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€ ๊ฐ€๊ธฐ </a>]
</body>
</html>
 
cs

๋ฆฌ์ŠคํŠธ์— ์ €์žฅ๋œ ๊ฐ์ฒด์˜ ๋ฒˆํ˜ธ, ์ด๋ฆ„, ์ƒ์ผ, ์ด๋ฉ”์ผ์„ ์•ก์…˜ํƒœ๊ทธ๋กœ ํ”„๋กœํผํ‹ฐ๋ฅผ set ํ•ด๋†จ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด์˜ getter๋ฅผ ์ด์šฉํ•˜์—ฌ value๋“ค์„ ์ถ”์ถœํ•˜์—ฌ ํ‘œ์‹œํ•ด์ค€๋‹ค.

 

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


๋ชฉ๋ก์—์„œ ํšŒ์›์ด๋ฆ„์„ ํด๋ฆญํ•˜๋ฉด ํ•ด๋‹น ํšŒ์›์˜ ๋ชจ๋“  ์ƒ์„ธ ์ •๋ณด ํ‘œ์‹œํ•˜๊ธฐ

 

์ด๋ฆ„์„ ๋ˆŒ๋Ÿฌ์„œ ์ •๋ณด๋ฅผ ์ž์„ธํžˆ ๋ณด๊ธฐ๋ฅผ ํ•˜๋”๋ผ๋„ ๋™๋ช…์ด์ธ์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ณ ์œ ํ•œ ๋ฒˆํ˜ธ๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์•ผํ•œ๋‹ค.

 

MemberService.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
import java.io.*;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
 
public class MemberService {
 
    private Member member;
    private HttpServletRequest request;
    private String fpath = "D:/java_test/member.ser";
       
    public MemberService(){}
 
    public MemberService(HttpServletRequest request)
    {
       this.request = request;
    }
    public void setMember(Member member) {
        this.member = member;
    }
    public boolean addMember() 
    {
       List<Member> list = deserialize();
       Collections.sort(list);
       int num = 1;
       if(list.size()>0) {
           num = list.get(list.size()-1).getNum()+1;
       }
       member.setNum(num);
       list.add(member);
       return serialize(list);
    }
    private boolean serialize(List<Member> list)
    {
       try {
          ObjectOutputStream objOut = new ObjectOutputStream(new FileOutputStream(fpath));
          objOut.writeObject(list);
          objOut.close();
          return true;
       } catch (Exception e) {
          e.printStackTrace();
       }
       return false;
    }
    private List<Member> deserialize()
    {
        File f = new File(fpath);
        List<Member> list = null;
              
        if(!f.exists()) {
            list = new ArrayList<Member>();
        }else {
            try {
                ObjectInputStream objInput = new ObjectInputStream(new FileInputStream(fpath));
                list = (List<Member>)objInput.readObject();
                objInput.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return list;
    }
    public List<Member> getlist() {
 
        return deserialize();
    }
    public Member memDetail(Member key) {    
        List<Member> list = deserialize();
        if(list.contains(key)) {
            list.get(list.indexOf(key));
        }
        return list.get(list.indexOf(key));
    }
}
cs

memDetail()๋ฉ”์†Œ๋“œ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜์–ด์˜จ key(setNum ๊ฐ’์„ ๊ฐ€์ง„ Member๊ฐ์ฒด)๋กœ ํŒŒ์ผ์— ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ์—ญ์ง๋ ฌํ™”ํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ์— ๋˜‘๊ฐ™์ด key๊ฐ’์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ์ฐพ์•„ ๊ทธ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฆฌํ„ดํ•ด์ค€๋‹ค.

 

memList.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
<%@page import="com.ezen.web.hello.Member"%>
<%@page import="java.util.List"%>
<%@ page contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<jsp:useBean id="mem" class= "com.ezen.web.hello.Member">
    <jsp:setProperty name="mem" property="*"/>
</jsp:useBean>
<jsp:useBean id="svc" class= "com.ezen.web.hello.MemberService" scope="session"/>
<table>
    <tr><th>๋ฒˆํ˜ธ</th><th>์ด๋ฆ„</th><th>์ƒ์ผ</th><th>์ด๋ฉ”์ผ</th></tr>
<%
    List<Member> list = svc.getlist();
    for(int i =0;i<list.size();i++){
        Member member = list.get(i);
        int num = member.getNum();
        String name = member.getName();
        String birth = member.getBirth();
        String email = member.getEmail();%>
    
        <tr>        
                <td><%=num%></td>
                <td><a href="memDetail.jsp?num=<%=num%>"><%=name%></a></td>
                <td><%=birth %></td>
                <td><%=email %></td>
        </tr>
    <%} %>
</table>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> ํšŒ์› ์ •๋ณด ๋ณด๊ธฐ </title>
</head>
<body>
<p>
[<a href="memJoin.jsp"> ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€ ๊ฐ€๊ธฐ </a>]
</body>
</html>
cs

์ด๋ฆ„์„ ๋ˆ„๋ฅด๋ฉด ๋งํฌ๋กœ memDetail.jsp์— num๋ณ€์ˆ˜์— ํ•ด๋‹น ๋ฒˆํ˜ธ๋ฅผ ๋„˜๊ฒจ์ค€๋‹ค.

 

 

memDetail.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
<%@page import="java.util.Arrays"%>
<%@page import="com.ezen.web.hello.Member"%>
<%@page import="java.util.List"%>
<%@ page contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<jsp:useBean id="svc" class= "com.ezen.web.hello.MemberService" scope="session"/>
<jsp:useBean id="key" class= "com.ezen.web.hello.Member">
    <jsp:setProperty name="key" property="*"/>
</jsp:useBean>
<%    
    Member memb = svc.memDetail(key);
    int number = memb.getNum();
    String name = memb.getName();
    String birth = memb.getBirth();
    String email = memb.getEmail();
    String gender = memb.getGender();
    String exp = memb.getExp();
    String[] subject = memb.getSubject();
    String inv = memb.getInv();
    %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ํšŒ์›์ •๋ณด ์ƒ์„ธ๋ณด๊ธฐ </title>
</head>
<body>
<table>
<tr><th>๋ฒˆํ˜ธ</th><th>์ด๋ฆ„</th><th>์ƒ์ผ</th><th>์ด๋ฉ”์ผ</th><th>์„ฑ๋ณ„</th><th>๊ฒฝ๋ ฅ์—ฐ์ˆ˜</th><th>๊ด€์‹ฌ๊ณผ๋ชฉ</th><th>๊ฐœ์ธ ์†Œ๊ฐœ</th></tr>
        <tr>        
                <td><%=number%></td>
                <td><%=name%></td>
                <td><%=birth %></td>
                <td><%=email %></td>
                <td><%=gender %></td>
                <td><%=exp %></td>
                <td><%=Arrays.toString(subject) %></td>
                <td><%=inv %></td>
        </tr>
</table>
</body>
</html>
cs

memList.jsp์—์„œ ๋„˜์–ด์˜จ num์€ key๋ผ๋Š” ๋ณ€์ˆ˜์˜ setNum์œผ๋กœ ๊ฐ’์ด ์ €์žฅ๋œ๋‹ค. key๊ฐ’์„ memDetail()๋ฉ”์†Œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ค€๋‹ค. key๋กœ ์ฐพ์€ Member๊ฐ์ฒด์˜ ๋ชจ๋“  ๋ณ€์ˆ˜๋“ค์„ ๋‚˜ํƒ€๋‚ด์–ด ์ƒ์„ธ๋ณด๊ธฐ๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค.

 

 

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


์ •๋ณด ์ˆ˜์ •ํ•˜๊ธฐ

์ƒ์„ธ๋ณด๊ธฐ์—์„œ ์ˆ˜์ • ๋ฒ„ํŠผ์„ ๋งŒ๋“ค๊ณ  ์ˆ˜์ •์„ ๋ˆ„๋ฅด๋ฉด ๋ฉ”์ผ๊ณผ ๊ฒฝ๋ ฅ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

์ˆ˜์ • ํผ์—์„œ ์ˆ˜์ •์„ ๋ˆ„๋ฅด๋ฉด ์„œ๋ฒ„์ธก ๋ฐ์ดํ„ฐ์— ์ ์šฉ

์ˆ˜์ • ์„ฑ๊ณต/ ์‹คํŒจ alert ๋ฉ”์‹œ์ง€ ํ™•์ธ ํ›„  ์ƒ์„ธํŽ˜์ด์ง€๋กœ ์ด๋™

 

memEdit.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
<%@page import="java.util.Arrays"%>
<%@page import="com.ezen.web.hello.Member"%>
<%@page import="java.util.List"%>
<%@ page contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    <jsp:useBean id="svc" class= "com.ezen.web.hello.MemberService" scope="session"/>
<jsp:useBean id="key" class= "com.ezen.web.hello.Member">
    <jsp:setProperty name="key" property="*"/>
</jsp:useBean>
 
<% Member member = svc.memDetail(key);     %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> ํšŒ์› ์ •๋ณด ์ˆ˜์ • </title>
<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 memUpdate()
    {
        var serData = $('#memEdit').serialize();
        $.ajax({
            url:'memUpdate.jsp'
            method:'post',
            data: serData,
            cache : false,
            dataType: 'json',
            success: function(res){ 
                if(res.updated){
                    alert(res.updated ? '์ˆ˜์ • ์„ฑ๊ณต':'์—๋Ÿฌ'); 
                    location.href ='memDetail.jsp?num=<%=member.getNum()%>';
                }
            },
            error : function(xhr,status,err){
                alert(err);
            }
        });
        return false;
    }
</script>
</head>
<body>
<h3>ํšŒ์›์ •๋ณด ์ˆ˜์ •</h3>
<form id="memEdit" onsubmit="return memUpdate();">
<input type="hidden" name="num" value="<%=member.getNum()%>">
<div><label>๋ฒˆํ˜ธ:</label><span><%=member.getNum()%></span></div>
<div><label>์ด๋ฆ„:</label><span><%=member.getName()%></span></div>
<div><label>์ƒ์ผ:</label><span><%=member.getBirth()%></span></div>
<div><label>๋ฉ”์ผ:</label><input type="text" id="email" name="email" value="<%=member.getEmail()%>"></div>
<div><label>์„ฑ๋ณ„:</label><span><%=member.getGender()%></span></div>
<div><label>๊ฒฝ๋ ฅ:</label><input type="number" id="exp" name="exp" value="<%=member.getExp()%>"></div>
<div><label>๊ด€์‹ฌ๊ณผ๋ชฉ:</label><span><%=Arrays.toString(member.getSubject())%></span></div>
<div><label>๊ฐœ์ธ์†Œ๊ฐœ:</label><span><%=member.getInv() %></span></div>
<div class="btn"><button type="reset">์ทจ์†Œ</button>
     <button type="submit">์ ์šฉ</button>
     [<a href="memList.jsp">๋ชฉ๋ก</a>]
</div>
</form>
</body>
</html>
cs

memUpdate.jsp์—์„œ ๋„˜์–ด์˜จ boolean ๊ฐ’์ด ์ฐธ์ด๋ฉด ์ˆ˜์ • ์„ฑ๊ณต์„ ๊ฑฐ์ง“์ด๋ฉด ์—๋Ÿฌ๋ฅผ ๋„์šด๋‹ค.

์ˆ˜์ •์ด ์„ฑ๊ณต๋˜๋ฉด ํ•ด๋‹น ๋ฒˆํ˜ธ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ํšŒ์›์˜ ์ƒ์„ธ์ •๋ณด๋ณด๊ธฐ๋กœ ๋งํฌ๋ฅผ ๋‹ฌ์•„์ค€๋‹ค.

 

๋ฉ”์ผ๊ณผ ๊ฒฝ๋ ฅ๋งŒ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ์—ˆ๊ณ  ์ ์šฉ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด onsubmit ์— memUpdate() ํ•จ์ˆ˜๊ฐ€ ๋Œ์•„๊ฐ€๊ฒŒ ํ•ด์ค€๋’ค ํผ๊ณผ ajax ํ•จ์ˆ˜ ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ™์ด ๋„˜์–ด๊ฐ€์ง€ ์•Š๊ฒŒ return false๋กœ ํ•ด์ค€๋‹ค.

 

 

memUpdate.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%@page import="org.json.simple.JSONObject"%>
<%@ page contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    
<jsp:useBean id="key" class= "com.ezen.web.hello.Member">
    <jsp:setProperty name="key" property="*"/>
</jsp:useBean>
 
<jsp:useBean id="svc" class= "com.ezen.web.hello.MemberService" scope="session"/>
 
 
    <%
    boolean updated = svc.updateMember(key);
    JSONObject jsObj = new JSONObject();
    jsObj.put("updated", updated);
    %>
    <%=jsObj.toJSONString()%>
cs

key๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ํ•˜์—ฌ MemberService ํด๋ž˜์Šค์—์„œ updateMember ๋ฉ”์†Œ๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ boolean๊ฐ’์œผ๋กœ ๋ฐ›์•„์„œ json๊ฐ์ฒด์— ๋‹ด์•„์„œ memEdit.jsp์— updated๋กœ ๋ณด๋‚ธ๋‹ค.

 

MemberService.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
import java.io.*;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
 
public class MemberService {
 
    private Member member;
    private HttpServletRequest request;
    private String fpath = "D:/java_test/member.ser";
       
    public MemberService(){}
 
    public MemberService(HttpServletRequest request)
    {
       this.request = request;
    }
    public void setMember(Member member) {
        this.member = member;
    }
    public boolean addMember() 
    {
       List<Member> list = deserialize();
       Collections.sort(list);
       int num = 1;
       if(list.size()>0) {
           num = list.get(list.size()-1).getNum()+1;
       }
       member.setNum(num);
       list.add(member);
       return serialize(list);
    }
    private boolean serialize(List<Member> list)
    {
       try {
          ObjectOutputStream objOut = new ObjectOutputStream(new FileOutputStream(fpath));
          objOut.writeObject(list);
          objOut.close();
          return true;
       } catch (Exception e) {
          e.printStackTrace();
       }
       return false;
    }
    private List<Member> deserialize()
    {
        File f = new File(fpath);
        List<Member> list = null;
              
        if(!f.exists()) {
            list = new ArrayList<Member>();
        }else {
            try {
                ObjectInputStream objInput = new ObjectInputStream(new FileInputStream(fpath));
                list = (List<Member>)objInput.readObject();
                objInput.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return list;
    }
    public List<Member> getlist() {
 
        return deserialize();
    }
    public Member memDetail(Member key) {    
        List<Member> list = deserialize();
        if(list.contains(key)) {
            list.get(list.indexOf(key));
        }
        return list.get(list.indexOf(key));
    }
    public boolean updateMember(Member newMember)
    {
        List<Member> list = deserialize();
        if(list.contains(newMember)) {
            Member m = list.get(list.indexOf(newMember));
            m.setEmail(newMember.getEmail());
            m.setExp(newMember.getExp());
            return serialize(list);
        }
        System.err.println("์ˆ˜์ •์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.");
        return false;
    }
}
cs

Member ๊ฐ์ฒด๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์•„ ๋ฆฌ์ŠคํŠธ์—์„œ ํŒŒ๋ผ๋ฏธํ„ฐ์™€ ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ์ฐพ์€๋’ค ์–ป์–ด์˜จ ์ด๋ฉ”์ผ๊ณผ ๊ฒฝ๋ ฅ์—ฐ์ˆ˜๋ฅผ setํ•ด์ค€๋‹ค. ์ˆ˜์ • ํ›„ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‹ค์‹œ ์ง๋ ฌํ™” ํ•ด์ค€๋‹ค.

 

 

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

๋Œ“๊ธ€