JDBC CRUD (USER)

Let's Just Go·2022년 5월 28일
0

JDBC

목록 보기
5/5

JDBC

CRUD

include

  • include
    • 모든 페이지에 적용할 수 있도록 스타일을 따로 파일로 만들어 include를 활용하여 모든 페이지에서 적용할 수 있는 스타일 지정

  • Header
    • 어느 페이지를 이동하던지 모든 페이지에 계속 적용될 수 있도록 include를 통해 스타일 지정

    • header.jsp

      <%@ page language="java" contentType="text/html; charset=UTF-8"
      	pageEncoding="UTF-8"%>
      <!DOCTYPE html>
      <html>
      <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-idth, initial-scale=1">
      	
      	
      	<title>Welcome to MyWorld</title>
      	
      	<!-- Bootstrap Core CSS -->
      	<link href="/MyWeb/css/bootstrap.css" rel="stylesheet">
      	
      	<!-- Custom CSS -->
      	<link href="/MyWeb/css/business-casual.css" rel="stylesheet">
      	
      	<!-- Fonts -->
      	<link
      		href="https://fonts.googleapis.com/css?family=Nanum+Pen+Script&display=swap"
      		rel="stylesheet" type="text/css">
      	
      	
      	
      	<!-- jQuery -->
      	<script src="/MyWeb/js/jquery.js"></script>
      	
      	<!-- Bootstrap Core JavaScript -->
      	<script src="/MyWeb/js/bootstrap.min.js"></script>
      
      </head>
      <body>
      	<!-- header -->
      	<div class="brand">
      		<a href="/MyWeb">My Web</a>
      	</div>
      	<div class="address-bar">Welcome to MyWorld</div>
      
      	<nav class="navbar navbar-default" role="navigation">
      		<div class="container">
      			<div class="navbar-header">
      				<button type="button" class="navbar-toggle" data-toggle="collapse"
      					data-target="#bs-example-navbar-collapse-1">
      					<span class="sr-only">Toggle navigation</span> <span
      						class="icon-bar"></span> <span class="icon-bar"></span> <span
      						class="icon-bar"></span>
      				</button>
      
      				<a class="navbar-brand" href="/Test">My First Web</a>
      			</div>
      
      			<div class="collapse navbar-collapse"
      				id="bs-example-navbar-collapse-1">
      				<ul class="nav navbar-nav">
      
      					<li><a href="/MyWeb">HOME</a></li>
      					<li><a href="">Member</a></li>
      					<li><a href="/MyWeb/list.board">BOARD</a></li>
      					<li><a href="/MyWeb/user/user_login.jsp">LOGIN</a></li>
      					<li><a href="/MyWeb/joinPage.user" style="color: red">JOIN</a>
      					</li>
      
      					<!-- 					<li><a href="/MyWeb/user/user_logout.jsp">LOGOUT</a></li>
      					<li><a href="/MyWeb/user/user_mypage.jsp" style="color: red">MYPAGE</a> -->
      					</li>
      
      				</ul>
      			</div>
      
      			<!-- /.navbar-collapse -->
      		</div>
      		<!-- /.container -->
      	</nav>
      	<!-- end header -->
      </body>
      </html>

  • Footer
    • 어느 페이지를 이동하던지 모든 페이지에 계속 적용될 수 있도록 include를 통해 스타일 지정

    • footer.jsp

      <%@ page language="java" contentType="text/html; charset=UTF-8"
      	pageEncoding="UTF-8"%>
      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="UTF-8">
      <title>Insert title here</title>
      </head>
      <body>
      	<!--Footer-->
      	<footer>
      		<div class="container">
      			<div class="row">
      				<div class="col-md-5">
      					<span class="copyright"> Copyright &copy; By Stephen
      						Programming</span>
      				</div>
      				<div class="col-md-3">
      					<ul class="list-inline social">
      						<li class="list-inline-item"><a class="facebook-btn" href="">
      								<img src="/MyWeb/img/facebook.PNG" alt="페이스북 링크">
      						</a></li>
      						<li class="list-inline-item"><a class="instagram-btn" href="">
      								<img src="/MyWeb/img/insta.PNG" alt="인스타 링크">
      						</a></li>
      						<li class="list-inline-item"><a class="twitter-btn" href="">
      								<img src="/MyWeb/img/twitter.PNG" alt="트위터 링크">
      						</a></li>
      					</ul>
      				</div>
      				<div class="col-md-4">
      					<span class="contact"> Email: fpdl6281@gmail.com </span>
      				</div>
      			</div>
      		</div>
      
      	</footer>
      </body>
      </html>

Create Table

  • CREATE TABLE
    • User Table

      CREATE TABLE my_user (
          user_id VARCHAR2(30) PRIMARY KEY,
          user_pw VARCHAR2(30) NOT NULL,
          user_name VARCHAR2(20) NOT NULL,
          user_email VARCHAR2(100),
          user_address VARCHAR2(100)
      );

Create UserVO

  • CREATE UserVO
    • UserVO

    • User의 정보를 담을 수 있는 객체

      package kr.com.jsp.user.model;
      
      public class UserVO {
      	/*
      	  CREATE TABLE my_user ( user_id VARCHAR2(30) PRIMARY KEY, user_pw VARCHAR2(30)
      	  NOT NULL, user_name VARCHAR2(2) NOT NULL, user_email VARCHAR2(100),
      	  user_address VARCHAR2(100) );
      	  
      	 */
      	
      	private String user_id;
      	private String user_pw;
      	private String user_name;
      	private String user_email;
      	private String user_address;
      	
      	public UserVO() {
      		// TODO Auto-generated constructor stub
      	}
      	public String getUser_id() {
      		return user_id;
      	}
      	public void setUser_id(String user_id) {
      		this.user_id = user_id;
      	}
      	public String getUser_pw() {
      		return user_pw;
      	}
      	public void setUser_pw(String user_pw) {
      		this.user_pw = user_pw;
      	}
      	public String getUser_name() {
      		return user_name;
      	}
      	public void setUser_name(String user_name) {
      		this.user_name = user_name;
      	}
      	public String getUser_email() {
      		return user_email;
      	}
      	public void setUser_email(String user_email) {
      		this.user_email = user_email;
      	}
      	public String getUser_address() {
      		return user_address;
      	}
      	public void setUser_address(String user_address) {
      		this.user_address = user_address;
      	}
      	public UserVO(String user_id, String user_pw, String user_name, String user_email, String user_address) {
      		super();
      		this.user_id = user_id;
      		this.user_pw = user_pw;
      		this.user_name = user_name;
      		this.user_email = user_email;
      		this.user_address = user_address;
      	}
      	
      
      }

Create Interface

  • CREATE INTERFACE
    • IUserDAO

    • SQL을 어떻게 작성할 지 생각하고 작성하면 쉬울 듯?

      package kr.com.jsp.user.model;
      
      public interface IUserDAO {
      	
      	// 틀만 생성 
      	
      	// ID가 PK이므로 중복 ID 여부 검증
      	boolean confirmID(String id);
      	// select했을 때 있으면 중복 O없으면 중복 X 
      	
      	// 회원가입 처리 메서드 
      	void insertUser(UserVO NEWUSER);
      	
      	// 로그인 유효성 검증 메서드
      	int userCheck(String User_id, String User_pw);
      	
      	// 특정 회원의 모든 정보를 가져오는 로그인 유지 (세션)
      	UserVO getUserInfo(String User_id);
      	
      	// 비밀번호를 변경하는 메서드 
      	void changePassword(String User_id, String newPW);
      	
      	// 회원 정보를 수정하는 메서드 
      	void updateUser(UserVO updateUser);
      	
      	// 회원 탈퇴를 처리하는 메서드
      	void deleteUser(String User_id);
      }

Select

  • ConfirmID
    • UserDAO

    • User의 Id를 받아서 해당 id가 Database에 저장되어 있는지 확인하는 로

      @Override
      	public boolean confirmID(String id) {
      		boolean flag = false;
      		String sql = "SELECT * FROM my_user WHERE USER_ID = ?";
      
      		/* 
      		 try with resource
      		 - try문을 작성할 때 자원 객체를 소괄호 안에 전달하면 try 블록이 끝날 때 자동으로 자원을 해제해줌 
      		 - 자동으로 종료되는 자원은 반드시 AutoCloseable 인터페이스가 구현체여야 함 		 
      		 */
      		try(Connection conn = ds.getConnection();
      			PreparedStatement pstmt = conn.prepareStatement(sql)){
      			pstmt.setString(1, id);
      			// 쿼리에 들어갈 값 지정 
      			ResultSet rs = pstmt.executeQuery();
      			// 쿼리 실행 
      			
      			if (rs.next()) {
      				flag = true;
      			}
      			
      		} catch (Exception e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();
      		}
      		
      		return flag;
      		// flag가 true이면 아이디가 중복이고 false면 아이디가 중복이 아님
      	}

Insert

  • INSERT
    • UserDAO

    • User의 정보가 있는 객체를 받아서 Database에 넣어줌

      @Override
      	public void insertUser(UserVO vo) {
      		String sql = "INSERT INTO my_user VALUES(?,?,?,?,?)";
      		try(Connection conn = ds.getConnection();
      				PreparedStatement pstmt = conn.prepareStatement(sql)) {
      			pstmt.setString(1, vo.getId());
      			pstmt.setString(2, vo.getPw());
      			pstmt.setString(3, vo.getName());
      			pstmt.setString(4, vo.getEmail());
      			pstmt.setString(5, vo.getAddress());
      			pstmt.executeUpdate();
      		} catch (Exception e) {
      			e.printStackTrace();
      		}
      	}

    • User_join_con.jsp

    • 사용자가 입력한 내용을 가져와서 DAO와 연동하여 Database에 넣어줌

      <%@page import="kr.com.jsp.user.model.UserVO"%>
      <%@page import="kr.com.jsp.user.model.UserDAO"%>
      <%@ page language="java" contentType="text/html; charset=UTF-8"
          pageEncoding="UTF-8"%>
      
          
          <%
          	/*
          	사용자가 입력한 id를 먼저 얻어와서 중복 체크 먼저 진행 
          	*/
          	
          	request.setCharacterEncoding("utf-8");
          
          	String id = request.getParameter("id");
          	
          	UserDAO dao = UserDAO.getInstance();
          	if (dao.confirmID(id)){
          		// if안에는 true이므로 아이디가 중복이라는 뜻 %>
          		<script>
          			alert("아이디가 중복되었습니다.");
          			history.back();
          			<%-- 뒤로가기 --%>
          		</script>
          	<% }
          	else{ // 아이디가 중복되지 않음 (회원가입 진행)
          		String pw = request.getParameter("pw");
          		String name = request.getParameter("name");
          		String email = request.getParameter("email");
          		String address = request.getParameter("address");
          		UserVO newUser = new UserVO(id, pw, name, email, address);
          		dao.insertUser(newUser);
          		// 값들 페이지에서 다 받아서 UserVO 객체에 값들을 넣어줌
          		// insertUser(user객체)를 통해서 DB에 insert 진행 
          		
          		// 경고창으로 회원가입을 환영합니다!라고 띄운뒤 user_login.jsp로 이동
          		%>
          		<script>
          			alert("회원가입을 환영합니다!")
          			location.href = "user_login.jsp";
          		</script>
          	<%}
          %>

Select

  • LOGIN
    • UserDAO

    • 사용자가 입력한 id와 pw를 받아서 DAO에 접근해서 id와 pw가 같은지 검증

      @Override
      	public int userCheck(String User_id, String User_pw) {
      //		String sql = "SELECT USER_ID, USER_PW, CASE WHEN USER_ID = ? AND USER_PW = ? THEN 1" + 
      //				"WHEN USER_ID = ? THEN 0 " + 
      //				"ELSE -1 END AS USERCHECK " + 
      //				"FROM my_user";
      		// 오류 발생 https://nackwon.tistory.com/107 블로그 정리 
      		// CASE WHEN THEN을 활용하여 값을 지정해줌
      		
      		String sql1 = "SELECT * FROM my_user WHERE USER_ID = ?";
      		// 다른 방법 
      			// 그냥 where에 id 비교해서 pw만 가져오는 sql 작성
      				// 만약 없다면 -1 
      				// db에서 가져온 pw와 매개변수로 받은 pw가 같다면 1 아니면 0으로 반환 
      			
      		int num = 10000000;
      		// sql의 3가지 조건에 부합하지 않는다면 위의 숫자를 출력 
      //		try(Connection conn = ds.getConnection();
      //				PreparedStatement pstmt = conn.prepareStatement(sql)){
      //				ResultSet rs = null;
      //				// select를 실행하기 위해 resultset 설정 
      //				
      //				pstmt.setString(1, User_id);
      //				pstmt.setString(2, User_pw);
      //				pstmt.setString(3, User_id);
      //				rs = pstmt.executeQuery();
      //				// 쿼리 실행 
      //				if(rs.next()) num = rs.getInt("USERCHECK");
      //				// https://acua.tistory.com/72 오류발생 
      //				// CASE WHEN THEN을 통해 만든 컬럼을 가져옴 
      //				
      //		}catch (Exception e) {
      //			// TODO Auto-generated catch block
      //			e.printStackTrace();
      //		}
      		
      		// sql1을 적용하기 위한 코드 
      		try(Connection conn = ds.getConnection();
      			PreparedStatement pstmt = conn.prepareStatement(sql1)){
      				pstmt.setString(1, User_id);
      				ResultSet rs = pstmt.executeQuery();
      				
      				if (rs.next()) {
      					// 조회가 되었다면
      					String dbPw = rs.getString("USER_PW");
      					if (dbPw.equals(User_pw)) {
      						num = 1;
      						// id와 pw가 같다면
      					} else {
      						num = 0;
      						// id는 같지만 pw가 틀리다면 
      					}
      				}
      				else {
      					// 조회가 되지 않았다면
      					num = -1;
      				}
      				
      		} catch (Exception e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();
      		} 
      		return num;
      	}

    • user_login_con.jsp

      <%@page import="kr.com.jsp.user.model.UserDAO"%>
      <%@ page language="java" contentType="text/html; charset=UTF-8"
          pageEncoding="UTF-8"%>
      	
      	
      	<%
      		/*
      	   1. 파라미터값 얻어오기 (id, pw)
      	   2. DAO 주소값 얻어오기
      	   3. 로그인 유효성 검증 메서드 userCheck() 호출하기.
      	   - 아이디가 없다면 스크립트 경고창 출력 후 로그인 페이지로 이동 (-1)
      	   - 비밀번호가 틀렸다면 비밀번호가 틀렸다고 경고창 출력 후 뒤로가기 (0)
      	   - 로그인 성공일 경우 user_mypage.jsp로 리다이렉팅 (1)
      	   
      	   4. 로그인 성공 시 페이지 이동 전에 getUserInfo()를 호출하여
      	    로그인을 성공한 회원의 모든 정보를 받아와서 세션에 저장해 주세요.
      	   ( 세션 이름: user, 저장할 값: 로그인 성공한 회원의 UserVO 객체)
      	   */
      	   
         		request.setCharacterEncoding("utf-8");
      		// post방식이므로 utf-8 사용
      		
      		String id = request.getParameter("id");
      		String pw = request.getParameter("pw");
      		
      		UserDAO dao = UserDAO.getInstance();
      		int check = dao.userCheck(id, pw);
      		System.out.println(check);
      		
      		if (check == 1){
      			// id와 pw가 같다면 
      			
      			session.setAttribute("user", dao.getUserInfo(id));
      			// getUserInfo()를 통해서 session정보 저장 
      			
      			response.sendRedirect("user_mypage.jsp");
      			// 페이지 이동 
      		}
      		else if (check == 0){ 
      		// pw가 틀리다면 
      		%>
      		
      			<script>
      				alert("비밀번호가 틀렸습니다.");
      				history.back();
      			</script>
      		<% } else if (check == -1){
      			// 아이디가 틀리다면 
      	%>
      	<script>
      		alert("아이디가 없습니다. 회원가입해주세요")
      		location.href = "user_login.jsp";
      	</script>
      	
      	<% }  %>

Select

  • getUserInfo
    • UserDAO

      @Override
      	public UserVO getUserInfo(String User_id) {
      		// 아이디를 통해서 모든 값 가져오기 
      		String sql = "SELECT * FROM my_user WHERE USER_ID = ?";
      		
      		UserVO user = null;
      		
      		try(Connection conn = ds.getConnection();
      				PreparedStatement pstmt = conn.prepareStatement(sql)){
      				ResultSet rs = null;
      				pstmt.setNString(1, User_id);
      				rs = pstmt.executeQuery();
      				if (rs.next()) {
      					user = new UserVO(rs.getString("USER_ID"),
      							rs.getString("USER_PW"),
      							rs.getString("USER_NAME"),
      							rs.getString("USER_EMAIL"),
      							rs.getString("USER_ADDRESS"));
      					System.out.println("유저 정보 입력 완료");
      				}
      				
      		}catch (Exception e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();
      		}
      		
      		return user;
      	}

    • user_mypage.jsp

      <%@page import="kr.com.jsp.user.model.UserVO"%>
      <%@ page language="java" contentType="text/html; charset=UTF-8"
          pageEncoding="UTF-8"%>
      <!DOCTYPE html>
      
      	<% UserVO user = (UserVO) session.getAttribute("user");
      		// Session 가져오기 
      	%>
      <html>
      <head>
      <meta charset="UTF-8">
      <title>Insert title here</title>
      </head>
      <body>
      	<h2>로그인 완료 세션 정보 <%=user %></h2>
      	<h3><%= user.getUser_id() %></h3>
      	<a href = "changePassword.jsp">비밀번호변경</a>
       	
      </body>
      </html>

Update

  • ChangePW
    • UserDAO

    • 사용자에게 입력받은 id를 통해 변경할 pw입력

      @Override
      	public void changePassword(String User_id, String newPW) {
      		String sql = "UPDATE my_user SET USER_PW = ? WHERE USER_ID = ?";
      		try(Connection conn = ds.getConnection();
      				PreparedStatement pstmt = conn.prepareStatement(sql)){
      				pstmt.setString(1, newPW);
      				pstmt.setString(2, User_id);
      				pstmt.executeUpdate();
      				// 쿼리에 ?값을 넣고 실행 
      				
      				System.out.println("비밀번호 변경 성공");
      				
      		} catch (SQLException e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();
      		}
      	}

    • user_change_pw.jsp

      <%@ page language="java" contentType="text/html; charset=UTF-8"
          pageEncoding="UTF-8"%>
      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="UTF-8">
      <title>Insert title here</title>
      <style>
      input {
        font-size: 1em;
        letter-spacing: 1px;
        background-image: none;
        border: 1px solid #ccc;
        border-radius: 5px;
      }
      
      </style>
      </head>
      <body>
         
         <%@ include file="../include/header.jsp" %>
         
          <div align="center" style="margin-bottom: 20px; padding-bottom: 50px;">
            <h2>비밀번호 변경 페이지</h2>
            <hr>
             
            <form action="user_change_pw_con.jsp" method="post">
               <p><strong>현재 비밀번호</strong></p>
                <input type="password" name="old_pw" required="required"> <br><br>
               <p><strong>변경 비밀번호</strong></p>
               <input type="password" name="new_pw" required="required"> <br><br>
               
               <input type="submit" value="확인" class="btn btn-primary btn-lg"> &nbsp;&nbsp;
               <input type="button" value="취소" class="btn btn-default btn-lg" onclick="history.back()">
               
            </form>
            
         </div>
         
         <%@ include file="../include/footer.jsp" %>
         
      </body>
      </html>

    • user_change_change_con.jsp

      <%@page import="kr.com.jsp.user.model.UserVO"%>
      <%@page import="kr.com.jsp.user.model.UserDAO"%>
      <%@ page language="java" contentType="text/html; charset=UTF-8"
          pageEncoding="UTF-8"%>
      
          
          <%
          /*
      	    1. 폼 데이터 처리 (기존 비번, 변경 비번)
      	    2. dao주소값을 받아오시고, userCheck()를 활용하여
      	     	기존 비번과 아이디 정보를 바탕으로 해당 비밀번호가 일치하는지를 검사.
      	     (id는 세션에서 구해옵니다.)
      	    
      	    3. 기존 비밀번호가 일치한다면 비밀번호 변경 메서드 changePassword() 호출.
      	    4. "비밀번호가 정상적으로 변경되었습니다." 경고창 출력 후 mypage 이동.
      	    5. 현재 비밀번호가 불일치 -> "현재 비밀번호가 다릅니다." 경고창 출력 후 뒤로가기.
          */
          
      		request.setCharacterEncoding("utf-8");
      	    // post방식으로 인해 발생 
      		String oldPw = request.getParameter("old_pw");
      		String newPw = request.getParameter("new_pw");
      		// form에서 보낸 데이터 처리
      		
      		UserDAO dao = UserDAO.getInstance();
      		// 주소값 가져오기
      		
      		UserVO user = (UserVO) session.getAttribute("user");
      		// 세션에 저장한 값을 가져오기 
      
      		int num = dao.userCheck(user.getUser_id(), oldPw);
      		// id와 pw가 db에 저장된 것과 같은지 유효성 검사
      		
      		if (num == 1){
      			dao.changePassword(user.getUser_id(), newPw);
      			// changePassword는 매개변수로 id와 새로운 pw를 받아서 기존 pw update 진행
      			%>
      			<script>
      				alert("비밀번호가 정상적으로 변경되었습니다.");
      				location.href = "user_mypage.jsp";
      			</script>
      		<% } else {%>
      			<script>
      			
      				alert("현재 비밀번호가 다릅니다.");
      				history.back();
      			</script>
       		<% } %>

Update

  • updateUser
    • DAO

      @Override
      	public void updateUser(UserVO updateUser) {
      		String sql = "UPDATE my_user SET USER_NAME = ?, USER_EMAIL = ?, USER_ADDRESS = ? WHERE USER_ID = ?";
      		try(Connection conn = ds.getConnection();
      				PreparedStatement pstmt = conn.prepareStatement(sql)) {
      			pstmt.setString(1, updateUser.getUser_name());
      			pstmt.setString(2, updateUser.getUser_email());
      			pstmt.setString(3, updateUser.getUser_address());
      			pstmt.setString(4, updateUser.getUser_id());
      			pstmt.executeUpdate();
      			// ?에 값을 넣어주고 쿼리 실행 
      			
      			System.out.println("회원정보 수정 성공");
      		}
      			catch (SQLException e) {
      				// TODO Auto-generated catch block
      				e.printStackTrace();
      			}
      		}

    • user_update_con.jsp

      <%@page import="kr.com.jsp.user.model.UserDAO"%>
      <%@page import="kr.com.jsp.user.model.UserVO"%>
      <%@ page language="java" contentType="text/html; charset=UTF-8"
          pageEncoding="UTF-8"%>
      
          
          <%
          	/*
      	    1. 폼 데이터 처리하세요.
      	    2. DAO 연동을 통해 updateUser() 메서드를 호출하여 회원 정보를 수정합니다.
      	     회원 정보 수정을 성공했다면 세션을 다시 제작해 주셔야 합니다.
      	     이름은 똑같이 해서 저장해 주시면 되겠습니다.
      	    3. 수정 후 "회원 정보가 수정되었습니다." 를 출력 후 마이페이지로 이동.
      	    */
          %>
          
          <%
          	/*
          		1. user_update의 값을 가져옴
          		2. 세션에 저장되어 있는 객체에서 pw를 가져와서 5개를 모두 넣어서 하나의 객체를 만들어줌
          		3. DAO에서 값들을 수정 (name, email, address)
          		4. 수정이 완료되었으면 세션을 다시 만듬
          	*/
      		request.setCharacterEncoding("utf-8");
          
          	String id = request.getParameter("id");
          	String name = request.getParameter("name");
          	String email = request.getParameter("email");
          	String address = request.getParameter("address");
          	
      		UserVO user = (UserVO) session.getAttribute("user");
      		// 세션값 가져옴 
      		String pw = user.getUser_pw();
      		// 세션에 저장되어 있는 값에서 pw를 가져옴 
      		
      		UserVO updateUser = new UserVO(id, pw, name, email, address);
      		// 값 넣어줌
      		
      		UserDAO dao = UserDAO.getInstance();
      		// 주소값 불러옴 
      		
      		dao.updateUser(updateUser);
      		// 유저 정보 변경  
      		
      		session.setAttribute("user", dao.getUserInfo(updateUser.getUser_id()));
      		// 중요!!!
      		// 세션을 다시 저장해야 업데이트 된 사용자의 정보를 유지할 수 있음 
          %>
          
         <script>
         		alert = "회원 정보가 수정되었습니다.";
         		location.href = "user_mypage.jsp";
         </script>

Delete

  • deleteUser
    • DAO

      @Override
      	public void deleteUser(String User_id) {
      		String sql = "DELETE FROM my_user WHERE USER_ID = ?";
      		try(Connection conn = ds.getConnection();
      				PreparedStatement pstmt = conn.prepareStatement(sql)){
      			pstmt.setString(1, User_id);
      			pstmt.executeUpdate();
      			// ?에 값을 넣고 쿼리 실행 
      			
      			System.out.println("회원정보 삭제 성공");
      		} catch (SQLException e) {
      			// TODO Auto-generated catch block
      			e.printStackTrace();
      		}
      	}

    • user_delete_con.jsp

      <%@page import="kr.com.jsp.user.model.UserVO"%>
      <%@page import="kr.com.jsp.user.model.UserDAO"%>
      <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
      
      	<%
      		/*
      		 user_delete.jsp에서 보낸 check_pw를 통해 유효성 검사를 진행 
      		 진행하여 유효성을 만족한다면 세션에서 id를 가져와서 삭제 
      		 삭제가 완료되었으면 세션을 삭제(로그인 유지 없앰)
      		 이후 메인 페이지로 이동
      		*/
      	%>
      	<%
      		request.setCharacterEncoding("utf-8");
      		String checkPw = request.getParameter("check_pw");
      		
      		UserDAO dao = UserDAO.getInstance();
      		// 주소값 가지고 오기 
      		
      		// sessio가지고 오기 
      		UserVO user = (UserVO) session.getAttribute("user");
      		
      		int check = dao.userCheck(user.getUser_id(), checkPw);
      		// id와 pw를 통해 유효성 검사
      		
      		if (check == 1) { 
      			// pw가 같다면 
      			
      			dao.deleteUser(user.getUser_id());
      			// 삭제 연산 진행 
      			
      			session.invalidate(); 
      			// 세션 정보 삭제 
      			%>
      			<script>
      				alert("삭제가 완료되었습니다.");
      				location.href="/MyWeb";
      				<%--  프로젝트 자체에 요청을 보내 welcomefilelist로 등록된 곳인 index.jsp로 보냄--%>
      			</script>
      		<% }
      		else {
      			// pw가 같지 않다면 
      	%>	
      	
      			<script>
      				alert("삭제가 완료되지 않았습니다. 비밀번호를 확인하세요.");
      				history.back();
      			</script>
      	<% } %>
profile
안녕하세요! 공부한 내용을 기록하는 공간입니다.

0개의 댓글