티스토리 뷰

DATABASE/JDBC

[JDBC] 회원가입

진심스테이크 2018. 5. 1. 11:14

 

login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>로그인</title>
</head>
<body>
    <form action="login-data.jsp" name="login">
        <table align="center" border="1">
            <tr>
                <td colspan="2" align="center"
                    style="font-weight: bold; font-size: 25px">로그인 페이지</td>
            </tr>
            <tr>
                <td>아이디</td>
                <td><input type="text" id="id" name="id" /></td>
            </tr>
            <tr>
                <td>비밀번호</td>
                <td><input type="password" id="password" name="password" /></td>
            </tr>

            <tr>
                <td colspan="2" align="center"><a
                    href="javascript:login.submit()">로그인</a> &nbsp;&nbsp; <a
                    href="register.jsp">회원가입</a></td>
            </tr>
        </table>
    </form>
</body>
</html>

 

 

 

 

login-data.jsp : 로그인 할 때 데이터 베이스에 있는 정보들을 비교해서 있으면 로그인

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<%
    String id = request.getParameter("id"); //id를 받음
    String password = request.getParameter("password"); //password를 받음

    Connection conn = null;
    PreparedStatement stmt = null;
    ResultSet rs = null;

    try {
        Context init = new InitialContext();
        DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
        conn = ds.getConnection();

        String sql = "select * from info where id=?"; //id에 대한 정보 전체 출력
        stmt = conn.prepareStatement(sql);
        stmt.setString(1, id);
        rs = stmt.executeQuery();

        if (rs.next()) {
            if (password.equals(rs.getString("PASSWORD"))) { //입력한 password가 DB에 있는 password가 같으면
                session.setAttribute("id", id);
                out.println("<script>");
                out.println("location.href='admin.jsp'"); //admin으로 넘김
                out.println("</script>");
            }
        }

        out.println("<script>");
        out.println("location.href='login.jsp'"); //실패시 login으로 넘김
        out.println("</script>");
        
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            rs.close();
            stmt.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

</body>
</html>

 

 

register.jsp : 유효성 검사

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>회원가입</title>
</head>
<body>
    <script language="javascript"
        src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js"></script>
    <script>
        function checks() {
            var hobbyCheck = false;
            var getMail = RegExp(/^[A-Za-z0-9_\.\-]+@[A-Za-z0-9\-]+\.[A-Za-z0-9\-]+/);
            var getCheck = RegExp(/^[a-zA-Z0-9]{4,12}$/);
            var getName = RegExp(/^[가-힣]+$/);
            var fmt = RegExp(/^\d{6}[1234]\d{6}$/); //형식 설정
            var buf = new Array(13); //주민등록번호 배열

            //아이디 공백 확인
            if ($("#id").val() == "") {
                alert("아이디 입력바람");
                $("#id").focus();
                return false;
            }

            //아이디 유효성검사
            if (!getCheck.test($("#id").val())) {
                alert("형식에 맞게 입력해주세요");
                $("#id").val("");
                $("#id").focus();
                return false;
            }

            //아이디 중복 확인

            //아이디 비밀번호 같음 확인
            if ($("#id").val() == $("#password").val()) {
                alert("아이디와 비밀번호가 같습니다");
                $("#password").val("");
                $("#password").focus();
                return false;
            }

            //비밀번호 유효성검사
            if (!getCheck.test($("#password").val())) {
                alert("형식에 맞게 입력해주세요");
                $("#password").val("");
                $("#password").focus();
                return false;
            }

            //비밀번호 확인란 공백 확인
            if ($("#password_check").val() == "") {
                alert("패스워드 확인란을 입력해주세요");
                $("#password_check").focus();
                return false;
            }

            //비밀번호 서로확인
            if ($("#password").val() != $("#password_check").val()) {
                alert("비밀번호가 상이합니다");
                $("#password").val("");
                $("#password_check").val("");
                $("#password").focus();
                return false;
            }

            //이메일 공백 확인
            if ($("#mail").val() == "") {
                alert("이메일을 입력해주세요");
                $("#mail").focus();
                return false;
            }

            //이메일 유효성 검사
            if (!getMail.test($("#mail").val())) {
                alert("이메일형식에 맞게 입력해주세요")
                $("#mail").val("");
                $("#mail").focus();
                return false;
            }

            //이름 공백 검사
            if ($("#name").val() == "") {
                alert("이름을 입력해주세요");
                $("#name").focus();
                return false;
            }

            //이름 유효성 검사
            if (!getName.test($("#name").val())) {
                alert("이름형식에 맞게 입력해주세요")
                $("#name").val("");
                $("#name").focus();
                return false;
            }

            if (($("#id_num").val() == "") || ($("#id_num_back").val() == "")) {
                alert("주민등록번호를 입력해주세요");
                $("#id_num").focus();
                return false;
            }

            if (check_jumin() == false) {
                return false;
            }

            //취미 유효성 검사
            for (var i = 0; i < $('[name="hobby"]').length; i++) {
                if ($('input:checkbox[name="hobby"]').eq(i).is(":checked") == true) {
                    hobbyCheck = true;
                    break;
                }
            }

            if (!hobbyCheck) {
                alert("하나이상 관심분야를 체크해 주세요");
                return false;
            }

            //자기소개란 공백 검사
            if ($("#intro").val() == "") {
                alert("자기소개를 입력해주세요")
                $("#intro").val("");
                $("#intro").focus();
                return false;
            }
            return true;
        }

        function check_jumin() {
            var jumins3 = $("#id_num").val() + $("#id_num_back").val();
            //주민등록번호 생년월일 전달

            var fmt = RegExp(/^\d{6}[1234]\d{6}$/) //포멧 설정
            var buf = new Array(13);

            //주민번호 유효성 검사
            if (!fmt.test(jumins3)) {
                alert("주민등록번호 형식에 맞게 입력해주세요");
                $("#id_num").focus();
                return false;
            }

            //주민번호 존재 검사
            for (var i = 0; i < buf.length; i++) {
                buf[i] = parseInt(jumins3.charAt(i));
            }

            var multipliers = [ 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5 ];// 밑에 더해주는 12자리 숫자들 
            var sum = 0;

            for (var i = 0; i < 12; i++) {
                sum += (buf[i] *= multipliers[i]);// 배열끼리12번 돌면서 
            }

            if ((11 - (sum % 11)) % 10 != buf[12]) {
                alert("잘못된 주민등록번호 입니다.");
                $("#id_num").focus();
                return false;
            }

            var birthYear = (jumins3.charAt(6) <= "2") ? "19" : "20";
            birthYear += $("#id_num").val().substr(0, 2);
            var birthMonth = $("#id_num").val().substr(2, 2);
            var birthDate = $("#id_num").val().substr(4, 2);
            var birth = new Date(birthYear, birthMonth, birthDate);

            $("#year").val(birthYear);
            $("#month").val(birthMonth);
            $("#date").val(birthDate);
        }
    </script>
</head>
<body>
    <form action="data.jsp" name="joinform" method="post"
        onsubmit="return checks()">
        <table border="1" bordercolor="grey" align="center">
            <tr>
                <td colspan="2" bgcolor="lightblue" align="center">회원 기본 정보</td>
            </tr>
            <tr>
                <td bgcolor="lightgrey" align="center">아이디</td>
                <td><input size="15" type="text" name="id" id="id">
                    4~12자의 영문 대소문자와 숫자로만 입력</td>
            </tr>
            <tr>
                <td bgcolor="lightgrey" align="center">비밀번호</td>
                <td><input size="15" type="password" name="password"
                    id="password"> 4~12자의 영문 대소문자와 숫자로만 입력</td>
            </tr>
            <tr>
                <td bgcolor="lightgrey" align="center">비밀번호 확인</td>
                <td><input size="15" type="password" name="password_check"
                    id="password_check"></td>
            </tr>
            <tr>
                <td bgcolor="lightgrey" align="center">메일 주소</td>
                <td><input type="text" name="mail" id="mail"> 예)
                    id@domain.com</td>
            </tr>
            <tr>
                <td bgcolor="lightgrey" align="center">이름</td>
                <td><input type="text" name="name" id="name"></td>
            </tr>
            <tr>
                <td colspan="2" bgcolor="lightblue" align="center">개인 신상 정보</td>
            </tr>
            <tr>
                <td bgcolor="lightgrey" align="center">주민등록번호</td>
                <td><input size="7" type="text" name="id_num" id="id_num">
                    - <input size="7" type="password" name="id_num_back"
                    id="id_num_back" onBlur="check_jumin()"> 예)123456-1234567</td>
            </tr>
            <tr>
                <td align="center" bgcolor="lightgrey"><b>생일</b></td>
                <td><input type="text" AUTOCOMPLETE="off" name="year" id="year"
                    size="4" readonly><b> 년</b> <input type="text"
                    AUTOCOMPLETE="off" name="month" id="month" style="width: 20px;"
                    readonly><b> 월</b> <input type="text" AUTOCOMPLETE="off"
                    name="date" id="date" style="width: 20px;" readonly><b>
                        일</b></td>
            </tr>
            <tr>
                <td bgcolor="lightgrey" align="center">관심분야</td>
                <td><input type="checkbox" name="hobby" value="컴퓨터">컴퓨터
                    <input type="checkbox" name="hobby" value="인터넷">인터넷 <input
                    type="checkbox" name="hobby" value="여행">여행 <input
                    type="checkbox" name="hobby" value="영화감상">영화감상 <input
                    type="checkbox" name="hobby" value="음악감상">음악감상</td>
            </tr>
            <tr>
                <td bgcolor="lightgrey" align="center">자기소개</td>
                <td><textarea cols="50"
                        style="margin: 0px; height: 300px; width: 480px" name="intro"></textarea>
                    <!--크기 조정 가능--></td>
            </tr>
            <tr>
                <td colspan="2" align="center">
                <input type="submit" value="회원가입"> 
                <input type="reset" value="다시 입력">
                </td>
            </tr>
        </table>
    </form>
</body>
</html>

 

 

 

 

data.jsp : register.jsp에서 입력한 정보를 받아서 데이터 베이스에 넘겨줌

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<%
    request.setCharacterEncoding("utf-8");

    Connection conn = null;
    PreparedStatement stmt = null;


    //register에서 입력한 정보들을 받음
    String id = request.getParameter("id");
    String password = request.getParameter("password");
    String mail = request.getParameter("mail");
    String name = request.getParameter("name");
    String id_num = request.getParameter("id_num");
    String id_num_back = request.getParameter("id_num_back");
    String year = request.getParameter("year");
    String month = request.getParameter("month");
    String day = request.getParameter("date");
    String[] hobby = request.getParameterValues("hobby");
    String intro = request.getParameter("intro");
    StringBuffer hobbies = new StringBuffer(); //배열을 하나의 String으로 보냄
    for (String s : hobby) { //배열을 하나의 String으로 합침
        hobbies.append(s).append(" ");
    }

    try {
        Context init = new InitialContext();
        DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
        conn = ds.getConnection();

        String sql = "INSERT INTO info(id, password, mail, name, id_num, id_num_back, year, month, day, hobby, intro) VALUES(?,?,?,?,?,?,?,?,?,?,?)";
        stmt = conn.prepareStatement(sql);
        //DB에 저장
        stmt.setString(1, id);
        stmt.setString(2, password);
        stmt.setString(3, mail);
        stmt.setString(4, name);
        stmt.setString(5, id_num);
        stmt.setString(6, id_num_back);
        stmt.setString(7, year);
        stmt.setString(8, month);
        stmt.setString(9, day);
        stmt.setString(10, hobbies.toString());
        stmt.setString(11, intro);

        int result = stmt.executeUpdate();

        if (result != 0) {
            out.println("<script>");
            out.println("location.href='login.jsp'");
            out.println("</script>");
        } else {
            out.println("<script>");
            out.println("location.href='register.jsp'");
            out.println("</script>");
        }

    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            stmt.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
</body>
</html>

 

 

admin.jsp : 로그인 완료시, 아이디가 admin(관리자)이면 관리자모드로, 아니면 사용자모드로 들어감

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<%
    String id = null;

    if (session.getAttribute("id") != null) { //id가 존재할 때
        id = (String) session.getAttribute("id");
    } else { //id가 존재하지 않을 때
        out.println("<script>");
        out.println("location.href='login.jsp'");
        out.println("</script>");
    }
%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>관리자 메인 페이지</title>
</head>
<body>
    <!-- 모든 사용자 정보 출력 / 정보 삭제 -->
    <h3><%=id%>님이 로그인하셨습니다
    </h3>
    <%
        if (id.equals("admin")) {
    %>
    <a href="admin-total.jsp">관리자모드 접속</a>
    <%
        } else {
    %>
    <a href="my_info.jsp?id=<%=id%>">내 정보 보기</a>
    <a href="fix.jsp?id=<%=id%>">내 정보 수정</a>
    <%
        }
    %>
</body>
</html>
 
 

 

- 관리자 모드

 

 

- 사용자모드

 

 

 


 

 

관리자

 

admin-total.jsp : 모든 사용자의 정보를 볼 수 있고, 삭제 가능

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<%
    //String id = null;
    if ((session.getAttribute("id") == null) || (!((String) session.getAttribute("id")).equals("admin"))) {
        out.println("<script>");
        out.println("location.href='login.jsp'");
        out.println("</script>");
    }

    Connection conn = null;
    PreparedStatement stmt = null;
    ResultSet rs = null;

    try {
        Context init = new InitialContext();
        DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
        conn = ds.getConnection();

        String sql = "select * from info";
        stmt = conn.prepareStatement(sql);
        rs = stmt.executeQuery();
    } catch (Exception e) {
        e.printStackTrace();
    }
%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>관리자 모드</title>
</head>
<body>
    <table>
        <tr>
            <td colspan="2">회원 목록</td>
        </tr>
        <%
            while (rs.next()) {
        %>
        <tr>
            <td><a href="member_info.jsp?id=<%=rs.getString("id")%>"> <%=rs.getString("id")%></a></td>
            <td><a href="delete.jsp?id=<%=rs.getString("id")%>">삭제</a></td>
        </tr>
        <%
            }
        %>
    </table>
</body>
</html>

 

 

member_info.jsp : 사용자 마다 정보 출력

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<%
    String id = null;
    if ((session.getAttribute("id") == null) || (!((String) session.getAttribute("id")).equals("admin"))) {
        out.println("<script>");
        out.println("location.href='login.jsp'");
        out.println("</script>");
    }

    String info_id = request.getParameter("id");

    Connection conn = null;
    PreparedStatement stmt = null;
    ResultSet rs = null;

    try {
        Context init = new InitialContext();
        DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
        conn = ds.getConnection();

        String sql = "select * from info where id=?";
        stmt = conn.prepareStatement(sql);
        stmt.setString(1, info_id);
        rs = stmt.executeQuery();
        rs.next();

    } catch (Exception e) {
        e.printStackTrace();
    }
%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>회원 정보 보여주기</title>
</head>
<body>
    <table>
        <tr>
            <td>아이디</td>
            <td><%=rs.getString("id")%></td>
        </tr>
        <tr>
            <td>비밀번호</td>
            <td><%=rs.getString("password")%></td>
        </tr>
        <tr>
            <td>이메일</td>
            <td><%=rs.getString("mail")%></td>
        </tr>
        <tr>
            <td>주민등록번호</td>
            <td><%=rs.getString("id_num")%> - <%=rs.getString("id_num_back")%>
            </td>
        </tr>
        <tr>
            <td>생일</td>
            <td><%=rs.getString("year")%>년 <%=rs.getString("month")%>월 <%=rs.getString("day")%>일</td>
        </tr>
        <tr>
            <td>취미</td>
            <td><%=rs.getString("hobby")%></td>
        </tr>
        <tr>
            <td>자기 소개</td>
            <td><%=rs.getString("intro")%></td>
        </tr>
    </table>
</body>
</html>

 

 

delete.jsp : 사용자 삭제

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<%
    String id = null;

    if ((session.getAttribute("id") == null) || (!((String) session.getAttribute("id")).equals("admin"))) {
        out.println("<script>");
        out.println("location.href='login.jsp'");
        out.println("</script>");
    }

    String delete_id = request.getParameter("id");

    Connection conn = null;
    PreparedStatement stmt = null;
    ResultSet rs = null;

    try {
        Context init = new InitialContext();
        DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
        conn = ds.getConnection();

        String sql = "delete from info where id=?";
        stmt = conn.prepareStatement(sql);
        stmt.setString(1, delete_id);
        stmt.executeQuery();

        out.println("<script>");
        out.println("location.href='admin-total.jsp'");
        out.println("</script>");
        
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            stmt.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>정보 삭제</title>
</head>
<body>
</body>
</html>

 

 

 


 

 

사용자

 

my_info.jsp : 사용자 정보 출력

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<%
    String id = null;
    request.setCharacterEncoding("utf-8");

    String info_id = request.getParameter("id"); //id를 받아옴

    Connection conn = null;
    PreparedStatement stmt = null;
    ResultSet rs = null;

    try { //데이터 베이스에 연결
        Context init = new InitialContext();
        DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
        conn = ds.getConnection();

        String sql = "select * from info where id=?"; //id에 대한 정보를 모두 출력
        stmt = conn.prepareStatement(sql); //sql문 출력
        stmt.setString(1, info_id);
        rs = stmt.executeQuery();
        rs.next();

    } catch (Exception e) {
        e.printStackTrace();
    }
%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>내 정보 보기</title>
</head>
<body>

    <form>
        <table>
            <tr>
                <td>아이디</td>
                <td><%=rs.getString("id")%></td>
            </tr>
            <tr>
                <td>비밀번호</td>
                <td><%=rs.getString("password")%></td>
            </tr>
            <tr>
                <td>이메일</td>
                <td><%=rs.getString("mail")%></td>
            </tr>
            <tr>
                <td>주민등록번호</td>
                <td><%=rs.getString("id_num")%> - <%=rs.getString("id_num_back")%>
                </td>
            </tr>
            <tr>
                <td>생일</td>
                <td><%=rs.getString("year")%>년 <%=rs.getString("month")%>월 <%=rs.getString("day")%>일</td>
            </tr>
            <tr>
                <td>취미</td>
                <td><%=rs.getString("hobby")%></td>
            </tr>
            <tr>
                <td>자기소개</td>
                <td><%=rs.getString("intro")%></td>
            </tr>
            <tr>
                <td><a href="javascript:history.back()">뒤로가기</a>
            </tr>
        </table>
    </form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<%
    String id = null;
    request.setCharacterEncoding("utf-8");

    String info_id = request.getParameter("id"); //id를 받아옴

    Connection conn = null;
    PreparedStatement stmt = null;
    ResultSet rs = null;

    try { //데이터 베이스에 연결
        Context init = new InitialContext();
        DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
        conn = ds.getConnection();

        String sql = "select * from info where id=?"; //id에 대한 정보를 모두 출력
        stmt = conn.prepareStatement(sql); //sql문 출력
        stmt.setString(1, info_id);
        rs = stmt.executeQuery();
        rs.next();

    } catch (Exception e) {
        e.printStackTrace();
    }
%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>내 정보 보기</title>
</head>
<body>

    <form>
        <table>
            <tr>
                <td>아이디</td>
                <td><%=rs.getString("id")%></td>
            </tr>
            <tr>
                <td>비밀번호</td>
                <td><%=rs.getString("password")%></td>
            </tr>
            <tr>
                <td>이메일</td>
                <td><%=rs.getString("mail")%></td>
            </tr>
            <tr>
                <td>주민등록번호</td>
                <td><%=rs.getString("id_num")%> - <%=rs.getString("id_num_back")%>
                </td>
            </tr>
            <tr>
                <td>생일</td>
                <td><%=rs.getString("year")%>년 <%=rs.getString("month")%>월 <%=rs.getString("day")%>일</td>
            </tr>
            <tr>
                <td>취미</td>
                <td><%=rs.getString("hobby")%></td>
            </tr>
            <tr>
                <td>자기소개</td>
                <td><%=rs.getString("intro")%></td>
            </tr>
            <tr>
                <td><a href="javascript:history.back()">뒤로가기</a>
            </tr>
        </table>
    </form>
</body>
</html>
 

 

fix.jsp : 정보 수정 창 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<script language="javascript"
    src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js"></script>
<script>
    function checks() {
        var hobbyCheck = false;
        var getMail = RegExp(/^[A-Za-z0-9_\.\-]+@[A-Za-z0-9\-]+\.[A-Za-z0-9\-]+/);
        var getCheck = RegExp(/^[a-zA-Z0-9]{4,12}$/);
        var fmt = RegExp(/^\d{6}[1234]\d{6}$/); //형식 설정

        //비밀번호 유효성검사
        if (!getCheck.test($("#password").val())) {
            alert("형식에 맞게 입력해주세요");
            $("#password").val("");
            $("#password").focus();
            return false;
        }

        //비밀번호 확인란 공백 확인
        if ($("#password_check").val() == "") {
            alert("패스워드 확인란을 입력해주세요");
            $("#password_check").focus();
            return false;
        }

        //비밀번호 서로확인
        if ($("#password").val() != $("#password_check").val()) {
            alert("비밀번호가 상이합니다");
            $("#password").val("");
            $("#password_check").val("");
            $("#password").focus();
            return false;
        }

        //이메일 공백 확인
        if ($("#mail").val() == "") {
            alert("이메일을 입력해주세요");
            $("#mail").focus();
            return false;
        }

        //이메일 유효성 검사
        if (!getMail.test($("#mail").val())) {
            alert("이메일형식에 맞게 입력해주세요")
            $("#mail").val("");
            $("#mail").focus();
            return false;
        }

        //취미 유효성 검사
        for (var i = 0; i < $('[name="hobby"]').length; i++) {
            if ($('input:checkbox[name="hobby"]').eq(i).is(":checked") == true) {
                hobbyCheck = true;
                break;
            }
        }

        if (!hobbyCheck) {
            alert("하나이상 관심분야를 체크해 주세요");
            return false;
        }

        //자기소개란 공백 검사
        if ($("#intro").val() == "") {
            alert("자기소개를 입력해주세요")
            $("#intro").val("");
            $("#intro").focus();
            return false;
        }
        return true;
    }
</script>
<%
    String id = request.getParameter("id");
    request.setCharacterEncoding("utf-8");

    Connection conn = null;
    PreparedStatement stmt = null;
    ResultSet rs = null;

    try {
        Context init = new InitialContext();
        DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
        conn = ds.getConnection();

        String sql = "select * from info where id=?";
        stmt = conn.prepareStatement(sql);
        stmt.setString(1, id);
        rs = stmt.executeQuery();
        rs.next();

    } catch (Exception e) {
        e.printStackTrace();
    }
    
%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>개인 정보 수정</title>
</head>
<body>
    <form action="fix-data.jsp" name="fix" method="post" onsubmit="return checks()">
        <table border="1" bordercolor="grey" align="center">
            <tr>
                <td colspan="2" bgcolor="lightblue" align="center">회원 기본 정보</td>
            </tr>
            <tr>
                <td bgcolor="lightgrey" align="center">아이디</td>
                <td><%=rs.getString("id")%></td>
            </tr>
            <tr>
                <td bgcolor="lightgrey" align="center">비밀번호</td>
                <td><input size="15" type="password" name="password"
                    id="password"> 4~12자의 영문 대소문자와 숫자로만 입력</td>
            </tr>
            <tr>
                <td bgcolor="lightgrey" align="center">비밀번호 확인</td>
                <td><input size="15" type="password" name="password_check"
                    id="password_check"></td>
            </tr>
            <tr>
                <td bgcolor="lightgrey" align="center">메일 주소</td>
                <td><input type="text" name="mail" id="mail"> 예)
                    id@domain.com</td>
            </tr>
            <tr>
                <td bgcolor="lightgrey" align="center">이름</td>
                <td><%=rs.getString("name")%></td>
            </tr>
            <tr>
                <td colspan="2" bgcolor="lightblue" align="center">개인 신상 정보</td>
            </tr>
            <tr>
                <td bgcolor="lightgrey" align="center">주민등록번호</td>
                <td><%=rs.getString("id_num")%> - <%=rs.getString("id_num_back")%>
                </td>
            </tr>
            <tr>
                <td align="center" bgcolor="lightgrey"><b>생일</b></td>
                <td><%=rs.getString("year")%>년 <%=rs.getString("month")%>월 <%=rs.getString("day")%>일
                </td>
            </tr>
            <tr>
                <td bgcolor="lightgrey" align="center">관심분야</td>
                <td><input type="checkbox" name="hobby" value="컴퓨터">컴퓨터
                    <input type="checkbox" name="hobby" value="인터넷">인터넷 <input
                    type="checkbox" name="hobby" value="여행">여행 <input
                    type="checkbox" name="hobby" value="영화감상">영화감상 <input
                    type="checkbox" name="hobby" value="음악감상">음악감상</td>
            </tr>
            <tr>
                <td bgcolor="lightgrey" align="center">자기소개</td>
                <td><textarea cols="50"
                        style="margin: 0px; height: 300px; width: 480px" name="intro"></textarea>
                    <!--크기 조정 가능--></td>
            </tr>
            <tr>
                <td colspan="2" align="center"><input type="submit" value="수정완료"></td>
        </table>
    </form>
</body>
</html>
 

 

수정할 수 있는 정보만 수정 가능하게 비워둠 

 

 

 

fix_data.jsp : 수정한 정보를 데이터 베이스에 올려주는 페이지

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<%
    request.setCharacterEncoding("utf-8");
    String id = (String) session.getAttribute("id");
    String password = request.getParameter("password");
    String mail = request.getParameter("mail");
    String[] hobby = request.getParameterValues("hobby");
    String intro = request.getParameter("intro");
    StringBuffer hobbies = new StringBuffer(); //배열을 하나의 String으로 보냄
    for (String s : hobby) {
        hobbies.append(s).append(" ");
    }
    
    if(password==null){
        
    }

    Connection conn = null;
    PreparedStatement stmt = null;
    ResultSet rs = null;

    try {
        Context init = new InitialContext();
        DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
        conn = ds.getConnection();

        String sql = "update info set password=?, mail=?, hobby=?, intro=? where id=?";
        stmt = conn.prepareStatement(sql);
        
        stmt.setString(1, password);
        stmt.setString(2, mail);
        stmt.setString(3, hobbies.toString());
        stmt.setString(4, intro);
        stmt.setString(5, id);

        int result = stmt.executeUpdate();

        out.println("<script>");
        out.println("location.href='admin.jsp'");
        out.println("</script>");

    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            rs.close();
            stmt.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

        out.println("<script>");
        out.println("location.href='login.jsp'");
        out.println("</script>");
    }
%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>수정 정보</title>
</head>
<body>

</body>
</html>

 

 

 

'DATABASE > JDBC' 카테고리의 다른 글

[JDBC] PROGRAMMIG STEPS  (0) 2018.05.01
[JDBC] IMAGE THUMBNAIL  (0) 2018.05.01
[JDBC] FILE UPLOAD  (0) 2018.05.01
[JDBC] BASIC THINGS  (0) 2018.04.30
댓글