๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ๋ฐฐ์šฐ๊ณ  ์ตํžˆ๊ธฐ +/Web

(77-78)[Web]13-14์ผ์ฐจ: ((JSP))โ–  JAVA Bean(์ž๋ฐ” ๋นˆ) โ– , F_WebApp10, F_WebApp11, F_WebApp12

by ์ข…์ด๋นจ๋Œ€ 2023. 12. 13.
TOP

๋ชฉ์ฐจ

    1. 2023.12.13-14(์ˆ˜-๋ชฉ)

    โ–  JAVA Bean(์ž๋ฐ” ๋นˆ) โ– 

    โ—‹ ๊ฐœ์š”

    - ์ž๋ฐ”๋กœ ์ž‘์„ฑ๋˜์–ด์ง„ ์ปดํฌ๋„ŒํŠธ(๊ฐ์ฒด)๋“ค์„ ์ผ๋ฐ˜์ ์œผ๋กœ ์ผ์ปซ๋Š” ๋ง

    โ—‹ ์‚ฌ์šฉ ๋ชฉ์ 

    - JSP ํŽ˜์ด์ง€์—์„œ \*\*๋กœ์ง ๋ถ€๋ถ„์„ ๋ถ„๋ฆฌ\*\*ํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉ ํ•จ์œผ๋กœ์จ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ตฌ์„ฑ ํšจ์œจ์„ ๋†’์ด๊ธฐ ์œ„ํ•จ  

    โ—‹ JAVA Bean ๋งŒ๋“ค๊ธฐ

    - ์ž๋ฐ” ๋นˆ์€ ์ž๋ฐ” ํด๋ž˜์Šค์ด๋ฏ€๋กœ ์ž๋ฐ” ํด๋ž˜์Šค๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ธฐ๋ณธ ๊ทœ์น™์ด ๊ฐ™๋‹ค.
    
    - ์ž๋ฐ” ๋นˆ์—์„œ๋Š” ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ํ”„๋กœํผํ‹ฐ(Property)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
    
    - ํด๋ž˜์Šค ์„ ์–ธ์€ ใ€Žpublicใ€, ํ”„๋กœํผํ‹ฐ ์„ ์–ธ์€ ใ€Žprivateใ€ ์œผ๋กœ ํ•œ๋‹ค.
    
    - ํ”„๋กœํผํ‹ฐ ๋‹น ํ•˜๋‚˜์˜ getter ์™€ setter๋ฅผ ๊ฐ–๋Š”๋‹ค.
    
    - (๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š”) ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ํฌํ•จํ•œ๋‹ค.
    
    ใ„ด \*\*์‚ฌ์šฉ์ž์ •์˜ ์ƒ์„ฑ์ž๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜ ํ˜•ํƒœ๋กœ ๋งŒ๋“ค๋ ค๋ฉด, ๊ธฐ๋ณธ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์–ด์•ผํ•จ\*\*
    
    - ์ง๋ ฌํ™”ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
    
    ใ„ด \*\*์‹œ๋ฆฌ์–ผ๋ผ์ด์ฆˆ ..\*\*
    
    - POJO(Plane Old Java Object)
    
    ใ„ด \*\*ํŠน์ • ํด๋ž˜์Šค๋ฅผ ์ƒ์†์˜ ๊ฐœ๋…์ด ์ ์šฉ๋˜์ง€ ์•Š์€, ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“  ๊ฒƒ\*\*

    F_WebApp10

    [๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™ ํšŒ์›๊ด€๋ฆฌ ์‹ค์Šต]

    ใ„ดSQL

    ใ„ดใ„ดWebApp10_scott.sql

    SELECT USER
    FROM DUAL;
    --==>> SCOTT
    
    SELECT *
    FROM TAB;
    
    PERGE RECYCLEBIN;
    
    SELECT *
    FROM TBL_MEMBER;
    
    DESC TBL_MEMBER;
    --==>>
    /*
    ์ด๋ฆ„   ๋„?       ์œ ํ˜•           
    ---- -------- ------------ 
    SID  NOT NULL NUMBER       
    NAME          VARCHAR2(30) 
    TEL           VARCHAR2(40) 
    */
    
    TRUNCATE TABLE TBL_MEMBER;
    --==>> Table TBL_MEMBER์ด(๊ฐ€) ์ž˜๋ ธ์Šต๋‹ˆ๋‹ค.
    
    DROP SEQUENCE MEMBERSEQ;
    --==>> Sequence MEMBERSEQ์ด(๊ฐ€) ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    
    CREATE SEQUENCE MEMBERSEQ
    NOCACHE;
    --==>> Sequence MEMBERSEQ์ด(๊ฐ€) ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    
    INSERT INTO TBL_MEMBER(SID,NAME,TEL) VALUES(MEMBERSEQ.NEXTVAL, '๊ฐ•ํ˜œ์„ฑ', '010-1111-1111');
    INSERT INTO TBL_MEMBER(SID,NAME,TEL) VALUES(MEMBERSEQ.NEXTVAL, '๊น€๋™๋ฏผ', '010-2222-2222');
    INSERT INTO TBL_MEMBER(SID,NAME,TEL) VALUES(MEMBERSEQ.NEXTVAL, '์ด์ฃผํ˜•', '010-3333-3333');
    INSERT INTO TBL_MEMBER(SID,NAME,TEL) VALUES(MEMBERSEQ.NEXTVAL, '์—„์žฌ์šฉ', '010-4444-4444');
    INSERT INTO TBL_MEMBER(SID,NAME,TEL) VALUES(MEMBERSEQ.NEXTVAL, '๊น€์ง€๋ฏผ', '010-5555-5555');
    --==>> 1 ํ–‰ ์ด(๊ฐ€) ์‚ฝ์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.*5
    
    SELECT SID, NAME, TEL
    FROM TBL_MEMBER
    ORDER BY SID;
    --==>> 
    /*
    1    ๊ฐ•ํ˜œ์„ฑ    010-1111-1111
    2    ๊น€๋™๋ฏผ    010-2222-2222
    3    ์ด์ฃผํ˜•    010-3333-3333
    4    ์—„์žฌ์šฉ    010-4444-4444
    5    ๊น€์ง€๋ฏผ    010-5555-5555
    */
    
    COMMIT;
    --==>> ์ปค๋ฐ‹ ์™„๋ฃŒ.
    
    --โ—‹ ์ธ์› ์ˆ˜ํ™•์ธ ์ฟผ๋ฆฌ๋ฌธ ๊ตฌ์„ฑ
    SELECT COUNT(*) AS COUNT
    FROM TBL_MEMBER;
    --> ํ•œ ์ค„ ๊ตฌ์„ฑ
    SELECT COUNT(*) AS COUNT FROM TBL_MEMBER
    ;
    --==>> 5

    ใ„ด/WebApp10/src/com/test/

    ใ„ดใ„ดMemberDAO.java

    /* ==========================================
        MemberDAO.java
        - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—‘์…˜ ์ฒ˜๋ฆฌ ์ „์šฉ ๊ฐ์ฒด ํ™œ์šฉ
    =============================================*/
    package com.test;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    
    import com.util.DBConn;
    
    public class MemberDAO
    {
        // ์ฃผ์š” ์†์„ฑ ๊ตฌ์„ฑ
        private Connection conn;
    
        /*
         * public Connection getConn() { return conn; }
         */
    
    
        // ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ -> ์ƒ์„ฑ์ž ํ˜•ํƒœ๋กœ ์ •์˜
        public MemberDAO() throws ClassNotFoundException, SQLException
        {
            conn = DBConn.getConnection();
        }
    
        // ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ๋ฉ”์†Œ๋“œ ์ •์˜
        public int add(MemberDTO dto) throws SQLException
        {
            int result = 0;
    
            String sql = "INSERT INTO TBL_MEMBER(SID,NAME,TEL)"
                    + " VALUES(MEMBERSEQ.NEXTVAL, ?, ?)";
    
            PreparedStatement pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, dto.getName());
            pstmt.setString(2, dto.getTel());
    
            result = pstmt.executeUpdate();
            pstmt.close();
    
            return result;
        }
    
        // ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ ๋ฉ”์†Œ๋“œ ์ •์˜
        public ArrayList<MemberDTO> lists() throws SQLException
        {
            ArrayList<MemberDTO> result = new ArrayList<MemberDTO>();
    
            String sql = "SELECT SID, NAME, TEL FROM TBL_MEMBER ORDER BY SID";
    
            PreparedStatement pstmt = conn.prepareStatement(sql);
    
            ResultSet rs = pstmt.executeQuery();
    
            while(rs.next())
            {
                MemberDTO dto = new MemberDTO();
    
                dto.setSid(rs.getString("SID"));
                dto.setName(rs.getString("NAME"));
                dto.setTel(rs.getString("TEL"));
    
                result.add(dto);
            }
    
            rs.close();
            pstmt.close();
    
            return result;
        }
    
        // ์ „์ฒด ์ธ์› ์ˆ˜ ํ™•์ธ์„ ์œ„ํ•œ ๋ฉ”์†Œ๋“œ ์ •์˜
        public int count() throws SQLException
        {
            int result = 0;
    
            String sql = "SELECT COUNT(*) AS COUNT FROM TBL_MEMBER";
    
            PreparedStatement pstmt = conn.prepareStatement(sql);
    
            ResultSet rs = pstmt.executeQuery();
    
            if(rs.next())
                result = rs.getInt("COUNT");
    
            rs.close();
            pstmt.close();
    
            return result;
        }
    
        // ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์ข…๋ฃŒ ๋‹ด๋‹น ๋ฉ”์†Œ๋“œ ์ •์˜
        public void close() throws SQLException
        {
            DBConn.close();
        }
    }

    ใ„ดใ„ดMemberDTO.java

    /* ==========================================
        MemberDTO.java
        - ๋ฐ์ดํ„ฐ ๋ณด๊ด€ ๋ฐ ์ „์†ก ๊ฐ์ฒด ํ™œ์šฉ
    =============================================*/
    package com.test;
    
    public class MemberDTO
    {
        // ์ฃผ์š” ์†์„ฑ ๊ตฌ์„ฑ
        private String sid, name, tel;
        //-- TBL_MEMBER ์ปฌ๋Ÿผ ๊ตฌ์กฐ
    
        // getter / setter ๊ตฌ์„ฑ
        public String getSid()
        {
            return sid;
        }
    
        public void setSid(String sid)
        {
            this.sid = sid;
        }
    
        public String getName()
        {
            return name;
        }
    
        public void setName(String name)
        {
            this.name = name;
        }
    
        public String getTel()
        {
            return tel;
        }
    
        public void setTel(String tel)
        {
            this.tel = tel;
        }
    
    
    }

    ใ„ด C:\WebStudy\WebApp10\WebContent

    ใ„ดใ„ดMemberinsert.jsp

    <%@page import="com.test.MemberDTO"%>
    <%@page import="com.test.MemberDAO"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%
        // MemberInsert.jsp
        //-- ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ์•ก์…˜ ์ฒ˜๋ฆฌ ํŽ˜์ด์ง€
    
        // ์ด์ „ ํŽ˜์ด์ง€(MemberList.jsp)๋กœ๋ถ€ํ„ฐ ๋„˜์–ด์˜จ ๋ฐ์ดํ„ฐ ์ˆ˜์‹ 
        //-> userName, userTel
    
        request.setCharacterEncoding("UTF-8");
        //-- ํ•œ๊ธ€ ๋ฐ์ดํ„ฐ๊ฐ€ ๊นจ์ง€์ง€ ์•Š๋„๋ก ์ธ์ฝ”๋”ฉ ์„ค์ •
    
        // ์œ„ ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„ ๋ฐ์ดํ„ฐ ์ˆ˜์‹ 
        String userName = request.getParameter("userName");
        String userTel = request.getParameter("userTel");
    
        MemberDAO dao = null;
    
        try
        {
            dao = new MemberDAO();
            // MemberDTO ๊ตฌ์„ฑ
            MemberDTO member = new MemberDTO();
            member.setName(userName);
            member.setTel(userTel);
    
            // dao ์˜ add() ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ -> insert ์ฟผ๋ฆฌ๋ฌธ ์ˆ˜ํ–‰
            dao.add(member);
    
            // ํ•„์š”ํ•˜๋‹ค๋ฉด add()๋ฉ”์†Œ๋“œ์˜ ๋ฐ˜ํ™˜๊ฐ’์„ ๋ฐ›์•„
            // insert ์•ก์…˜์˜ ์ •์ƒ ์ฒ˜๋ฆฌ ์—ฌ๋ถ€ ํ™•์ธ ํ›„ ์ถ”๊ฐ€ ์ฝ”๋“œ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ~!!!
    
        }
        catch(Exception e)
        {
            System.out.println(e.toString());
        }
        finally
        {
            try
            {
                dao.close();
            }
            catch(Exception e)
            {
                System.out.println(e.toString());
            }
        }
    
        // URL ์ฃผ์†Œ๊ฐ€ ์ ํ˜€์žˆ๋Š” ์ชฝ์ง€๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌ
        //-> ์ด ์ฃผ์†Œ๋ฅผ ๋‹ค์‹œ ์š”์ฒญํ•ด์„œ ์ฐพ์•„๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ํ•˜์„ธ์š”~!!!
        //    (๊ทธ๋Ÿผ ์ž…๋ ฅ๊ฐ’์ด ๋ฐ˜์˜๋œ ๊ฒฐ๊ณผ๋ฌผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.)
        response.sendRedirect("MemberList.jsp");
    
        // ์•„๋ž˜ ๋ณด์—ฌ์ฃผ๋Š” ํŽ˜์ด์ง€๋Š” ๋ชจ๋‘ ์‚ญ์ œ
    %>

    ใ„ดใ„ดMemberList.jsp

    <%@page import="com.test.MemberDTO"%>
    <%@page import="com.test.MemberDAO"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%
        StringBuffer str = new StringBuffer();
        MemberDAO dao = null;
    
        String memberCount = "<span id='memberCount'>์ „์ฒด ์ธ์› ์ˆ˜ : ";    // 5๋ช…</span>
    
        try
        {
            dao = new MemberDAO();
    
            memberCount += dao.count() + "๋ช…</span>";
            str.append("<table>");
            str.append("<tr><th>๋ฒˆํ˜ธ</th><th>์ด๋ฆ„</th><th>์ „ํ™”๋ฒˆํ˜ธ</th></tr>");
    
            // MemberDAO์˜ lists() ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ
            //-- ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด <table> ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ ์ƒ์„ฑ
            for(MemberDTO member: dao.lists())
            {
                str.append("<tr>");
                str.append("<td>"+member.getSid()+"</td>");
                str.append("<td>"+member.getName()+"</td>");
                str.append("<td>"+member.getTel()+"</td>");
            }
            str.append("</table>");
        }
        catch(Exception e)
        {
            System.out.println(e.toString());
        }
        finally
        {
            try
            {
                // ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์ข…๋ฃŒ
                dao.close();
            }
            catch(Exception e)
            {
                System.out.println(e.toString());
            }
        }
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>MemberList.jsp</title>
    <!-- <link rel="stylesheet" type="text/css" href="css/main.css"> -->
    <link rel="stylesheet" type="text/css" href="css/style.css">
    <style>
        .errMsg {display:none; color:red;}
    </style>
    
    <script type="text/javascript">
    function formCheck()
    {
        //ํ™•์ธ
        //alert("ํ•จ์ˆ˜ ํ˜ธ์ถœ~!!!");
    
        var userName = document.getElementById("userName");
        var userMsg = document.getElementById("nameMsg");
    
        nameMsg.style.display = "none";
    
        if(userName.value == "")
        {
            nameMsg.style.display = "inline";
            userName.focus();
            return false;
        }
    
        //return false;
        return true;
    }
    </script>
    
    </head>
    <body class="section">
    
    <div>
        <h1>๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™ ํšŒ์›๊ด€๋ฆฌ ์‹ค์Šต</h1>
        <hr>
    </div>
    
    <div class="layout">
        <p>DAO, DTO ๊ฐœ๋… ์ ์šฉ</p>
        <form class="tbl_box" action="MemberInsert.jsp" method="post" onsubmit="return formCheck();">
            <table>
                <tr>
                    <th>์ด๋ฆ„(*)</th>
                    <td>
                        <input type="text" id="userName" name="userName" class="txt">
                        <span class="errMsg" id="nameMsg">์ด๋ฆ„์„ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.</span>
                    </td>
                </tr>
                <tr>
                    <th>์ „ํ™”๋ฒˆํ˜ธ</th>
                    <td>
                        <input type="text" id="userTel" name="userTel" class="txt">
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <button type="submit" id="btnAdd" class="btn" style="width: 200px;">ํšŒ์› ์ถ”๊ฐ€</button>
                    </td>
                </tr>
            </table>
        </form>
        <!-- <div class="tbl_box">
            <span id="memberCount">์ „์ฒด ์ธ์› ์ˆ˜ : 5๋ช…</span><br><br>
            <table>
                <tr>
                    <th>๋ฒˆํ˜ธ</th><th>์ด๋ฆ„</th><th>์ „ํ™”๋ฒˆํ˜ธ</th>
                </tr>
                <tr>
                    <td>1</td>
                    <td>๊ณ ๊ธธ๋™</td>
                    <td>010-1111-1111</td>
                </tr>
                <tr>
                    <td>2</td>
                    <td>๋‘˜๋ฆฌ</td>
                    <td>010-2222-2222</td>
                </tr>
                <tr>
                    <td>3</td>
                    <td>๋„์šฐ๋„ˆ</td>
                    <td>010-3333-3333</td>
                </tr>
                <tr>
                    <td>4</td>
                    <td>ํฌ๋™์ด</td>
                    <td>010-4444-4444</td>
                </tr>
                <tr>
                    <td>5</td>
                    <td>๋งˆ์ด์ฝœ</td>
                    <td>010-5555-5555</td>
                </tr>
            </table>
        </div> -->
        <!-- ์ „์ฒด ์ธ์›์ˆ˜ ํ™•์ธ -->
        <%=memberCount %>
    
        <!-- ๋ฒˆํ˜ธ ์ด๋ฆ„ ์ „ํ™”๋ฒˆํ˜ธ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ๋ฆฌ์ŠคํŠธ ๊ตฌ์„ฑ -->
        <%=str.toString() %>
    </div>
    
    
    
    </body>
    </html>

    F_WebApp11

    [์„ฑ์  ๋ฆฌ์ŠคํŠธ ์ถœ๋ ฅ ํ”„๋กœ๊ทธ๋žจ(ver.2)]

    ใ„ดSQL

    ใ„ดใ„ดWebApp11_scott.sql

    >> 9์™€ ๋™์ผ<<

    ใ„ด/WebApp10/src/com/test/

    ใ„ดใ„ดScoreDTO.Java

    package com.test;
    
    public class ScoreDTO
    {
        // ์ฃผ์š” ์†์„ฑ ๊ตฌ์„ฑ
        private String name;
        private int sid, kor, eng, mat, tot;
        private double avg;
    
        // getter / setter ๊ตฌ์„ฑ
        public String getName()
        {
            return name;
        }
        public int getSid()
        {
            return sid;
        }
        public void setSid(int sid)
        {
            this.sid = sid;
        }
        public int getTot()
        {
            return tot;
        }
        public void setTot(int tot)
        {
            this.tot = tot;
        }
        public double getAvg()
        {
            return avg;
        }
        public void setAvg(double avg)
        {
            this.avg = avg;
        }
        public void setName(String name)
        {
            this.name = name;
        }
        public int getKor()
        {
            return kor;
        }
        public void setKor(int kor)
        {
            this.kor = kor;
        }
        public int getEng()
        {
            return eng;
        }
        public void setEng(int eng)
        {
            this.eng = eng;
        }
        public int getMat()
        {
            return mat;
        }
        public void setMat(int mat)
        {
            this.mat = mat;
        }
    }

    ใ„ดใ„ดScoreDAO.Java

    package com.test;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    
    import com.util.DBConn;
    
    public class ScoreDAO
    {
        private Connection conn;
    
        public ScoreDAO() throws ClassNotFoundException, SQLException
        {
            conn = DBConn.getConnection();
        }
    
        public int add(ScoreDTO dto) throws SQLException
        {
            int result = 0;
    
            String sql = "INSERT INTO TBL_SCORE(SID, NAME, KOR, ENG, MAT)"
                    + " VALUES(SCORESEQ.NEXTVAL, ?, ?, ?, ?)";
    
            PreparedStatement pstmt = conn.prepareStatement(sql);
    
            pstmt.setString(1,dto.getName());
            pstmt.setInt(2, dto.getKor());
            pstmt.setInt(3, dto.getEng());
            pstmt.setInt(4, dto.getMat());
    
            result = pstmt.executeUpdate();
            pstmt.close();
    
            return result;
        }
    
        public ArrayList<ScoreDTO> lists() throws SQLException
        {
            ArrayList<ScoreDTO> result = new ArrayList<ScoreDTO>();
    
            String sql = "SELECT SID, NAME, KOR , ENG, MAT"
                    + " , (KOR+ENG+MAT) AS TOT"
                    + " , (KOR+ENG+MAT)/3 AS AVG"
                    + " FROM TBL_SCORE ORDER BY SID";
    
            PreparedStatement pstmt = conn.prepareStatement(sql);
    
            ResultSet rs = pstmt.executeQuery(); 
    
            while(rs.next())
            {
                ScoreDTO score = new ScoreDTO();
    
                score.setSid(rs.getInt("SID"));
                score.setName(rs.getString("NAME"));
                score.setKor(rs.getInt("KOR"));
                score.setEng(rs.getInt("ENG"));
                score.setMat(rs.getInt("MAT"));
                score.setTot(rs.getInt("TOT"));
                score.setAvg(rs.getDouble("AVG"));
    
                result.add(score);
            }
    
            rs.close();
            pstmt.close();
    
            return result;
        }
    
        public int count() throws SQLException
        {
            int result = 0;
    
            String sql = "SELECT COUNT(*) AS COUNT FROM TBL_SCORE";
    
            PreparedStatement pstmt = conn.prepareStatement(sql);
    
            result = pstmt.executeUpdate();
    
            return result;
        }
    
        public void close() throws SQLException
        {
            DBConn.close();
        }
    }

    ใ„ด/WebApp12/WebContent

    ใ„ดใ„ดScoreList.jsp

    <%@page import="com.test.ScoreDTO"%>
    <%@page import="com.test.ScoreDAO"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%
        StringBuffer str = new StringBuffer();
        ScoreDAO dao = null;
    
        try
        {
            dao = new ScoreDAO();
    
            // ์ถœ๋ ฅ
            str.append("<table>");
            str.append("<tr><th>๋ฒˆํ˜ธ</th><th>์ด๋ฆ„</th><th>๊ตญ์–ด์ ์ˆ˜</th><th>์˜์–ด์ ์ˆ˜</th><th>์ˆ˜ํ•™์ ์ˆ˜</th><th>์ด์ </th><th>ํ‰๊ท </th><tr>");
    
            for(ScoreDTO score : dao.lists())
            {
                str.append("<tr>");
                str.append("<td>"+score.getSid()+"</td>");            
                str.append("<td>"+score.getName()+"</td>");            
                str.append("<td>"+score.getKor()+"</td>");            
                str.append("<td>"+score.getEng()+"</td>");            
                str.append("<td>"+score.getMat()+"</td>");            
                str.append("<td>"+score.getTot()+"</td>");            
                str.append("<td>"+String.format("%.1f",score.getAvg())+"</td>");            
                str.append("</tr>");            
            }
            str.append("</table>");
    
        }
        catch(Exception e)
        {
            System.out.println(e.toString());
        }
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>ScoreList.jsp</title>
    <!-- <link rel="stylesheet" type="text/css" href="css/main.css"> -->
    <link rel="stylesheet" type="text/css" href="css/style.css">
    <script type="text/javascript">
    function scoreInsert()
    {
        //ํ™•์ธ
        //alert("์—ฐ๊ฒฐ ์„ฑ๊ณต");
    
        var userName     = document.getElementById("userName");
        var userKor     = document.getElementById("userKor");
        var userEng     = document.getElementById("userEng");
        var userMat     = document.getElementById("userMat");
    
        var kor = Number(userKor.value);
        var eng = Number(userEng.value);
        var mat = Number(userMat.value);
    
        var errName    = document.getElementById("errName");
        var errKor    = document.getElementById("errKor");
        var errEng    = document.getElementById("errEng");
        var errMat    = document.getElementById("errMat");
    
        errName.style.display = "none";
        errKor.style.display = "none";
        errEng.style.display = "none";
        errMat.style.display = "none";
    
        if(userName.value=="")
        {
            errName.style.display = "inline";
            return false;
        }
    
        if(userKor.value=="" || kor<0 || kor>100)
        {
            errKor.style.display = "inline";
            return false;
        }
    
        if(userEng.value=="" || eng<0 || eng>100)
        {
            errEng.style.display = "inline";
            return false;
        }
    
        if(userMat.value=="" || mat<0 || mat>100)
        {
            errMat.style.display = "inline";
            return false;
        }
    
        //return false;
        return true;
    }
    </script>
    </head>
    <body class="section">
    
    <div>
        <h1>์„ฑ์  ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถœ๋ ฅ ํ”„๋กœ๊ทธ๋žจ</h1>
        <hr>
    </div>
    
    <div class="layout">
        <form action="ScoreInsert.jsp" method="post" onsubmit="return scoreInsert()">
            <table>
                <tr>
                    <th>์ด๋ฆ„(*)</th>
                    <td>
                        <input type="text" id="userName" name="userName">
                        <span id="errName" class="errMsg">์ด๋ฆ„์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.</span>
                    </td>
                </tr>
                <tr>
                    <th>๊ตญ์–ด์ ์ˆ˜</th>
                    <td>
                        <input type="text" id="userKor" name="userKor">
                        <span id="errKor" class="errMsg">๊ตญ์–ด์ ์ˆ˜(0~100)</span>
                    </td>
                </tr>
                <tr>
                    <th>์˜์–ด์ ์ˆ˜</th>
                    <td>
                        <input type="text" id="userEng" name="userEng">
                        <span id="errEng" class="errMsg">์˜์–ด์ ์ˆ˜(0~100)</span>
                    </td>
                </tr>
                <tr>
                    <th>์ˆ˜ํ•™์ ์ˆ˜</th>
                    <td>
                        <input type="text" id="userMat" name="userMat">
                        <span id="errMat" class="errMsg">์ˆ˜ํ•™์ ์ˆ˜(0~100)</span>
                    </td>
                </tr>
            </table>
            <div class="btn_box">
                <button type="submit" id="resultBtn" name="resultBtn" class="btn">์„ฑ์  ์ถ”๊ฐ€</button>
            </div>
        </form>
        <div class="result_box">
            <!-- <table>
                <tr>
                    <th>๋ฒˆํ˜ธ</th><th>์ด๋ฆ„</th><th>๊ตญ์–ด์ ์ˆ˜</th><th>์˜์–ด์ ์ˆ˜</th><th>์ˆ˜ํ•™์ ์ˆ˜</th><th>์ด์ </th><th>ํ‰๊ท </th>
                <tr>
                <tr>
                    <td>1</td><td>์ž„ํ•˜์„ฑ</td><td>90</td><td>60</td><td>70</td><td>xxx</td><td>xx.x</td>
                </tr>
            </table> -->
            <%=str %>
        </div>
    </div>
    
    </body>
    </html>

    ใ„ดใ„ดScoreInsert.jsp

    <%@page import="com.test.ScoreDTO"%>
    <%@page import="com.test.ScoreDAO"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%
        request.setCharacterEncoding("UTF-8");
    
        String userName = request.getParameter("userName"); 
        String userKor = request.getParameter("userKor");
        String userEng = request.getParameter("userEng");
        String userMat = request.getParameter("userMat");
    
        int kor = Integer.parseInt(userKor);
        int eng = Integer.parseInt(userEng);
        int mat = Integer.parseInt(userMat);
    
        // ์ž…๋ ฅ
        ScoreDAO dao = null;
        try
        {
            dao = new ScoreDAO();
    
            ScoreDTO dto = new ScoreDTO();
            dto.setName(userName);
            dto.setKor(kor);
            dto.setEng(eng);
            dto.setMat(mat);
    
            dao.add(dto);
        }
        catch(Exception e)
        {
            System.out.println(e.toString());
        }
        finally
        {
            try
            {
                dao.close();
            }
            catch(Exception e)
            {
                System.out.println(e.toString());
            }
        }
    
        response.sendRedirect("ScoreList.jsp");
    %>

    F_WebApp12

    [ํšŒ์› ์„ฑ์  ๊ด€๋ฆฌ ๋ฐ ์ถœ๋ ฅ ํŽ˜์ด์ง€(ver.2)]

    ใ„ดใ„ดWebApp12_scott.sql

    SELECT USER
    FROM DUAL;
    --==>> SCOTT
    
    
    --โ—‹ ๊ธฐ์กด ํ…Œ์ด๋ธ” ์‚ญ์ œ
    DROP TABLE TBL_MEMBER;
    --==>>Table TBL_MEMBER์ด(๊ฐ€) ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    
    
    --โ—‹ ํ…Œ์ด๋ธ” ์ƒ์„ฑ(TBL_MEMBER)
    CREATE TABLE TBL_MEMBER
    ( SID   NUMBER
    , NAME  VARCHAR2(30)    NOT NULL
    , TEL   VARCHAR2(30)
    , CONSTRAINT MEMBER_SID_PK PRIMARY KEY(SID)
    );
    --==>>Table TBL_NUMBER์ด(๊ฐ€) ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    
    
    --โ—‹ ๊ธฐ์กด ์‹œํ€€์Šค ์ œ๊ฑฐ
    DROP SEQUENCE MEMBERSEQ;
    --==>> Sequence MEMBERSEQ์ด(๊ฐ€) ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    
    
    --โ—‹ ์‹œํ€€์Šค ์ƒ์„ฑ
    CREATE SEQUENCE MEMBERSEQ
    NOCACHE;
    --==>>Sequence MEMBERSEQ์ด(๊ฐ€) ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    
    
    --โ—‹ ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ(TBL_MEMBER)
    INSERT INTO TBL_MEMBER(SID, NAME, TEL) VALUES(MEMBERSEQ.NEXTVAL, '๋…ธ์€ํ•˜', '010-1111-1111');
    INSERT INTO TBL_MEMBER(SID, NAME, TEL) VALUES(MEMBERSEQ.NEXTVAL, '๋ฐ•๊ฐ€์˜', '010-2222-2222');
    INSERT INTO TBL_MEMBER(SID, NAME, TEL) VALUES(MEMBERSEQ.NEXTVAL, '์ฑ„๋‹ค์„ ', '010-3333-3333');
    INSERT INTO TBL_MEMBER(SID, NAME, TEL) VALUES(MEMBERSEQ.NEXTVAL, '๊น€์ˆ˜ํ™˜', '010-4444-4444');
    INSERT INTO TBL_MEMBER(SID, NAME, TEL) VALUES(MEMBERSEQ.NEXTVAL, '๊น€๋‹ค์Šฌ', '010-5555-5555');
    --==>> 1 ํ–‰ ์ด(๊ฐ€) ์‚ฝ์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. * 5
    
    
    SELECT SID, NAME, TEL
    FROM TBL_MEMBER
    ORDER BY SID;
    --> ํ•œ ์ค„ ๊ตฌ์„ฑ
    SELECT SID, NAME, TEL FROM TBL_MEMBER ORDER BY SID
    ;
    --==>
    /*
    1	๋…ธ์€ํ•˜	010-1111-1111
    2	๋ฐ•๊ฐ€์˜	010-2222-2222
    3	์ฑ„๋‹ค์„ 	010-3333-3333
    4	๊น€์ˆ˜ํ™˜	010-4444-4444
    5	๊น€๋‹ค์Šฌ	010-5555-5555
    */
    
    
    --โ—‹ ์ธ์›์ˆ˜ ํ™•์ธ
    SELECT COUNT(*) AS COUNT
    FROM TBL_MEMBER;
    --> ํ•œ ์ค„ ๊ตฌ์„ฑ
    SELECT COUNT(*) AS COUNT FROM TBL_MEMBER
    ;
    --==>> 5
    
    
    --โ—‹ ์ปค๋ฐ‹
    COMMIT;
    
    
    --โ—‹ ํšŒ์› ์ •๋ณด ๊ฒ€์ƒ‰(SID)
    SELECT SID, NAME, TEL
    FROM TBL_MEMBER
    WHERE SID=1;
    --> ํ•œ ์ค„ ๊ตฌ์„ฑ
    SELECT SID, NAME, TEL FROM TBL_MEMBER WHERE SID=1
    ;
    --==>> 1	๋…ธ์€ํ•˜	010-1111-1111
    
    
    --โ—‹ ์—…๋ฐ์ดํŠธ
    UPDATE TBL_MEMBER
    SET NAME='๋…ธ์€ํ•˜', TEL='010-1100-1100'
    WHERE SID=1;
    --> ํ•œ ์ค„ ๊ตฌ์„ฑ
    UPDATE TBL_MEMBER SET NAME='๋…ธ์€ํ•˜', TEL='010-1100-1100' WHERE SID=1
    ;
    --==>> 1 ํ–‰ ์ด(๊ฐ€) ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    
    
    --โ—‹ ๋กค๋ฐฑ
    ROLLBACK;
    
    
    --โ—‹ ํšŒ์› ์ •๋ณด ์‚ญ์ œ
    DELETE
    FROM TBL_MEMBER
    WHERE SID=1;
    --> ํ•œ ์ค„ ๊ตฌ์„ฑ
    DELETE FROM TBL_MEMBER WHERE SID=1
    ;
    
    
    --โ—‹ ๋กค๋ฐฑ
    ROLLBACK;
    
    
    --โ—‹ ๊ธฐ์กด ํ…Œ์ด๋ธ” ์ œ๊ฑฐ
    DROP TABLE TBL_SCORE;
    
    
    --------------------------------------------------------------------------------
    --โ—‹ ํ…Œ์ด๋ธ” ์ƒ์„ฑ(TBL_MEMBERSCORE)
    CREATE TABLE TBL_MEMBERSCORE
    ( SID NUMBER
    , KOR NUMBER(3)
    , ENG NUMBER(3)
    , MAT NUMBER(3)
    , CONSTRAINT MEMBERSCORE_SID_PK PRIMARY KEY(SID)
    , CONSTRAINT MEMBERSCORE_KOR_CK CHECK(KOR BETWEEN 0 AND 100)
    , CONSTRAINT MEMBERSCORE_ENG_CK CHECK(ENG BETWEEN 0 AND 100)
    , CONSTRAINT MEMBERSCORE_MAT_CK CHECK(MAT BETWEEN 0 AND 100)
    , CONSTRAINT MEMBERSCORE_SID_FK FOREIGN KEY(SID)
                 REFERENCES TBL_MEMBER(SID)
    );
    --==>> Table TBL_MEMBERSCORE์ด(๊ฐ€) ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    
    
    --โ—‹ ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ
    INSERT INTO TBL_MEMBERSCORE(SID, KOR, ENG, MAT) VALUES(1, 90, 80, 70);
    INSERT INTO TBL_MEMBERSCORE(SID, KOR, ENG, MAT) VALUES(2, 80, 70, 60);
    --==>> 1 ํ–‰ ์ด(๊ฐ€) ์‚ฝ์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. *2
    
    
    --โ—‹ ํ™•์ธ
    SELECT SID, KOR, ENG, MAT
    FROM TBL_MEMBERSCORE
    ORDER BY SID;
    --> ํ•œ ์ค„ ๊ตฌ์„ฑ
    SELECT SID, KOR, ENG, MAT FROM TBL_MEMBERSCORE ORDER BY SID
    ;
    --==>>
    /*
    1	90	80	70
    2	80	70	60
    */
    
    
    --โ—‹ ์ปค๋ฐ‹
    COMMIT;
    
    
    --โ—‹ ์ž…๋ ฅ๋œ ์„ฑ์  ๋ฐ์ดํ„ฐ ๊ฐฏ์ˆ˜ ํ™•์ธ
    SELECT COUNT(*) AS COUNT
    FROM TBL_MEMBERSCORE;
    --> ํ•œ ์ค„ ๊ตฌ์„ฑ
    SELECT COUNT(*) AS COUNT FROM TBL_MEMBERSCORE
    ;
    --==> 2
    
    
    --โ—‹ ์„ฑ์  ๋ฐ์ดํ„ฐ ์ˆ˜์ •
    UPDATE TBL_MEMBERSCORE
    SET KOR=91, ENG=81, MAT=71
    WHERE SID=1;
    --> ํ•œ ์ค„ ๊ตฌ์„ฑ
    UPDATE TBL_MEMBERSCORE SET KOR=91, ENG=81, MAT=71 WHERE SID=1
    ;
    --==>> 1 ํ–‰ ์ด(๊ฐ€) ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    
    
    --โ—‹ ํ™•์ธ
    SELECT *
    FROM TBL_MEMBERSCORE;
    --==>>
    /*
    1	91	81	71
    2	80	70	60
    */
    
    
    --โ—‹ ์ปค๋ฐ‹
    COMMIT;
    --==>> ์ปค๋ฐ‹ ์™„๋ฃŒ.
    
    
    --โ—‹ ์„ฑ์  ๋ฐ์ดํ„ฐ ์‚ญ์ œ
    DELETE
    FROM TBL_MEMBERSCORE
    WHERE SID=1;
    --> ํ•œ ์ค„ ๊ตฌ์„ฑ
    DELETE FROM TBL_MEMBERSCORE WHERE SID=1
    ;
    --==>> 1 ํ–‰ ์ด(๊ฐ€) ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    
    
    --โ—‹ ๋กค๋ฐฑ
    ROLLBACK;
    --==>> ๋กค๋ฐฑ ์™„๋ฃŒ.
    
    
    --โ—‹ ์ „์ฒด ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ์ฟผ๋ฆฌ๋ฌธ ๊ตฌ์„ฑ
    SELECT M.SID, M.NAME, M.TEL
        , S.KOR, S.ENG, S.MAT
    FROM TBL_MEMBER M, TBL_MEMBERSCORE S
    WHERE M.SID = S.SID;
    --==>>
    /*
    1	๋…ธ์€ํ•˜	010-1111-1111	91	81	71
    2	๋ฐ•๊ฐ€์˜	010-2222-2222	80	70	60
    */
    
    
    --โ—‹ ์ „์ฒด ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ์ฟผ๋ฆฌ๋ฌธ ๊ตฌ์„ฑ -> ๊ฐœ์„  -> LEFT JOIN
    SELECT M.SID, M.NAME, M.TEL
        , S.KOR, S.ENG, S.MAT
    FROM TBL_MEMBER M, TBL_MEMBERSCORE S
    WHERE M.SID = S.SID(+);
    --==>>
    /*
    1	๋…ธ์€ํ•˜	010-1111-1111	91	81	71
    2	๋ฐ•๊ฐ€์˜	010-2222-2222	80	70	60
    3	์ฑ„๋‹ค์„ 	010-3333-3333	(NULL) (NULL) (NULL)
    4	๊น€์ˆ˜ํ™˜	010-4444-4444	(NULL) (NULL) (NULL)	
    5	๊น€๋‹ค์Šฌ	010-5555-5555	(NULL) (NULL) (NULL)
    */
    
    
    --โ—‹ ์ „์ฒด ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ์ฟผ๋ฆฌ๋ฌธ ๊ตฌ์„ฑ -> ๊ฐœ์„  -> LEFT JOIN -> ๊ฐœ์„  -> NVL()
    SELECT M.SID, M.NAME, M.TEL
        , NVL(S.KOR, -1) AS KOR
        , NVL(S.ENG, -1) AS ENG
        , NVL(S.MAT, -1) AS MAT
    FROM TBL_MEMBER M, TBL_MEMBERSCORE S
    WHERE M.SID = S.SID(+);
    --==>>
    /*
    1	๋…ธ์€ํ•˜	010-1111-1111	91	81	71
    2	๋ฐ•๊ฐ€์˜	010-2222-2222	80	70	60
    3	์ฑ„๋‹ค์„ 	010-3333-3333	-1	-1	-1
    4	๊น€์ˆ˜ํ™˜	010-4444-4444	-1	-1	-1
    5	๊น€๋‹ค์Šฌ	010-5555-5555	-1	-1	-1
    */
    
    
    --โ—‹ ์ „์ฒด ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ์ „์šฉ ๋ทฐ ์ƒ์„ฑ(VIEW_MEMBERSCORE)
    CREATE OR REPLACE VIEW VIEW_MEMBERSCORE
    AS
    SELECT M.SID, M.NAME, M.TEL
        , NVL(S.KOR, -1) AS KOR
        , NVL(S.ENG, -1) AS ENG
        , NVL(S.MAT, -1) AS MAT
    FROM TBL_MEMBER M, TBL_MEMBERSCORE S
    WHERE M.SID = S.SID(+);
    --==>> View VIEW_MEMBERSCORE์ด(๊ฐ€) ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    
    
    --โ—‹ ์ƒ์„ฑํ•œ ๋ทฐ(VIEW_MEMBERSCORE)๋ฅผ ํ™œ์šฉํ•œ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ
    SELECT SID, NAME, KOR, MAT
        , (KOR+ENG+MAT) AS TOT
        , (KOR+ENG+MAT)/3 AS AVG
        , RANK() OVER(ORDER BY (KOR+ENG+MAT) DESC) AS RANK
    FROM VIEW_MEMBERSCORE
    ORDER BY SID;
    --> ํ•œ ์ค„ ๊ตฌ์„ฑ
    SELECT SID, NAME, KOR, ENG, MAT, (KOR+ENG+MAT) AS TOT, (KOR+ENG+MAT)/3 AS AVG, RANK() OVER(ORDER BY (KOR+ENG+MAT) DESC) AS RANK FROM VIEW_MEMBERSCORE ORDER BY SID
    ;
    --==>>
    /*
    1	๋…ธ์€ํ•˜	91	81	71	243	81	1
    2	๋ฐ•๊ฐ€์˜	80	70	60	210	70	2
    3	์ฑ„๋‹ค์„ 	-1	-1	-1	-3	-1	3
    4	๊น€์ˆ˜ํ™˜	-1	-1	-1	-3	-1	3
    5	๊น€๋‹ค์Šฌ	-1	-1	-1	-3	-1	3
    */
    
    
    --โ—‹ ์ƒ์„ฑํ•œ ๋ทฐ(VIEW_MEMBERSCORE)๋ฅผ ํ™œ์šฉํ•œ ๋ฒˆํ˜ธ ๊ฒ€์ƒ‰
    SELECT SID, NAME, KOR, ENG, MAT
    FROM VIEW_MEMBERSCORE
    WHERE SID=1;
    --> ํ•œ ์ค„ ๊ตฌ์„ฑ
    SELECT SID, NAME, KOR, ENG, MAT FROM VIEW_MEMBERSCORE WHERE SID=1
    ;
    
    --==>> 1	๋…ธ์€ํ•˜	91	81	71
    
    
    --โ—‹ ์ฐธ์กฐ ๋ฐ์ดํ„ฐ ๋ ˆ์ฝ”๋“œ ์ˆ˜ ํ™•์ธ
    SELECT COUNT(*) AS COUNT
    FROM TBL_MEMBERSCORE
    WHERE SID=1;
    --> ํ•œ ์ค„ ๊ตฌ์„ฑ
    SELECT COUNT(*) AS COUNT FROM TBL_MEMBERSCORE WHERE SID=1
    ;
    --==>> 1
    -- 1์ด ๋‚˜์˜ฌ ๊ฒฝ์šฐ -> ์„ฑ์  ์ฒ˜๋ฆฌ ๋จ
    -- 0์ด ๋‚˜์˜ฌ ๊ฒฝ์šฐ -> ์„ฑ์  ์ฒ˜๋ฆฌ ๋˜์ง€ ์•Š์Œ

     


    ์ž…๋ ฅํ•˜๊ธฐ
    ์ˆ˜์ •ํ•˜๊ธฐ
    ์ด๋ฆ„์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ  ์ˆ˜์ •ํ•˜๊ธฐ ๋ˆŒ๋ €์„ ๋•Œ
    ์„ฑ์ ์ฒ˜๋ฆฌ ๋˜์ง€์•Š์€ ํšŒ์› ์‚ญ์ œ์‹œ(->์‚ญ์ œ๋จ)
    ์„ฑ์ ์ฒ˜๋ฆฌ ๋œ ํšŒ์› ์‚ญ์ œ์‹œ(->์‚ญ์ œ๋˜์ง€ ์•Š๊ณ , ์•ˆ๋‚ด๋ฉ”์„ธ์ง€ ์ถœ๋ ฅ)
    ํšŒ์› ์„ฑ์  ์‚ญ์ œ


    ใ„ด/WebApp12/src/com/test/

    ใ„ดใ„ดMemberDAO.java

    /* =================================================
    	MemberDAO.java
    	- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ก์…˜ ์ฒ˜๋ฆฌ ์ „์šฉ ํด๋ž˜์Šค
    		(TBL_MEMBER ํ…Œ์ด๋ธ” ์ „์šฉ DAO)
    ==================================================== */
    package com.test;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    
    import com.util.DBConn;
    
    public class MemberDAO
    {
    	// ์ฃผ์š” ์†์„ฑ ๊ตฌ์„ฑ
    	private Connection conn;
    	
    	// ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๋‹ด๋‹น ๋ฉ”์†Œ๋“œ
    	public Connection connection() throws ClassNotFoundException, SQLException
    	{
    		conn = DBConn.getConnection();
    		return conn;
    	}
    	
    	// ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ๋‹ด๋‹น ๋ฉ”์†Œ๋“œ
    	public int add(MemberDTO dto) throws SQLException
    	{
    		int result = 0;
    		
    		String sql = "INSERT INTO TBL_MEMBER(SID, NAME, TEL) VALUES(MEMBERSEQ.NEXTVAL, ?, ?)";
    		PreparedStatement pstmt = conn.prepareStatement(sql);
    		pstmt.setString(1, dto.getName());
    		pstmt.setString(2, dto.getTel());
    		
    		result = pstmt.executeUpdate();
    		pstmt.close();
    		
    		return result;
    	}
    	
    	// ํšŒ์› ๋ฆฌ์ŠคํŠธ ์ „์ฒด ์ถœ๋ ฅ ๋‹ด๋‹น ๋ฉ”์†Œ๋“œ
    	public ArrayList<MemberDTO> lists() throws SQLException
    	{
    		ArrayList<MemberDTO> result = new ArrayList<MemberDTO>();
    		
    		String sql = "SELECT SID, NAME, TEL FROM TBL_MEMBER ORDER BY SID";
    		PreparedStatement pstmt = conn.prepareStatement(sql);
    		ResultSet rs = pstmt.executeQuery();
    		
    		while(rs.next())
    		{
    			MemberDTO dto = new MemberDTO();
    			dto.setSid(rs.getString("SID"));
    			dto.setName(rs.getString("NAME"));
    			dto.setTel(rs.getString("TEL"));
    			
    			result.add(dto);
    		}
    		
    		rs.close();
    		pstmt.close();
    		
    		return result;
    	}
    	
    	// ์ „์ฒด ํšŒ์› ์ˆ˜ ํ™•์ธ ๋‹ด๋‹น ๋ฉ”์†Œ๋“œ
    	public int count() throws SQLException
    	{
    		int result = 0;
    		
    		String sql = "SELECT COUNT(*) AS COUNT FROM TBL_MEMBER";
    		PreparedStatement pstmt = conn.prepareStatement(sql);
    		ResultSet rs = pstmt.executeQuery();
    		while(rs.next())
    		{
    			result = rs.getInt("COUNT");
    		}
    		rs.close();
    		pstmt.close();
    		
    		return result;
    	}
    	
    	// ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์ข…๋ฃŒ(ํ•ด์ œ) ๋‹ด๋‹น ๋ฉ”์†Œ๋“œ
    	public void close() throws SQLException
    	{
    		DBConn.close();
    	}
    	
    	
    	// ๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€
    	// ๋ฒˆํ˜ธ ๊ฒ€์ƒ‰ ๋‹ด๋‹น ๋ฉ”์†Œ๋“œ(๋ฒˆํ˜ธ๋ฅผ ํ†ตํ•ด ํšŒ์› ๋ฐ์ดํ„ฐ ์กฐํšŒ)
    	//-- ํ˜„์žฌ... ๋ฒˆํ˜ธ(sid)๋Š” TBL_MEMBER ํ…Œ์ด๋ธ”์—์„œ ์‹๋ณ„์ž์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ
    	//	์ด๋กœ ์ธํ•ด ๋ฒˆํ˜ธ๋ฅผ ํ†ตํ•œ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋Š” ํ•œ ๋ช…์˜ ํšŒ์›์ผ ์ˆ˜ ๋ฐ–์— ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜ํ™˜ ์ž๋ฃŒํ˜•์€ MemberDTO๋กœ ๊ตฌ์„ฑํ•œ๋‹ค.
    	public MemberDTO searchMember(String sid) throws SQLException
    	// ์—ฌ๋Ÿฌ๊ฐ€์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•œ ๊ฒฐ๊ณผ๋Š” -> ArrayList
    	// ํ•œ๊ฐ€์ง€๋งŒ ์–ป์–ด๋‚ผ ๊ฒƒ์ด๋ฏ€๋กœ 
    	{
    		MemberDTO result = new MemberDTO();
    		
    		String sql = "SELECT SID, NAME, TEL FROM TBL_MEMBER WHERE SID=?";
    		PreparedStatement pstmt = conn.prepareStatement(sql);
    		pstmt.setInt(1, Integer.parseInt(sid));
    		
    		ResultSet rs = pstmt.executeQuery();
    		while(rs.next())
    		{
    			result.setSid(rs.getString("SID"));
    			result.setName(rs.getString("NAME"));
    			result.setTel(rs.getString("TEL"));
    		}
    		rs.close();
    		pstmt.close();		
    		
    		return result;
    	}
    	
    	// ๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€
    	// ํšŒ์› ๋ฐ์ดํ„ฐ ์ˆ˜์ • ๋‹ด๋‹น ๋ฉ”์†Œ๋“œ
    	public int modify(MemberDTO member) throws SQLException
    	{
    		int result = 0;
    		
    		String sql = "UPDATE TBL_MEMBER SET NAME=?, TEL=? WHERE SID=?";
    		PreparedStatement pstmt = conn.prepareStatement(sql);
    		pstmt.setString(1, member.getName());
    		pstmt.setString(2, member.getTel());
    		pstmt.setInt(3, Integer.parseInt(member.getSid()));
    		
    		result = pstmt.executeUpdate();
    		
    		pstmt.close();		
    		
    		return result;
    	}
    	
    	// ๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€
    	// ํšŒ์› ๋ฐ์ดํ„ฐ ์‚ญ์ œ ๋‹ด๋‹น ๋ฉ”์†Œ๋“œ
    	public int remove(String sid) throws SQLException
    	{
    		int result = 0;
    		
    		String sql = "DELETE FROM TBL_MEMBER WHERE SID=?";
    		PreparedStatement pstmt = conn.prepareStatement(sql);
    		pstmt.setInt(1, Integer.parseInt(sid));
    		
    		result = pstmt.executeUpdate();
    		pstmt.close();
    		
    		return result;
    	}
    	
    	// ๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€
    	// ์ž์‹ ํ…Œ์ด๋ธ”์˜ ์ฐธ์กฐ ๋ฐ์ดํ„ฐ ๋ ˆ์ฝ”๋“œ ์ˆ˜ ํ™•์ธ
    	public int refCount(String sid) throws SQLException
    	{
    		int result = 0;
    		
    		String sql = "SELECT COUNT(*) AS COUNT FROM TBL_MEMBERSCORE WHERE SID=?";
    		PreparedStatement pstmt = conn.prepareStatement(sql);
    		pstmt.setInt(1, Integer.parseInt(sid));
    		ResultSet rs = pstmt.executeQuery();
    		
    		while(rs.next())
    		{
    			result = rs.getInt("COUNT");
    		}
    		rs.close();
    		pstmt.close();
    		
    		return result;
    	}
    	
    
    }

    ใ„ดใ„ดMemberDTO.java

    /* =================================================
        MemberScoreDTO.java
        - ๊ฐ์ฒด ์ „์šฉ(๋ฐ์ดํ„ฐ ๋ณด๊ด€ ๋ฐ ์ „์†ก) -> JAVA Bean
    ==================================================== */
    package com.test;
    
    public class MemberDTO
    {
        // ์ฃผ์š” ์†์„ฑ(ํ”„๋กœํผํ‹ฐ ๊ตฌ์„ฑ)
        private String sid, name, tel;    //-- ๋ฒˆํ˜ธ, ์ด๋ฆ„, ์ „ํ™”๋ฒˆํ˜ธ
    
        // getter / setter ๊ตฌ์„ฑ
        public String getSid()
        {
            return sid;
        }
    
        public void setSid(String sid)
        {
            this.sid = sid;
        }
    
        public String getName()
        {
            return name;
        }
    
        public void setName(String name)
        {
            this.name = name;
        }
    
        public String getTel()
        {
            return tel;
        }
    
        public void setTel(String tel)
        {
            this.tel = tel;
        }
    
    
    }

     

    ใ„ดใ„ดMemberScoreDAO.java

    /* =================================================
    	MemberScoreDAO.java
    	- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ก์…˜ ์ฒ˜๋ฆฌ ์ „์šฉ ํด๋ž˜์Šค
    		(TBL_MEMBERSCORE ํ…Œ์ด๋ธ” ์ „์šฉ DAO)
    ==================================================== */
    
    package com.test;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    
    import com.util.DBConn;
    
    public class MemberScoreDAO
    {
    	// ์ฃผ์š” ์†์„ฑ ๊ตฌ์„ฑ
    	private Connection conn;
    	
    	// ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๋‹ด๋‹น ๋ฉ”์†Œ๋“œ
    	public Connection connection() throws ClassNotFoundException, SQLException
    	{
    		conn = DBConn.getConnection();
    		return conn;
    	}
    	
    	// ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ๋‹ด๋‹น ๋ฉ”์†Œ๋“œ(์„ฑ์  ๋ฐ์ดํ„ฐ ์ž…๋ ฅ)
    	public int add(MemberScoreDTO dto) throws SQLException
    	{
    		int result = 0;
    		
    		String sql = "INSERT INTO TBL_MEMBERSCORE(SID, KOR, ENG, MAT) VALUES(?, ?, ?, ?)";
    		
    		PreparedStatement pstmt = conn.prepareStatement(sql);
    		pstmt.setInt(1, Integer.parseInt(dto.getSid()));
    		pstmt.setInt(2, dto.getKor());
    		pstmt.setInt(3, dto.getEng());
    		pstmt.setInt(4, dto.getMat());
    		
    		result = pstmt.executeUpdate();
    		pstmt.close();		
    		
    		return result;
    	}
    	
    	// ์„ฑ์  ์ „์ฒด ๋ฆฌ์ŠคํŠธ ์ถœ๋ ฅ ๋‹ด๋‹น ๋ฉ”์†Œ๋“œ(์„ฑ์  ๋ฐ์ดํ„ฐ ์ „์ฒด ์ถœ๋ ฅ)
    	public ArrayList<MemberScoreDTO> lists() throws SQLException
    	{
    		ArrayList<MemberScoreDTO> result = new ArrayList<MemberScoreDTO>();
    		
    		String sql ="SELECT SID, NAME, KOR, ENG, MAT"
    				+ ", (KOR+ENG+MAT) AS TOT"
    				+ ", (KOR+ENG+MAT)/3 AS AVG"
    				+ ", RANK() OVER(ORDER BY (KOR+ENG+MAT) DESC) AS RANK"
    				+ " FROM VIEW_MEMBERSCORE ORDER BY SID";
    		
    		PreparedStatement pstmt = conn.prepareStatement(sql);
    		ResultSet rs = pstmt.executeQuery();
    		
    		while(rs.next())
    		{
    			MemberScoreDTO score =  new MemberScoreDTO();
    			score.setSid(rs.getString("SID"));
    			score.setName(rs.getString("NAME"));
    			score.setKor(rs.getInt("KOR"));
    			score.setEng(rs.getInt("ENG"));
    			score.setMat(rs.getInt("MAT"));
    			score.setTot(rs.getInt("TOT"));
    			score.setAvg(rs.getDouble("AVG"));
    			score.setRank(rs.getInt("RANK"));
    			
    			result.add(score);
    		}
    		rs.close();
    		pstmt.close();
    		
    		return result;
    	}
    	
    	// ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์ข…๋ฃŒ ํ•ด์ œ
    	public void close() throws SQLException
    	{
    		DBConn.close();
    	}
    	
    	// ๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€
    	// ๋ฒˆํ˜ธ ๊ฒ€์ƒ‰ ๋‹ด๋‹น ๋ฉ”์†Œ๋“œ
    	public MemberScoreDTO search(String sid) throws SQLException
    	{
    		MemberScoreDTO result = new MemberScoreDTO();
    		
    		String sql = "SELECT SID, NAME, KOR, ENG, MAT FROM VIEW_MEMBERSCORE WHERE SID=?";
    		PreparedStatement pstmt = conn.prepareStatement(sql);
    		pstmt.setInt(1, Integer.parseInt(sid));
    		ResultSet rs = pstmt.executeQuery();
    		
    		while(rs.next())
    		{
    			result.setSid(rs.getString("SID"));
    			result.setName(rs.getString("NAME"));
    			result.setKor(rs.getInt("KOR"));
    			result.setEng(rs.getInt("ENG"));
    			result.setMat(rs.getInt("MAT"));
    		}
    		rs.close();
    		pstmt.close();
    		
    		return result;
    	}
    	
    	// ๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€
    	// ์„ฑ์  ๋ฐ์ดํ„ฐ ์ˆ˜์ • ๋‹ด๋‹น ๋ฉ”์†Œ๋“œ
    	public int modify(MemberScoreDTO dto) throws SQLException
    	{
    		int result = 0;
    		
    		String sql="UPDATE TBL_MEMBERSCORE SET KOR=?, ENG=?, MAT=? WHERE SID=?";
    		PreparedStatement pstmt = conn.prepareStatement(sql);
    		pstmt.setInt(1, dto.getKor());
    		pstmt.setInt(2, dto.getEng());
    		pstmt.setInt(3, dto.getMat());
    		pstmt.setInt(4, Integer.parseInt(dto.getSid()));
    		
    		result = pstmt.executeUpdate();
    		pstmt.close();
    		
    		return result;
    	}
    	
    	
    	
    	
    }

    ใ„ดใ„ดMemberScoreDTO.java

    /* =================================================
        MemberScoreDTO.java
        - ๊ฐ์ฒด ์ „์šฉ(๋ฐ์ดํ„ฐ ๋ณด๊ด€ ๋ฐ ์ „์†ก) -> JAVA Bean
    ==================================================== */
    package com.test;
    
    public class MemberScoreDTO
    {
        // VIEW_MEMBERSCORE ์กฐํšŒ ํ•ญ๋ชฉ์„ ๊ธฐ์ค€์œผ๋กœ
        // ํ”„๋กœํผํ‹ฐ(property) ๊ตฌ์„ฑ
        private String sid, name;    //-- ๋ฒˆํ˜ธ, ์ด๋ฆ„
        private int kor, eng, mat;    //-- ๊ตญ์–ด์ ์ˆ˜, ์˜์–ด์ ์ˆ˜, ์ˆ˜ํ•™์ ์ˆ˜
        private int tot, rank;        //-- ์ด์ , ์„์ฐจ(๋“ฑ์ˆ˜)
        private double avg;            //-- ํ‰๊ท 
    
        // getter / setter ๊ตฌ์„ฑ
        public String getSid()
        {
            return sid;
        }
        public void setSid(String sid)
        {
            this.sid = sid;
        }
        public String getName()
        {
            return name;
        }
        public void setName(String name)
        {
            this.name = name;
        }
        public int getKor()
        {
            return kor;
        }
        public void setKor(int kor)
        {
            this.kor = kor;
        }
        public int getEng()
        {
            return eng;
        }
        public void setEng(int eng)
        {
            this.eng = eng;
        }
        public int getMat()
        {
            return mat;
        }
        public void setMat(int mat)
        {
            this.mat = mat;
        }
        public int getTot()
        {
            return tot;
        }
        public void setTot(int tot)
        {
            this.tot = tot;
        }
        public int getRank()
        {
            return rank;
        }
        public void setRank(int rank)
        {
            this.rank = rank;
        }
        public double getAvg()
        {
            return avg;
        }
        public void setAvg(double avg)
        {
            this.avg = avg;
        }
    
    
    }

    ใ„ด/WebApp12/WebContent/

    ใ„ดใ„ดMemberDelete.jsp

    <%@page import="com.test.MemberDAO"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%
    	// MemberDelete.jsp
    	
    	// ์ด์ „ ํŽ˜์ด์ง€(MemberSelect.jsp)๋กœ ๋ถ€ํ„ฐ ๋„˜์–ด์˜จ ๋ฐ์ดํ„ฐ ์ˆ˜์‹ 
    	// -> sid
    	
    	String sid = request.getParameter("sid");
    	
    	MemberDAO dao = new MemberDAO();
    	
    	String strAddr = "";
    	
    	try
    	{
    		dao.connection();
    		
    		//dao.remove(sid);
    		
    		// ์ฐธ์กฐ ๋ ˆ์ฝ”๋“œ ์ˆ˜ ํ™•์ธ
    		int checkCount = dao.refCount(sid);
    		//-- TBL_MEMBER ํ…Œ์ด๋ธ”์—์„œ ์ œ๊ฑฐํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ SID ๋ฅผ ์ฐธ์กฐํ•˜๋Š” TBL_MEMBERSCORE ํ…Œ์ด๋ธ” ๋‚ด์˜ ๋ฐ์ดํ„ฐ ๊ฐฏ์ˆ˜ ํ™•์ธ
    		//	(ํ˜„์žฌ๋Š” 0 or 1)
    		
    		if(checkCount==0)	//-- ์ œ๊ฑฐ ๊ฐ€๋Šฅ
    		{
    			dao.remove(sid);
    			strAddr = "MemberSelect.jsp";
    		}else				//-- ์ œ๊ฑฐ ๋ถˆ๊ฐ€
    		{
    			//dao.remove(sid);
    			strAddr = "Notice.jsp";
    			//-- TBL_MEMBERSCORE ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๊ฐ€ TBL_MEMBER ํ…Œ์ด๋ธ”์˜ SID ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ(์„ฑ์ ์ด ์ด๋ฏธ ๋‚˜์˜จ ๊ฒฝ์šฐ)๋กœ,
    			//	์‚ญ์ œ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํ™ฉ
    			//-- ์ œ๊ฑฐํ•˜์ง€ ๋ชปํ•˜๋Š” ์‚ฌ์œ ๋ฅผ ์•ˆ๋‚ดํ•˜๋Š” ํŽ˜์ด์ง€๋กœ ์ด๋™ + ๋ฆฌ์ŠคํŠธ๋กœ ๋Œ์•„๊ฐ€๊ธฐ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
    		}
    	}
    	catch(Exception e)
    	{
    		System.out.println(e.toString());
    	}
    	finally
    	{
    		try
    		{
    			dao.close();
    		}
    		catch(Exception e)
    		{
    			System.out.println(e.toString());
    		}
    	}
    	// check~!!!
    	// ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์‹œ ์š”์ฒญํ•ด์•ผ ํ•  ํŽ˜์ด์ง€ ์•ˆ๋‚ด
    	response.sendRedirect(strAddr);
    	
    // ๋‚˜๋จธ์ง€ ๋ณด์—ฌ์ฃผ๋Š” ์ฝ”๋“œ ๋ชจ๋‘ ์ œ๊ฑฐ
    %>

    ใ„ดใ„ดMemberInsert.jsp

    <%@page import="com.test.MemberDTO"%>
    <%@page import="com.test.MemberDAO"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%
        // MemberInsert.jsp
        //-- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ”(TBL_MEMBER)์— ํšŒ์› ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ ์•ก์…˜ ์ฒ˜๋ฆฌ ์ˆ˜ํ–‰
        //    ... ์ดํ›„ ... ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‹ค์‹œ ๋ฆฌ์ŠคํŠธ ํŽ˜์ด์ง€(MemberSelect.jsp)๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋„๋ก ์•ˆ๋‚ด
    
        // ์ด์ „ ํŽ˜์ด์ง€๋กœ(MemberInserForm.jsp)๋กœ ๋ถ€ํ„ฐ ๋„˜์–ด์˜จ ๋ฐ์ดํ„ฐ ์ˆ˜์‹ 
        //-> uName, uTel
    
        request.setCharacterEncoding("UTF-8");
        String uName = request.getParameter("uName");
        String uTel = request.getParameter("uTel");
    
        MemberDAO dao = new MemberDAO();
    
        try
        {
            // ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ
            dao.connection();
    
            // MemberDTO ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ์†์„ฑ ๊ตฌ์„ฑ(->add() ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ์„ ์œ„ํ•ด ํ•„์š”)
            MemberDTO member = new MemberDTO();
            member.setName(uName);
            member.setTel(uTel);
    
            // insert ์ฟผ๋ฆฌ๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜๋Š” dao์˜ add() ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ
            dao.add(member);
    
        }
        catch(Exception e)
        {
            System.out.println(e.toString());
        }
        finally
        {
            try
            {
                // ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์ข…๋ฃŒ
                dao.close();
            }
            catch(Exception e)
            {
                System.out.println(e.toString());
            }
        }
    
        // check~!!!
        // ํด๋ผ์ด์–ธํŠธ๊ฐ€ MemberSelect.jsp ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋„๋ก ์•ˆ๋‚ด
        response.sendRedirect("MemberInsertForm.jsp");
    %>

    ใ„ดใ„ดMemberInserForm.jsp

    <%@ page contentType="text/html; charset=UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>MemberInsertForm.jsp</title>
    <!-- <link rel="stylesheet" type="text/css" href="css/main.css"> -->
    <link rel="stylesheet" type="text/css" href="css/MemberScore.css">
    <link rel="stylesheet" type="text/css" href="css/style.css">
    
    <script type="text/javascript">
    // ์ž…๋ ฅํ•˜๊ธฐ ๋ฒ„ํŠผ ํด๋ฆญ์‹œ ํ˜ธ์ถœ๋˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜
    function memberSubmit()
    {
        // ํ™•์ธ
        //alert("ํ•จ์ˆ˜ ํ˜ธ์ถœ~!!!");
    
        var memberForm = document.getElementById("memberForm");
    
        var uName = document.getElementById("uName");
        var nameMsg = document.getElementById("nameMsg");
    
        nameMsg.style.display = "none";
    
        if(uName.value=="")
        {
            nameMsg.style.display="inline";
            uName.focus();
            return;
        }
    
        // form ์„ ์ง์ ‘ ์ง€์ •ํ•˜์—ฌ submit ์•ก์…˜ ์ˆ˜ํ–‰
        memberForm.submit();
    }
    function memberReset()
    {
        // ํ™•์ธ
        //alert("ํ•จ์ˆ˜ ํ˜ธ์ถœ~!!!");
    
        var memberForm = document.getElementById("memberForm");
        var uName = document.getElementById("uName");
        var nameMsg = document.getElementById("nameMsg");
    
        nameMsg.style.display = "none";
    
        // form ์„ ์ง์ ‘ ์ง€์ •ํ•˜์—ฌ reset ์•ก์…˜ ์ˆ˜ํ–‰
        memberForm.reset();
    
        uName.focus();
    }
    </script>
    
    </head>
    <body class="section">
    
    <div>
        <h1>ํšŒ์› <span style="color: #FF8F8F;">๋ช…๋‹จ</span> ๊ด€๋ฆฌ
             ๋ฐ <span style="color: #508D69;">์ž…๋ ฅ</span> ํŽ˜์ด์ง€</h1>
    </div>
    
    <div class="layout">
        <div class="btn_box">
            <a href="MemberSelect.jsp"><button type="button">ํšŒ์› ๋ช…๋‹จ ๊ด€๋ฆฌ</button></a>
        </div>
    
        <div>
            <!-- ํšŒ์› ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ํผ ๊ตฌ์„ฑ -->
            <form action="MemberInsert.jsp" method="post" id="memberForm">
                <table class="table">
                    <tr>
                        <th style="width: 150px;">์ด๋ฆ„(*)</th>
                        <td>
                            <input type="text" id="uName" name="uName">
                        </td>
                        <td>
                            <span class="errMsg" id="nameMsg">์ด๋ฆ„์„ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.</span>
                        </td>
                    </tr>
                    <tr>
                        <th>์ „ํ™”๋ฒˆํ˜ธ</th>
                        <td>
                            <input type="text" id="uTel" name="uTel">
                        </td>
                        <td></td>
                    </tr>
                </table>
    
                <div class="btn_box">
                    <a href="javascript:memberSubmit();"><button type="button">์ž…๋ ฅํ•˜๊ธฐ</button></a>
                    <a href="javascript:memberReset();"><button type="button">์ทจ์†Œํ•˜๊ธฐ</button></a>
                    <a href="MemberSelect.jsp"><button type="button">๋ชฉ๋ก์œผ๋กœ</button></a>
                </div>
            </form>
        </div>
    </div>
    
    
    </body>
    </html>

    ใ„ดใ„ดMemberScoreInsertForm.jsp

    <%@page import="com.test.MemberScoreDTO"%>
    <%@page import="com.test.MemberScoreDAO"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%
    	// MemberScoreInsert.jsp
    	
    	// ์ด์ „ ํŽ˜์ด์ง€(MemberScoreInsertForm.jsp)๋กœ ๋ถ€ํ„ฐ ๋„˜์–ด์˜จ ๋ฐ์ดํ„ฐ ์ˆ˜์‹ 
    	// -> kor, eng, mat + sid
    	
    	String sid = request.getParameter("sid");
    	String kor = request.getParameter("kor");
    	String eng = request.getParameter("eng");
    	String mat = request.getParameter("mat");
    	
    	// MemberScoreDAO ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
    	MemberScoreDAO dao = new MemberScoreDAO();
    	
    	try
    	{
    		// ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ
    		dao.connection();
    		
    		// MemberScoreDTO ๊ฐ์ฒด ๊ตฌ์„ฑ -> add() ๋ฉ”์†Œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜
    		MemberScoreDTO score = new MemberScoreDTO();
    		score.setSid(sid);
    		score.setKor(Integer.parseInt(kor));
    		score.setEng(Integer.parseInt(eng));
    		score.setMat(Integer.parseInt(mat));
    		
    		
    		// dao ์˜ add() ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ -> ๋ฐ์ดํ„ฐ ์ž…๋ ฅ(insert ์ฟผ๋ฆฌ๋ฌธ ์ˆ˜ํ–‰)
    		// -> MemberScoreDTO ๋งค๊ฐœ๋ณ€์ˆ˜ ํ•„์š”
    		dao.add(score);
    		
    		// ์œ„์˜ ๋ฉ”์†Œ๋“œ๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์— ๋”ฐ๋ฅธ ๊ฒฐ๊ณผ ๋ถ„๊ธฐ ์ฝ”๋“œ ์‚ฝ์ž… ๊ฐ€๋Šฅ~!!!
    		
    	}
    	catch(Exception e)
    	{
    		System.out.println(e.toString());
    	}
    	finally
    	{
    		try
    		{
    			// ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์ข…๋ฃŒ
    			dao.close();
    		}
    		catch(Exception e)
    		{
    			System.out.println(e.toString());
    		}
    	}
    	
    	// ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์•ˆ๋‚ด
    	response.sendRedirect("MemberScoreSelect.jsp");	
    
    // ์•„๋ž˜ ๋ณด์—ฌ์ฃผ๋Š” ์ฝ”๋“œ ๋ชจ๋‘ ์ œ๊ฑฐ
    %>

    ใ„ดใ„ดMemberScoreSelect.jsp_ ํšŒ์› ์„ฑ์  ๊ด€๋ฆฌ ๋ฐ ์ถœ๋ ฅ ํŽ˜์ด์ง€

    <%@page import="com.test.MemberScoreDTO"%>
    <%@page import="com.test.MemberScoreDAO"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%
    	StringBuffer str = new StringBuffer();
    	MemberScoreDAO dao = new MemberScoreDAO();
    	
    	try
    	{
    		// ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ
    		dao.connection();
    		
    		str.append("<table class='table'>");
    		str.append("	<tr>");
    		str.append("		<th class='numTh'>๋ฒˆํ˜ธ</th>");
    		str.append("		<th class='nameTh'>์ด๋ฆ„</th>");
    		str.append("		<th>๊ตญ์–ด์ ์ˆ˜</th><th>์˜์–ด์ ์ˆ˜</th><th>์ˆ˜ํ•™์ ์ˆ˜</th>");
    		str.append("		<th>์ด์ </th><th>ํ‰๊ท </th><th>์„์ฐจ</th>");
    		str.append("		<th>์„ฑ์ ์ฒ˜๋ฆฌ</th>");
    		str.append("	</tr>");
    		
    		for(MemberScoreDTO score: dao.lists())
    		{
    			str.append("	<tr>");
    			str.append("		<td>"+score.getSid()+"</td>");
    			str.append("		<td>"+score.getName()+"</td>");
    			str.append("		<td>"+score.getKor()+"</td>");
    			str.append("		<td>"+score.getEng()+"</td>");
    			str.append("		<td>"+score.getMat()+"</td>");
    			str.append("		<td>"+score.getTot()+"</td>");
    			str.append("		<td>"+String.format("%.2f",score.getAvg())+"</td>");
    			str.append("		<td>"+score.getRank()+"</td>");
    			
    			// ์„ฑ์  ์ฒ˜๋ฆฌ ํ•ญ๋ชฉ(์ž…๋ ฅ, ์ˆ˜์ •, ์‚ญ์ œ)
    			/* 
    			str.append("		<td>");
    			str.append("			<button type='button' class='btn01'>์ž…๋ ฅ</button>");
    			str.append("			<button type='button' class='btn01'>์ˆ˜์ •</button>");
    			str.append("			<button type='button' class='btn01'>์‚ญ์ œ</button>");
    			str.append("		</td>");
    			str.append("	</tr>");
    			 */
    			 
    			if(score.getKor()==-1 && score.getEng()==-1 && score.getMat()==-1)
    			{
    				str.append("		<td>");
    				str.append("			<a href='MemberScoreInsertForm.jsp?sid="+score.getSid()+"'><button type='button' class='btn01'>์ž…๋ ฅ</button></a>");
    				str.append("			<button type='button' class='btn01' disabled='disabled'>์ˆ˜์ •</button>");
    				str.append("			<button type='button' class='btn01' disabled='disabled'>์‚ญ์ œ</button>");
    				str.append("		</td>");
    				str.append("	</tr>");
    			}
    			else
    			{
    				str.append("		<td>");
    				str.append("			<button type='button' class='btn01' disabled='disabled'>์ž…๋ ฅ</button>");
    				str.append("			<a href='MemberScoreUpdateForm.jsp?sid="+score.getSid()+"'><button type='button' class='btn01'>์ˆ˜์ •</button></a>");
    				str.append("			<a href='javascript:memberScoreDelete("+score.getSid() +", \"" + score.getName()+"\")'><button type='button' class='btn01'>์‚ญ์ œ</button></a>");
    				str.append("		</td>");
    				str.append("	</tr>");
    			}
    		}
    		str.append("</table>");
    	}
    	catch(Exception e)
    	{
    		System.out.println(e.toString());
    	}
    	finally
    	{
    		try
    		{
    			// ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์ข…๋ฃŒ
    			dao.close();
    		}
    		catch(Exception e)
    		{
    			System.out.println(e.toString());
    		}
    	}
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>MemberScoreSelect.jsp</title>
    <!-- <link rel="stylesheet" type="text/css" href="css/main.css"> -->
    <link rel="stylesheet" type="text/css" href="css/MemberScore.css">
    <link rel="stylesheet" type="text/css" href="css/style.css">
    <script type="text/javascript">
    function memberScoreDelete(sid, name)
    {
    	// ํ™•์ธ
    	//alert("ํ•จ์ˆ˜ ์—ฐ๊ฒฐ");
    	
    	//alert("๋ฒˆํ˜ธ: "+ sid + ",์ด๋ฆ„:" + name);
    	
    	//โ€ป name ์„ ๋ฌธ์ž์—ด๋กœ ๋„˜๊ธฐ๋Š” ๊ณผ์ •์—์„œ ๋”ฐ์˜ดํ‘œ ์ฃผ์˜ํ• ๊ฒƒ~!!!
    	
    	var res = confirm("๋ฒˆํ˜ธ: "+ sid + ",์ด๋ฆ„:" + name + "\n์ด ํšŒ์›์˜ ์ •๋ณด๋ฅผ ์ •๋ง ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?");
    
    	if(res)
    		window.location.href="MemberScoreDelete.jsp?sid="+sid;
    }
    </script>
    
    </head>
    <body class="section">
    
    <div>
    	<h1>ํšŒ์› <span style="color: #62c8eb;">์„ฑ์ </span> ๊ด€๋ฆฌ ๋ฐ ์ถœ๋ ฅ ํŽ˜์ด์ง€</h1>
    </div>
    
    <div class="layout">
    	<div class="btn_box">
    		<a href="MemberSelect.jsp"><button type="button">ํšŒ์› ๋ช…๋‹จ ๊ด€๋ฆฌ</button></a>
    	</div>
    </div>
    
    <!-- ๋ฒˆํ˜ธ ์ด๋ฆ„ ๊ตญ์–ด์ ์ˆ˜ ์˜์–ด์ ์ˆ˜ ์ˆ˜ํ•™์ ์ˆ˜ ์ด์  ํ‰๊ท  ์„์ฐจ		์„ฑ์ ์ฒ˜๋ฆฌ -->
    <!-- 														์ž…๋ ฅ ์ˆ˜์ • ์‚ญ์ œ -->
    <!-- <table>
    	<tr>
    		<th class='numTh'>๋ฒˆํ˜ธ</th>
    		<th class='nameTh'>์ด๋ฆ„</th>
    		<th>๊ตญ์–ด์ ์ˆ˜</th><th>์˜์–ด์ ์ˆ˜</th><th>์ˆ˜ํ•™์ ์ˆ˜</th>
    		<th>์ด์ </th><th>ํ‰๊ท </th><th>์„์ฐจ</th>
    		<th>์„ฑ์ ์ฒ˜๋ฆฌ</th>
    	</tr>
    	<tr>
    		<td>"+score.getSid()+"</td>
    		<td>"+score.getName()+"</td>
    		<td>"+score.getKor()+"</td>
    		<td>"+score.getEng()+"</td>
    		<td>"+score.getMat()+"</td>
    		<td>"+score.getTot()+"</td>
    		<td>"+score.getAvg()+"</td>
    		<td>"+score.getRank()+"</td>
    		<td>
    			<button type='button' class='btn01'>์ž…๋ ฅ</button>
    			<button type='button' class='btn01'>์ˆ˜์ •</button>
    			<button type='button' class='btn01'>์‚ญ์ œ</button>
    		</td>
    	</tr>
    </table> -->
    <%=str.toString() %>
    
    </body>
    </html>

    ใ„ดใ„ดMemberScoreUpdate.jsp

    <%@page import="com.test.MemberScoreDAO"%>
    <%@page import="com.test.MemberScoreDTO"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%
    	// MemberScoreUpdate.jsp
    	
    	String sid = request.getParameter("sid");
    	String korStr = request.getParameter("kor");
    	String engStr = request.getParameter("eng");
    	String matStr = request.getParameter("mat");
    	
    	int kor = Integer.parseInt(korStr);
    	int eng = Integer.parseInt(korStr);
    	int mat = Integer.parseInt(korStr);
    	
    	MemberScoreDAO dao = new MemberScoreDAO();
    	
    	try
    	{
    		dao.connection();
    		
    		MemberScoreDTO member = new MemberScoreDTO();
    		member.setSid(sid);
    		member.setKor(kor);
    		member.setEng(eng);
    		member.setMat(mat);
    		
    		dao.modify(member);
    	}
    	catch(Exception e)
    	{
    		System.out.println(e.toString());
    	}
    	finally
    	{
    		try
    		{
    			dao.close();
    		}
    		catch(Exception e)
    		{
    			System.out.println(e.toString());
    		}
    	}
    	
    	response.sendRedirect("MemberScoreSelect.jsp");
    %>

    ใ„ดใ„ดMemberScoreUpdateForm.jsp

    <%@page import="com.test.MemberScoreDTO"%>
    <%@page import="com.test.MemberScoreDAO"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%
    	// ์ด์ „ ํŽ˜์ด์ง€๋กœ(MemberScoreSelect.jsp)๋ถ€ํ„ฐ ๋„˜์–ด์˜จ ๋ฐ์ดํ„ฐ ์ˆ˜์‹ 
    	// -> sid
    	
    	String sid = request.getParameter("sid");
    	String name = "";
    	int kor = 0;
    	int eng = 0;
    	int mat = 0;
    	
    	// name ์„ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด dao ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
    	MemberScoreDAO dao = new MemberScoreDAO();
    	
    	try
    	{
    		// ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ
    		dao.connection();
    		
    		// ์ˆ˜์‹ ํ•œ sid ๋ฅผ ํ™œ์šฉํ•˜์—ฌ name ๋ฐ ๊ฐ ๊ณผ๋ชฉ์˜ ์ ์ˆ˜ ์–ป์–ด๋‚ด๊ธฐ
    		MemberScoreDTO score = dao.search(sid);
    		name = score.getName();
    		kor = score.getKor();
    		eng = score.getEng();
    		mat = score.getMat();
    	}
    	catch(Exception e)
    	{
    		System.out.println(e.toString());		
    	}
    	finally
    	{
    		try
    		{
    			dao.close();
    		}
    		catch(Exception e)
    		{
    			System.out.println(e.toString());		
    		}
    	}
    	
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>MemberScoreUpdateForm.jsp</title>
    <!-- <link rel="stylesheet" type="text/css" href="css/main.css"> -->
    <link rel="stylesheet" type="text/css" href="css/MemberScore.css">
    <link rel="stylesheet" type="text/css" href="css/style.css">
    
    <script type="text/javascript">
    // ์ž…๋ ฅํ•˜๊ธฐ ๋ฒ„ํŠผ ํด๋ฆญ์‹œ ํ˜ธ์ถœ๋˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜
    function memberScoreSubmit()
    {
    	// ํ™•์ธ
    	//alert("ํ•จ์ˆ˜ ํ˜ธ์ถœ~!!!");
    	
    	var memberScoreForm = document.getElementById("memberScoreForm");
    	
    	var kor = document.getElementById("kor");
    	var eng = document.getElementById("eng");
    	var mat = document.getElementById("mat");
    	
    	var korMsg = document.getElementById("korMsg");
    	var engMsg = document.getElementById("engMsg");
    	var matMsg = document.getElementById("matMsg");
    	
    	korMsg.style.display = "none";
    	engMsg.style.display = "none";
    	matMsg.style.display = "none";
    	
    	
    	if(kor.value=="" || isNaN(kor.value) || Number(kor.value)<0 || Number(kor.value)>100)
    	{
    		korMsg.style.display ="inline";
    		kor.focus();
    		return;
    	}
    	if(eng.value=="" || isNaN(eng.value) || Number(eng.value)<0 || Number(eng.value)>100)
    	{
    		engMsg.style.display ="inline";
    		eng.focus();
    		return;
    	}
    	if(mat.value=="" || isNaN(mat.value) || Number(mat.value)<0 || Number(mat.value)>100)
    	{
    		matMsg.style.display ="inline";
    		mat.focus();
    		return;
    	}
    	
    	memberScoreForm.submit();
    }// end memberScoreForm.submit()
    
    function memberScoreReset()
    {
    	// ํ™•์ธ
    	//alert("ํ•จ์ˆ˜ ํ˜ธ์ถœ~!!!");
    	
    	var memberScoreForm = document.getElementById("memberScoreForm");
    	var kor = document.getElementById("kor");
    	
    	var korMsg = document.getElementById("korMsg");
    	var engMsg = document.getElementById("engMsg");
    	var matMsg = document.getElementById("matMsg");
    	
    	korMsg.style.display="none";
    	engMsg.style.display="none";
    	matMsg.style.display="none";
    	
    	memberScoreForm.reset();
    	
    	kor.focus();
    }
    
    </script>
    
    </head>
    <body class="section">
    
    <div>
    	<h1>ํšŒ์› <span style="color: #62c8eb;">์„ฑ์ </span> ๊ด€๋ฆฌ
    		 ๋ฐ <span style="color: #508D69;">์ˆ˜์ •</span> ํŽ˜์ด์ง€</h1>
    </div>
    
    <div class="layout">
    	<div class="btn_box">
    		<a href="MemberScoreSelect.jsp"><button type="button">ํšŒ์› ์„ฑ์  ๊ด€๋ฆฌ</button></a>
    	</div>
    	
    	<div>
    		<!-- ์„ฑ์  ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ํผ ๊ตฌ์„ฑ -->
    		<form action="MemberScoreUpdate.jsp?sid=<%=sid %>" method="post" id="memberScoreForm">
    			<table class="table">
    				<tr>
    					<th>๋ฒˆํ˜ธ</th>
    					<td><%=sid %></td>	<!-- 1 -->
    					<td></td>
    				</tr>
    				<tr>
    					<th style="width: 150px;">์ด๋ฆ„(*)</th>
    					<td>
    						<%=name %>		<!-- ๋ฌธ์ •ํ™˜ -->
    					</td>
    					<td></td>
    				</tr>
    				<tr>
    					<th>๊ตญ์–ด์ ์ˆ˜</th>
    					<td>
    						<input type="text" id="kor" name="kor" value="<%=kor%>" style="text-align:center;">
    					</td>
    					<td>
    						<span class="errMsap" id="korMsg" style="display:none;color: #FF8F8F;">0~100 ์‚ฌ์ด์˜ ๊ตญ์–ด์ ์ˆ˜ ์ž…๋ ฅ</span>
    					</td>
    				</tr>
    				<tr>
    					<th>์˜์–ด์ ์ˆ˜</th>
    					<td>
    						<input type="text" id="eng" name="eng" value="<%=eng%>" style="text-align:center;">
    					</td>
    					<td>
    						<span class="errMsap" id="engMsg" style="display:none;color: #FF8F8F;">0~100 ์‚ฌ์ด์˜ ์˜์–ด์ ์ˆ˜ ์ž…๋ ฅ</span>
    					</td>
    				</tr>
    				<tr>
    					<th>์ˆ˜ํ•™์ ์ˆ˜</th>
    					<td>
    						<input type="text" id="mat" name="mat" value="<%=mat%>" style="text-align:center;">
    					</td>
    					<td>
    						<span class="errMsap" id="matMsg" style="display:none;color: #FF8F8F;">0~100 ์‚ฌ์ด์˜ ์ˆ˜ํ•™์ ์ˆ˜ ์ž…๋ ฅ</span>
    					</td>
    				</tr>
    			</table>
    			
    			<div class="btn_box">
    				<a href="javascript:memberScoreSubmit();"><button type="button">์ˆ˜์ •ํ•˜๊ธฐ</button></a>
    				<a href="javascript:memberScoreReset();"><button type="button">์ทจ์†Œํ•˜๊ธฐ</button></a>
    				<a href="MemberScoreSelect.jsp"><button type="button">๋ชฉ๋ก์œผ๋กœ</button></a>
    			</div>
    		</form>
    	</div>
    </div>
    
    
    </body>
    </html>

    ใ„ดใ„ดMemberSelect.jsp_ํšŒ์› ๋ช…๋‹จ ๊ด€๋ฆฌ ๋ฐ ์ถœ๋ ฅ ํŽ˜์ด์ง€

    str.append("                <a href='javascript:memberDelete("+member.getSid()+", \""+member.getName()+"\");'>");

    // memberDelete(1, '๋…ธ์€ํ•˜');
    โ€ป ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋”ฐ์˜ดํ‘œ์˜ ์ข…๋ฅ˜
    โ‘ ""   โ‘ก''   โ‘ข\\"\\"
    ์ผ๋ฐ˜์ ์œผ๋กœ ๋”ฐ์˜ดํ‘œ๊ฐ€ ๋‘ ๋ฒˆ ์ค‘์ฒฉ๋˜์–ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด โ‘ ๊ณผ โ‘ก๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
    ํ•˜์ง€๋งŒ, ๋”ฐ์˜ดํ‘œ๊ฐ€ ์„ธ ๋ฒˆ ์ค‘์ฒฉ๋˜์–ด ์‚ฌ์šฉ๋  ๊ฒฝ์šฐ โ‘ข escape๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

    <%@page import="com.test.MemberDTO"%>
    <%@page import="com.test.MemberDAO"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%
    	StringBuffer str = new StringBuffer();
    	MemberDAO dao = new MemberDAO();
    	
    	try
    	{
    		dao.connection();
    		
    		str.append("<table class='table'>");
    		str.append("		<tr>");
    		str.append("			<th style='width: 50px'>๋ฒˆํ˜ธ</th>");
    		str.append("			<th style='width: 50px'>์ด๋ฆ„</th>");
    		str.append("			<th style='width: 50px'>์ „ํ™”๋ฒˆํ˜ธ</th>");
    		str.append("			<th style='width: 50px'>๊ด€๋ฆฌ</th>");
    		str.append("		</tr>");
    		
    		for(MemberDTO member:dao.lists())
    		{
    			str.append("		<tr>");
    			str.append("			<td>"+ member.getSid() +"</td>");
    			str.append("			<td>"+ member.getName() +"</td>");
    			str.append("			<td>"+ member.getTel() +"</td>");
    			str.append("			<td>");
    			str.append("				<a href='MemberUpdateForm.jsp?sid="+ member.getSid() +"'>");
    			str.append("					<button type='button' class='btn01'>์ˆ˜์ •</button>");
    			str.append("				</a>");
    			
    			/* str.append("				<a href='javascript:memberDelete("+member.getSid()+","+member.getName()+");'>"); */
    			str.append("				<a href='javascript:memberDelete("+member.getSid()+", \""+member.getName()+"\");'>");
    			
    			// memberDelete(1, '๋…ธ์€ํ•˜');
    			// โ€ป ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋”ฐ์˜ดํ‘œ์˜ ์ข…๋ฅ˜
    			//		โ‘ "" โ‘ก'' โ‘ข\"\"
    			//		์ผ๋ฐ˜์ ์œผ๋กœ ๋”ฐ์˜ดํ‘œ๊ฐ€ ๋‘ ๋ฒˆ ์ค‘์ฒฉ๋˜์–ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด โ‘ ๊ณผ โ‘ก๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
    			//		ํ•˜์ง€๋งŒ, ๋”ฐ์˜ดํ‘œ๊ฐ€ ์„ธ ๋ฒˆ ์ค‘์ฒฉ๋˜์–ด ์‚ฌ์šฉ๋  ๊ฒฝ์šฐ โ‘ข escape๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
    			
    			str.append("					<button type='button' class='btn01'>์‚ญ์ œ</button>");
    			str.append("				</a>");
    			str.append("			</td>");
    			str.append("		</tr>");
    		}
    		str.append("</table>");
    		
    	}               		
    	catch(Exception e)
    	{
    		System.out.println(e.toString());
    	}
    	finally
    	{
    		try
    		{
    			//DBConn.close();
    		}
    		catch(Exception e)
    		{
    			System.out.println(e.toString());
    		}
    	}
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>MemberSelect.jsp</title>
    <!-- <link rel="stylesheet" type="text/css" href="css/main.css"> -->
    <link rel="stylesheet" type="text/css" href="css/MemberScore.css">
    <link rel="stylesheet" type="text/css" href="css/style.css">
    <script type="text/javascript">
    function memberDelete(sid, name)
    {
    	// ํ™•์ธ
    	//alert("ํ•จ์ˆ˜ ํ˜ธ์ถœ~!!!");
    	
    	// ํ™•์ธ
    	//alert("๋ฒˆํ˜ธ:"+ sid +",์ด๋ฆ„:"+name);
    	
    	var res = confirm("๋ฒˆํ˜ธ:"+ sid +",์ด๋ฆ„:"+name+"\n์ด ํšŒ์›์˜ ์ •๋ณด๋ฅผ ์ •๋ง ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?");
    	
    	// ํ™•์ธ
    	//alert(res);
    	//-- confirm() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ํ˜ธ์ถœ๋˜๋Š” ์ฐฝ์€ ์‚ฌ์šฉ์ž์˜ ์˜์‚ฌํ‘œํ˜„ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ true(ํ™•์ธ)๋˜๋Š” false(์ทจ์†Œ)๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋œ๋‹ค.
    	
    	if(res)
    		window.location.href="MemberDelete.jsp?sid="+sid;
    }
    </script>
    
    </head>
    <body class="section">
    
    <div>
    	<h1>ํšŒ์› <span style="color: #FF8F8F;">๋ช…๋‹จ</span> ๊ด€๋ฆฌ ๋ฐ ์ถœ๋ ฅ ํŽ˜์ด์ง€</h1>
    </div>
    
    <div class="layout">
    	<div class="btn_box">
    		<a href="MemberScoreSelect.jsp"><button type="button">ํšŒ์› ์„ฑ์  ๊ด€๋ฆฌ</button></a>
    		<a href="MemberInsertForm.jsp"><button type="button">์‹ ๊ทœ ํšŒ์› ๋“ฑ๋ก</button></a>
    	</div>
    	
    	<!-- ๋ฆฌ์ŠคํŠธ ์ถœ๋ ฅ -->
    	<!-- <table class="table">
    		<tr>
    			<th style="width: 50px">๋ฒˆํ˜ธ</th>
    			<th style="width: 50px">์ด๋ฆ„</th>
    			<th style="width: 50px">์ „ํ™”๋ฒˆํ˜ธ</th>
    			<th style="width: 50px">๊ด€๋ฆฌ</th>
    		</tr>
    		<tr>
    			<td>1</td>
    			<td>ํฌ๋™์ด</td>
    			<td>010-1111-1111</td>
    			<td>
    				<a><button type="button" class="btn01">์ˆ˜์ •</button></a>
    				<a><button type="button" class="btn01">์‚ญ์ œ</button></a>
    			</td>
    		</tr>
    		<tr>
    			<td>2</td>
    			<td>๋„์šฐ๋„ˆ</td>
    			<td>010-2222-2222</td>
    			<td>
    				<a><button type="button" class="btn01">์ˆ˜์ •</button></a>
    				<a><button type="button" class="btn01">์‚ญ์ œ</button></a>
    			</td>
    		</tr>
    		<tr>
    			<td>3</td>
    			<td>๋งˆ์ด์ฝœ</td>
    			<td>010-3333-3333</td>
    			<td>
    				<a><button type="button" class="btn01">์ˆ˜์ •</button></a>
    				<a><button type="button" class="btn01">์‚ญ์ œ</button></a>
    			</td>
    		</tr>
    	</table> -->
    	<%=str.toString() %>
    </div>
    
    </body>
    </html>

    ใ„ดใ„ดMemberUpdate.jsp

    <%@page import="com.test.MemberDAO"%>
    <%@page import="com.test.MemberDTO"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%
        //MemberUpdate.jsp
    
        // ์ด์ „ ํŽ˜์ด์ง€๋กœ(MemberUpdateForm.jsp)๋กœ ๋ถ€ํ„ฐ ๋„˜์–ด์˜จ ๋ฐ์ดํ„ฐ ์ˆ˜์‹ 
        //-> sid, uName, uTel
    
        request.setCharacterEncoding("UTF-8");
    
        String sid = request.getParameter("sid");
        String name = request.getParameter("uName");
        String tel = request.getParameter("uTel");
    
        MemberDAO dao = new MemberDAO();
    
        try
        {
            dao.connection();
    
            MemberDTO member = new MemberDTO();
            member.setSid(sid);
            member.setName(name);
            member.setTel(tel);
    
            dao.modify(member);
        }
        catch(Exception e)
        {
            System.out.println(e.toString());
        }
        finally
        {
            try
            {
                dao.close();
            }
            catch(Exception e)
            {
                System.out.println(e.toString());
            }    
        }
    
        // ํด๋ผ์ด์–ธํŠธ์— MemberSelect.jsp ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋„๋ก ์•ˆ๋‚ด~!!!
        response.sendRedirect("MemberSelect.jsp");
    
    // ์ดํ›„ ๋ณด์—ฌ์ง€๋Š” ํŽ˜์ด์ง€ ๊ตฌ์„ฑ ๋ชจ๋‘ ์‚ญ์ œ
    %>

    ใ„ดใ„ดMemberUpdateForm.jsp

    - ๋ฐฉ๋ฒ• โ‘ : type="hidden" ์‚ฌ์šฉ

    <input type="hidden" name="sid" value="<%=sid%>">  

    - ๋ฐฉ๋ฒ• โ‘ก: disabled ์‚ฌ์šฉ

    <input type="text" name="sid" value="<%=sid%>" disabled="disabled">

    - ๋ฐฉ๋ฒ• โ‘ข: get ๋ฐฉ์‹์œผ๋กœ ์ฃผ์†Œ์—์„œ sid ๋„˜๊น€

    <form action="MemberUpdate.jsp?sid=<%=sid %>" method="post" id="memberForm">

     

    <%@page import="com.test.MemberDTO"%>
    <%@page import="com.test.MemberDAO"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%
        // ์ด์ „ ํŽ˜์ด์ง€(MemberSelect.jsp)๋กœ๋ถ€ํ„ฐ ๋„˜์–ด์˜จ ๋ฐ์ดํ„ฐ ์ˆ˜์‹ 
        // -> sid
    
        // ์ˆ˜์‹ ํ•œ sid ๋ฅผ ๊ฐ€์ง€๊ณ  ํšŒ์› ๋ฐ์ดํ„ฐ ์กฐํšŒ
        // ์กฐํšŒํ•ด์„œ ์–ป์–ด๋‚ธ ๋ฐ์ดํ„ฐ๋ฅผ ํผ์— ๊ตฌ์„ฑ
    
        String sid = request.getParameter("sid");
        String name = "";
        String tel = "";
    
        MemberDAO dao = new MemberDAO();
    
        try
        {
            // ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ
            dao.connection();
    
            MemberDTO member = dao.searchMember(sid);
            name = member.getName();
            tel = member.getTel();
        }
        catch(Exception e)
        {
            System.out.println(e.toString());        
        }
        finally
        {
            try
            {
                dao.close();
            }
            catch(Exception e)
            {
                System.out.println(e.toString());
            }
        }
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>MemberUdpateForm.jsp</title>
    <!-- <link rel="stylesheet" type="text/css" href="css/main.css"> -->
    <link rel="stylesheet" type="text/css" href="css/MemberScore.css">
    <link rel="stylesheet" type="text/css" href="css/style.css">
    
    <script type="text/javascript">
    // ์ž…๋ ฅํ•˜๊ธฐ ๋ฒ„ํŠผ ํด๋ฆญ์‹œ ํ˜ธ์ถœ๋˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜
    function memberSubmit()
    {
        // ํ™•์ธ
        //alert("ํ•จ์ˆ˜ ํ˜ธ์ถœ~!!!");
    
        var memberForm = document.getElementById("memberForm");
    
        var uName = document.getElementById("uName");
        var nameMsg = document.getElementById("nameMsg");
    
        nameMsg.style.display = "none";
    
        if(uName.value=="")
        {
            nameMsg.style.display="inline";
            uName.focus();
            return;
        }
    
        // form ์„ ์ง์ ‘ ์ง€์ •ํ•˜์—ฌ submit ์•ก์…˜ ์ˆ˜ํ–‰
        memberForm.submit();
    }
    function memberReset()
    {
        // ํ™•์ธ
        //alert("ํ•จ์ˆ˜ ํ˜ธ์ถœ~!!!");
    
        var memberForm = document.getElementById("memberForm");
        var uName = document.getElementById("uName");
        var nameMsg = document.getElementById("nameMsg");
    
        nameMsg.style.display = "none";
    
        // form ์„ ์ง์ ‘ ์ง€์ •ํ•˜์—ฌ reset ์•ก์…˜ ์ˆ˜ํ–‰
        memberForm.reset();
    
        uName.focus();
    }
    </script>
    
    </head>
    <body class="section">
    
    <div>
        <h1>ํšŒ์› <span style="color: #FF8F8F;">๋ช…๋‹จ</span> ๊ด€๋ฆฌ
             ๋ฐ <span style="color: #61A3BA;">์ˆ˜์ •</span> ํŽ˜์ด์ง€</h1>
    </div>
    
    <div class="layout">
        <div class="btn_box">
            <a href="MemberSelect.jsp"><button type="button">ํšŒ์› ๋ช…๋‹จ ๊ด€๋ฆฌ</button></a>
        </div>
    
        <div>
            <!-- ํšŒ์› ๋ฐ์ดํ„ฐ ์ˆ˜์ • ํผ ๊ตฌ์„ฑ -->
            <!-- <form action="MemberUpdate.jsp" method="post" id="memberForm"> -->
            <!-- ๋ฐฉ๋ฒ• โ‘ข: get ๋ฐฉ์‹์œผ๋กœ ์ฃผ์†Œ์—์„œ sid ๋„˜๊น€ -->
            <form action="MemberUpdate.jsp?sid=<%=sid %>" method="post" id="memberForm">
                <table class="table">
                    <tr>
                        <th>๋ฒˆํ˜ธ</th>
                        <!-- <td>1</td> -->
                        <td>
                            <%=sid %>
                            <!-- **๋ฒˆํ˜ธ(sid)๋ฅผ submit ์‹œ ๋„˜๊ธฐ๋Š” ๋ฐฉ๋ฒ• 3๊ฐ€์ง€** -->
                            <!-- ๋ฐฉ๋ฒ• โ‘ : type="hidden" ์‚ฌ์šฉ -->
                            <input type="hidden" name="sid" value="<%=sid%>">
                            <!-- ๋ฐฉ๋ฒ• โ‘ก: disabled ์‚ฌ์šฉ -->
                            <%-- <input type="text" name="sid" value="<%=sid%>" disabled="disabled"> --%>
                        </td>
                        <td></td>
                    </tr>
                    <tr>
                        <th style="width: 150px;">์ด๋ฆ„(*)</th>
                        <td>
                            <input type="text" id="uName" name="uName" value="<%=name %>">
                        </td>
                        <td>
                            <span class="errMsg" id="nameMsg">์ด๋ฆ„์„ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.</span>
                        </td>
                    </tr>
                    <tr>
                        <th>์ „ํ™”๋ฒˆํ˜ธ</th>
                        <td>
                            <input type="text" id="uTel" name="uTel" value="<%=tel %>">
                        </td>
                        <td></td>
                    </tr>
                </table>
    
    
    
                <div class="btn_box">
                    <a href="javascript:memberSubmit();"><button type="button">์ˆ˜์ •ํ•˜๊ธฐ</button></a>
                    <a href="javascript:memberReset();"><button type="button">์ทจ์†Œํ•˜๊ธฐ</button></a>
                    <a href="MemberSelect.jsp"><button type="button">๋ชฉ๋ก์œผ๋กœ</button></a>
                </div>
            </form>
        </div>
    </div>
    
    
    </body>
    </html>

    ใ„ดใ„ดNotice.jsp

    <%@ page contentType="text/html; charset=UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Notice.jsp</title>
    <!-- <link rel="stylesheet" type="text/css" href="css/main.css"> -->
    <link rel="stylesheet" type="text/css" href="css/style.css">
    </head>
    <body class="section">
    
    <div class="layout">
    	<div class="result_box">
    		ํ•ด๋‹น ํšŒ์›์˜ ์ •๋ณด๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” <br>
    		๋“ฑ๋ก๋œ ์„ฑ์  ์ •๋ณด๋ฅผ ๋จผ์ € ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.<br><br>
    		
    		<a href="MemberSelect.jsp" style="color:blue;">โ–ถ๋ฆฌ์ŠคํŠธ๋กœ ๋Œ์•„๊ฐ€๊ธฐ</a>
    	</div>
    </div>
    </body>
    </html>