Cohe

JSP mini project : mypage 실습4 - 회원 정보 수정 본문

개발 언어/JSP

JSP mini project : mypage 실습4 - 회원 정보 수정

코헤0121 2024. 4. 15. 18:10
728x90

update.jsp


<%@page import="com.myweb.user.model.UserVO"%>
<%@page import="com.myweb.user.model.UserDAO"%>
<%@ 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>

<%
    String id = (String)session.getAttribute("user_id");

    if(id ==null){
        response.sendRedirect("user_login.jsp");
    }

    UserDAO dao = UserDAO.getInstance();
    UserVO vo = dao.getInfo(id);


%>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>Welcome to MyWorld</title>

    <!-- Bootstrap Core CSS -->
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">

    <!-- Custom CSS -->
    <link href="../css/business-casual.css" rel="stylesheet">

    <!-- Fonts -->
    <link href="https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet" type="text/css">
    <link href="https://fonts.googleapis.com/css?family=Josefin+Slab:100,300,400,600,700,100italic,300italic,400italic,600italic,700italic" rel="stylesheet" type="text/css">
</head>
<body>
    <%@include file="../include/header.jsp" %>
    <section>
        <div class="container">
            <div class="row">
                <div class="col-md-6 col-md-offset-3">
                    <form name = "regform" class="form-horizontal" action="user_update_ok.jsp" method="post">
                        <h2 class="text-center">회원 정보 수정 페이지</h2>
                        <hr>
                        <div class="form-group">
                            <label class="col-sm-3 control-label">ID</label>
                            <div class="col-sm-9">
                                <input value = "<%=vo.getId() %>" type="text" class="form-control" name="id" readonly="readonly">
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="col-sm-3 control-label">이름</label>
                            <div class="col-sm-9">
                                <input value = "<%=vo.getName() %>" type="text" class="form-control" name="name">
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="col-sm-3 control-label">Email</label>
                            <div class="col-sm-9">
                                <input type="email" class="form-control" name="email" value = "<%=vo.getEmail()%>">
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="col-sm-3 control-label">Address</label>
                            <div class="col-sm-9">
                                <input type="text" class="form-control" name="address" value="<%=vo.getAddress()%>">
                            </div>
                        </div>
                        <div class="form-group">
                            <div class="col-sm-offset-3 col-sm-9">
                                <button type="button" class="btn btn-primary" onclick="check()">회원 정보 수정</button>
                                <button type="button" class="btn btn-info" onclick="location.href='user_mypage.jsp'">마이페이지</button>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </section>
    <%@include file="../include/footer.jsp" %>
    <!-- jQuery -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <!-- Bootstrap Core JavaScript -->
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

    <script type="text/javascript">
        function check(){
            //form은 유일하게 document.태그 이름으로 접근이 가능하다.
            if (document.regform.name.value == ''){
                alert("이름은 필수 사항입니다.");
                return;
            }else if (document.regform.email.value == ''){
                alert("email은 필수 사항입니다.");
                return;
            }
            else if(confirm("회원 정보 수정을 진행 하시겠습니까?")){
                //확인창을 띄워서 확인 취소 중 선택하는 메서드
                document.regform.submit();
            }
        }

    </script>
</body>
</html>

update_ok.jsp


<%@page import="com.myweb.user.model.UserVO"%>
<%@page import="com.myweb.user.model.UserDAO"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%

    request.setCharacterEncoding("utf-8");

    String id = request.getParameter("id");
    if(id ==null){
        response.sendRedirect("user_login.jsp");
    }
    String name = request.getParameter("name");
    String email = request.getParameter("email");
    String address = request.getParameter("address");

    //dao 생성
    UserDAO dao = UserDAO.getInstance();

    UserVO vo = new UserVO(id, null, name, email, address,null);
    int result = dao.update(vo);

    if(result==1){
        session.setAttribute("user_name",name);
    %>
        <script>
        alert("회원정보가 수정되었습니다");
        location.href="user_mypage.jsp";
        </script>
    <%}
    else{%>
        <script>
        alert("회원정보 수정에 실패했습니다);
        location.href="user_mypage.jsp";
        </script>
    <%}    

%>

userDAO- login, update


    public int login(String id, String pw) {
        int result = 0;
        String sql = "select * from users where id=? and pw=?";

        try {
            conn = ds.getConnection();
             System.out.println(conn);
             System.out.println("데이터베이스 접속 성공.");

             pstmt = conn.prepareStatement(sql);

             pstmt.setString(1, id); 
             pstmt.setString(2, pw); 
             rs = pstmt.executeQuery(); // 쿼리 실행 결과를 ResultSet에 저장

             if (rs.next()) {
                 result = 1; // 존재하는 경우 1, 존재하지 않는 경우 0
             }

        }
        catch (Exception e) {
            e.printStackTrace();
        }
        finally {
            JdbcUtil.close(conn, pstmt, rs);
        }

        return result;
    }
    //회원 정보 수집
    public UserVO getInfo(String id) {
        UserVO vo = null;
        String sql = "select * from users where id = ?";

        try {
            int result = 0;
            conn = ds.getConnection();
             System.out.println(conn);
             System.out.println("데이터베이스 접속 성공.");

             pstmt = conn.prepareStatement(sql);

             pstmt.setString(1, id); // id 값이 문자열이므로 setString을 사용하여 데이터 타입을 지정

             rs = pstmt.executeQuery(); // 쿼리 실행 결과를 ResultSet에 저장

             if (rs.next()) {
                 result = 1; // 존재하는 경우 1, 존재하지 않는 경우 0

                 String name = rs.getString("name");
                 String pw = rs.getString("pw");
                 String email = rs.getString("email");
                 String address = rs.getString("address");
                 Timestamp regdate = rs.getTimestamp("regdate");
                 vo = new UserVO(id, pw, name, email, address, regdate);
             }  
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        finally {
            JdbcUtil.close(conn, pstmt, rs);
        }

        return vo;
    }


    public int update(UserVO vo) {
        int result = 0;

        String sql = "update users set name=?, email=?, address=? where id=?";
        try {
            conn = ds.getConnection();

             pstmt = conn.prepareStatement(sql);

             pstmt.setString(1,vo.getName());
             pstmt.setString(2,vo.getEmail());
             pstmt.setString(3,vo.getAddress());

             pstmt.setString(4,vo.getId());

             result = pstmt.executeUpdate();

        }  catch (SQLException sqle) {
             System.out.println("SQL 연동 오류");
             System.out.println(sqle.getMessage());
          }finally {
             try {
                 if(conn!=null) conn.close();
                 if(pstmt!=null) pstmt.close();
                 if(rs!=null) rs.close();
             } catch (Exception e) {
                // TODO: handle exception
             }
          }

        return result;

    }