자바37일차

달달한스위츠·2024년 4월 4일

자바배우기

목록 보기
34/43

오늘의 코드
회원가입을 jsp로 만들어 보았다.

login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인</title>
</head>
<body>
	<%
		// TODO : <a> 태그를 이용하여 memberRegister.jsp 이동 링크 생성
		// TODO : 로그인 form 생성. sction="loginAuth.do" method="post"
	%>
	
	<h2>로그인하기</h2>
	<form action="loginAuth.do" method="post">
    <label for="userid">사용자 ID:</label>
    <input type="text" id="userid" name="userid" required><br><br>
    
    <label for="password">비밀번호:</label>
    <input type="password" id="password" name="password" required><br><br>
    
    <input type="submit" value="로그인">
    <a href="memberRegister.jsp">회원가입</a>
	</form>
</body>
</html>

loginResult.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>
	<% 
		// TODO : 세션을 이용"userid님, 환영합니다.라고 화면에 출력"
		
		// TODO : 회원 정보 보기 버튼 생성
		// TODO : 로그아웃 버튼 생성
		String userid = (String) session.getAttribute("userid");
		if(userid == null){
			userid = request.getParameter("userid");
		if(userid != null) {
            out.println("<script>alert('" + userid + "님 환영합니다!!');</script>");
            
        } else {
            out.println("<script>alert('로그인 해주세요!!'); location.href='login.jsp';</script>");
        }
		
		}
		
	%>
	
	<!-- location.href로 이동하면 servlet에서 doGet()을 호출
	  		ㄴ GET방식으로 동작 
	 -->
	 
	 
	
	<button onclick="location.href='select.do'">회원정보</button>
	<button onclick="logoutForm()">로그아웃</button>
	
	<script>
	function logoutForm() {
		if(confirm('로그아웃 하시겠습니까?')) { 
			location.href="logout.do";
		} else {
			location.href="loginResult.jsp"; 
		}
      
    }
    
	</script>
</body>
</html>

memberRegister.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>
	<%
		// TODO : 회원 가입 form 생성. action="register.do" method="post"
		
	%>
	
	<h2>회원 가입하기</h2>
	<form action="register.do" method="post">
    <label for="userid">사용자 ID:</label>
    <input type="text" id="userid" name="userid" required><br><br>
    
    <label for="password">비밀번호:</label>
    <input type="password" id="password" name="password" required><br><br>
    
    <label for="email">이메일:</label>
    <input type="email" id="email" name="email" required><br><br>
    
    <label for="emailAgree">이메일 수신 동의:</label>
    <input type="checkbox" id="emailAgree" name="emailAgree" value="agree"><br><br>
    
    <label for="interest">관심 분야:</label><br>
    <input type="checkbox" id="interest1" name="interest" value="서버 개발">
    <label for="interest1">서버 개발</label><br>
    <input type="checkbox" id="interest2" name="interest" value="서버 폭팔">
    <label for="interest2">서버 폭팔</label><br>
    <!-- 관심 분야가 여러 개일 경우에는 반복문을 사용하여 동적으로 생성할 수도 있습니다. --><br>
    
    <label for="phone">전화번호:</label>
    <input type="tel" id="phone" name="phone"><br><br>
    
    <label for="introduce">자기 소개:</label><br>
    <textarea id="introduce" name="introduce" rows="4" cols="50"></textarea><br><br>
    
    <input type="submit" value="제출">
    
</form>
</body>
</html>

memberResult.jsp

<%@page import="edu.web.member.MemberVO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 정보</title>
</head>
<body>
	<%
		// TODO : 회원 정보 출력
		// TODO : 회원 수정 버튼 생성(경로 : memberUpdate.jsp)
		// TODO : 회원 탈퇴 버튼 생성(경로 : delete.do)
		String userid = (String) session.getAttribute("userid");
		if(userid == null){
			response.sendRedirect("login.jsp");
		} 
		MemberVO vo = (MemberVO) request.getAttribute("vo");
		
	%>
    <h1>회원 정보</h1>
    <form id="updateForm" action="" method="post">
        <label for="userid">사용자 아이디:</label>
        <input type="text" id="userid" name="userid" value="<%=vo.getUserid() %>" readonly> <br>

        <label for="password">비밀번호:</label>
        <input type="password" id="password" name="password" value="<%=vo.getPassword() %>" readonly> <br>

        <label for="email">이메일:</label>
        <input type="email" id="email" name="email" value="<%=vo.getEmail() %>" readonly> <br>

        <label for="emailAgree">이메일 동의:</label>
        <%if(vo.getEmailAgree().equals("agree")) { 	%>
        <input type="checkbox" id="emailAgree" name="emailAgree" value="<%=vo.getEmailAgree() %>"
        checked="checked" > <br>
       <% } else { %> 
       <input type="checkbox" id="emailAgree" name="emailAgree" value="<%=vo.getEmailAgree() %>"> <br>
        <% } %>
        <input type="hidden" name="emailAgree" value="<%= vo.getEmailAgree() %>">

        <label for="interest">관심 사항:</label>
        
        <% for(String interests : vo.getInterest()) { %>
        <input type="text" id="interest" name="interest" value="<%=interests %>" readonly> <br>
        	<% } %>

        <label for="phone">전화번호:</label>
        <input type="text" id="phone" name="phone" value="<%=vo.getPhone() %>" readonly> <br>

        <label for="introduce">자기 소개:</label>
        <textarea id="introduce" name="introduce" readonly><%=vo.getIntroduce() %></textarea><br>
        
        <input type="button" onclick="location.href='loginResult.jsp'" value="뒤로가기">
        <input type="button" onclick="updateForm()" value="회원정보수정">
		<input type="button" onclick="deleteForm()" value="회원 탈퇴">
    </form>
    
   <script>
	document.getElementById("emailAgree").disabled = true;
	
	function updateForm() {
		let form = document.getElementById("updateForm");
        form.action = "memberUpdate.jsp";
        form.submit();
    }
	function deleteForm() {
		if(confirm('정말로 탈퇴 하시겠습니까?')) { 
			let form = document.getElementById("updateForm");
	        form.action = "delete.do";
	        form.submit();
		} else { location.href='select.do'; };
      
    }
    
	</script>
	
</body>
</html>

memberUpdate.jsp

<%@page import="edu.web.member.MemberVO"%>
<%@ 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>
	<%
	// TODO : 로그인된 사용자 아이디를 저장
	// TODO : form action="update.do" method="post"생성
	// TODO : userid를 제외한 모든 정보 수정 가능하게 input 태그 작성
	//        userid는 읽기만 가능하도록 input 태그 생성
	String id = (String) session.getAttribute("userid");

	if (id == null) {
		response.sendRedirect("login.jsp");
	}
	String userid = request.getParameter("userid");
	String password = request.getParameter("password");
	String email = request.getParameter("email");
	String emailAgree = request.getParameter("emailAgree");
	String[] interest = request.getParameterValues("interest");
	String phone = request.getParameter("phone");
	String introduce = request.getParameter("introduce");
	if (password == "") {
		out.print("<script>alert('페스워드를 입력해 주세요'); location.href='memberUpdate.jsp'</script>");
		return;

	}
	// 서버측 입력값 검증
	String checked = "checked";
	String develServer = null;
	String  boomServer = null;
	for (String interests : interest) {
		if(interests.equals("서버 개발")) {
			develServer = "checked";
		} else if (interests.equals("서버 폭팔")) {
			boomServer = "checked";
		}
	}
	%>

	<h1>회원 정보 수정</h1>
	<form action="update.do" method="post">
		<label for="userid">사용자 아이디:</label> <input type="text" id="userid"
			name="userid" value="<%=userid%>" readonly> <br> <label
			for="password">비밀번호:</label> <input type="password" id="password"
			name="password" value="<%=password%>"> <br> <label
			for="email">이메일:</label> <input type="email" id="email" name="email"
			value="<%=email%>"> <br> <label for="emailAgree">이메일
			동의:</label>
		<%
		if (emailAgree.equals("agree")) {
		%>
		<input type="checkbox" id="emailAgree" name="emailAgree" value="agree"
			checked="checked"> <br>
		<%
		} else {
		%>
		<input type="checkbox" id="emailAgree" name="emailAgree" value="agree">
		<br>
		<%
		}
		%>

		<label for="interest">관심 분야:</label><br>
		<input type="checkbox" id="interest2" name="interest" value="서버 개발" <%=develServer %>>
    	<label for="interest2">서버 개발</label><br>
		<input type="checkbox" id="interest2" name="interest" value="서버 폭팔" <%=boomServer %>>
    	<label for="interest2">서버 폭팔</label><br>
    
    
		<label for="phone">전화번호:</label> <input type="text" id="phone"
			name="phone" value="<%=phone%>"> <br> <label
			for="introduce">자기 소개:</label>
		<textarea id="introduce" name="introduce"><%=introduce %></textarea> <br>
		<input type="button" onclick="location.href='select.do'" value="뒤로가기">
		<input type="submit" value="수정 확인">
	</form>



</body>
</html>

DBConnection.java

package edu.web.member;

public interface DBConnection {
	// DB 접속에 필요한 상수 정의
	public static final String URL = "jdbc:oracle:thin:@localhost:1521:xe";
	public static final String USER = "scott";
	public static final String PASSWORD = "tiger";
	
	// DB 테이블 컬럼 상수 정의
	public static final String TABLE_NAME = "TEST_MEMBER";
	public static final String COL_USERID = "USERID";
	public static final String COL_PASSWORD = "PASSWORD";
	public static final String COL_EMAIL = "EMAIL";
	public static final String COL_EMAIL_AGREE = "EMAIL_AGREE";
	public static final String COL_INTEREST = "INTEREST";
	public static final String COL_PHONE = "PHONE";
	public static final String COL_INTRODUCE = "INTRODUCE";
	
	// INSERT INTO TEST_MEMBER VALUES
	// (?, ?, ?, ?, ?, ?, ?)
	public static final String SQL_INSERT = "INSERT INTO " + TABLE_NAME
			+ " VALUES (?, ?, ?, ?, ?, ?, ?)";
	
	// SELECT USERID FROM TEST_MEMBER WHERE USERID = 'test' AND PASSWORD = 'test';
	public static final String SQL_LOGIN = "SELECT " + COL_USERID
			+ " FROM " + TABLE_NAME + " WHERE " + COL_USERID + " = ? "
			+ " AND " + COL_PASSWORD + " = ?";
	
	// SELECT * FROM TEST_MEMBER WHERE USERID = 'test';
	public static final String SQL_SELECT = "SELECT * FROM "
			+ TABLE_NAME + " WHERE " + COL_USERID + " = ? ";
	
	// UPDATE TEST_MEMBER SET PASSWORD = 'UPDATE@TEST.COM',
	/*
	 * EMAIL = '', EMAIL_AGREE = '', INTEREST = '', PHONE = '', INTRODUCE = '' WHERE
	 * USERID = 'test';
	 */
	public static final String SQL_UPDATE = "UPDATE " + TABLE_NAME
			+ " SET " + COL_PASSWORD + " = ?, " + COL_EMAIL + " = ?, " + COL_EMAIL_AGREE + " = ?, " 
			+ COL_INTEREST + " = ?, " + COL_PHONE + " = ?, " + COL_INTRODUCE + " = ? "
			+ " WHERE " + COL_USERID + " = ?";
		
	// DELETE TEST_MEMBER WHERE USERID = 'test';
	public static final String SQL_DELETE = "DELETE " + TABLE_NAME
			+ " WHERE " + COL_USERID + " = ?";
	
}

MemberDAO.java

package edu.web.member;

public interface MemberDAO {
	// 맴버 등록
	public abstract int insert(MemberVO vo);
	
	// 로그인
	public abstract int login(String id, String pw);
	
	// 맴버 정보 검색
	public abstract MemberVO select(String id);
	
	// 맴버 정보 수정
	public abstract int update(String id, MemberVO vo);
	
	// 맴버 정보 삭제
	public abstract int delete(String id);
	
	
}

MemberDAOImple.java

package edu.web.member;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import oracle.jdbc.OracleDriver;

public class MemberDAOImple implements MemberDAO, DBConnection {
	private static MemberDAOImple instance = null;

	public static MemberDAOImple getInstance() {
		if (instance == null) {
			instance = new MemberDAOImple();
		}
		return instance;
	}

	@Override
	public int insert(MemberVO vo) {
		System.out.println("insert() 호출");
		int result = 0;
		Connection conn = null;
		PreparedStatement pstmt = null;

		try {
			DriverManager.registerDriver(new OracleDriver());
			conn = DriverManager.getConnection(URL, USER, PASSWORD);
			System.out.println("DB 연결 성공");
			pstmt = conn.prepareStatement(SQL_INSERT);
			pstmt.setString(1, vo.getUserid());
			pstmt.setString(2, vo.getPassword());
			pstmt.setString(3, vo.getEmail());
			pstmt.setString(4, vo.getEmailAgree());
			pstmt.setString(5, vo.getInterestJoin());
			pstmt.setString(6, vo.getPhone());
			pstmt.setString(7, vo.getIntroduce());

			result = pstmt.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				pstmt.close();
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		return result;
	}

	@Override
	public int login(String id, String pw) {
		System.out.println("login() 호출");
		int result = 0;
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;

		try {
			DriverManager.registerDriver(new OracleDriver());
			conn = DriverManager.getConnection(URL, USER, PASSWORD);
			System.out.println("DB 연결 성공");
			pstmt = conn.prepareStatement(SQL_LOGIN);
			pstmt.setString(1, id);
			rs = pstmt.executeQuery();
			while (rs.next()) {
				if (rs.getString(1).equals(id)) {
					result = 1;
				}
			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				pstmt.close();
				conn.close();
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		System.out.println(result);

		return result;
	}

	@Override
	public MemberVO select(String id) {
		System.out.println("select() 호출");
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		MemberVO vo = null;
		try {
			DriverManager.registerDriver(new OracleDriver());
			conn = DriverManager.getConnection(URL, USER, PASSWORD);
			System.out.println("DB 연결 성공");
			pstmt = conn.prepareStatement(SQL_SELECT);
			pstmt.setString(1, id);
			rs = pstmt.executeQuery();
			while (rs.next()) {
				String userid = rs.getString(1);
				String password = rs.getString(2);
				String email = rs.getString(3);
				String email_agree = rs.getString(4);
				String interest = rs.getString(5);
				String[] interests = interest.split(",");
				for(String po : interests) {
					System.out.println(po); // 로그
				}
				String phone = rs.getString(6);
				String introduce = rs.getString(7);

				vo = new MemberVO(userid, password, email, email_agree, interests, phone, introduce);
			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				pstmt.close();
				conn.close();
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		return vo;
	}

	@Override
	public int update(String id, MemberVO vo) {
		System.out.println("update() 호출");
		int result = 0;
		Connection conn = null;
		PreparedStatement pstmt = null;
		
		try {
			DriverManager.registerDriver(new OracleDriver());
			conn = DriverManager.getConnection(URL, USER, PASSWORD);
			System.out.println("DB 연결 성공");
			pstmt = conn.prepareStatement(SQL_UPDATE);
			pstmt.setString(1, vo.getPassword());
			pstmt.setString(2, vo.getEmail());
			pstmt.setString(3, vo.getEmailAgree());
			pstmt.setString(4, vo.getInterestJoin());
			pstmt.setString(5, vo.getPhone());
			pstmt.setString(6, vo.getIntroduce());
			pstmt.setString(7, vo.getUserid());

			result = pstmt.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				pstmt.close();
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		return result;
	}

	@Override
	public int delete(String id) {
		System.out.println("delete() 호출");
		int result = 0;
		Connection conn = null;
		PreparedStatement pstmt = null;
		
		try {
			DriverManager.registerDriver(new OracleDriver());
			conn = DriverManager.getConnection(URL, USER, PASSWORD);
			System.out.println("DB 연결 성공");
			pstmt = conn.prepareStatement(SQL_DELETE);
			pstmt.setString(1, id);
			
			result = pstmt.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				pstmt.close();
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		return result;
	}

}

MemberVO.java

package edu.web.member;

import java.util.Arrays;

public class MemberVO {
	private String userid;
	private String password;
	private String email;
	private String emailAgree;
	private String[] interest;
	private String phone;
	private String introduce;
	public MemberVO() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	public MemberVO(String userid, String password, String email, String emailAgree, String[] interest, String phone,
			String introduce) {
		super();
		this.userid = userid;
		this.password = password;
		this.email = email;
		this.emailAgree = emailAgree;
		this.interest = interest;
		this.phone = phone;
		this.introduce = introduce;
	}

	public String getUserid() {
		return userid;
	}
	public void setUserid(String userid) {
		this.userid = userid;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getEmailAgree() {
		return emailAgree;
	}
	public void setEmailAgree(String emailAgree) {
		this.emailAgree = emailAgree;
	}
	public String[] getInterest() {
		return interest;
	}
	public void setInterest(String[] interest) {
		this.interest = interest;
	}
	public String getInterestJoin() {
		String result =
				(interest == null) ? "없음" : String.join(",", interest);
		return result;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getIntroduce() {
		return introduce;
	}
	public void setIntroduce(String introduce) {
		this.introduce = introduce;
	}
	@Override
	public String toString() {
		return "MemberVO [userid=" + userid + ", password=" + password + ", email=" + email + ", emailAgree="
				+ emailAgree + ", interest=" + Arrays.toString(interest) + ", phone=" + phone + ", introduce="
				+ introduce + "]";
	}
	
	
}

Servlet들
Delete

package edu.web.member;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

// TODO : memberResult.jsp에서 이동
//        로그인된 사용자 아이디를 가져와서 DB에 회원 정보 삭제
//        삭제 성공 후에 login.jsp 페이지로 이동
@WebServlet("/delete.do")
public class DeleteServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private static MemberDAO dao;
	
    public DeleteServlet() {
    	dao = MemberDAOImple.getInstance();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html; charset=UTF-8");
		HttpSession session = request.getSession();
        String userId = (String) session.getAttribute("userid");
        PrintWriter out = response.getWriter();
        
        if(userId != null) {
        	// 이후에 MemberVO 객체를 이용하여 원하는 작업을 수행합니다.
            int result = dao.delete(userId);
            if(result == 1) {
            out.println("<script>alert('회원 탈퇴 성공'); location.href='/Homepage_MJH/login.jsp';</script>");
        	 System.out.println("회원 탈퇴 성공");
            } else {
            	out.println("<script>alert('회원 탈퇴 실패');  location.href='select.do';</script>");
				System.out.println("회원 탈퇴 실패");
			}
        		  
        		
        		 
        		  
        } else {
            // 사용자가 로그인하지 않은 상태일 때 수행할 작업
            response.sendRedirect("login.jsp");
        }
	}

}

Login

package edu.web.member;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/*
 * TODO : login.jsp 에서 입력받은 아이디, 패스워드를 DB의 데이터와 비교해서
 * 데이터가 일치하면 - 로그인 세션 생성 및 로그인 성공(loginResult.jsp)로 이동
 * (아이디 값에 대한 세션 생성. 세션 만료 시간 60초)
 * 데이터가 일치하지 않으면 - login.jsp로 이동(심심하면 실패 alert 띄우기)
 * */

@WebServlet("/loginAuth.do")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private static MemberDAO dao;
    
    public LoginServlet() {
    	dao = MemberDAOImple.getInstance();
    }

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		HttpSession session = request.getSession();
		// request에서 파라미터 값을 읽어옵니다.
	    String userid = request.getParameter("userid");
	    String password = request.getParameter("password");
	    
		// 이후에 MemberVO 객체를 이용하여 원하는 작업을 수행합니다.
	    int result = dao.login(userid, password);
	    System.out.println(result);
	    if(result == 1) {
	    	session.setMaxInactiveInterval(60); // 60초
    		// 세션에 키-값 저장하기
    		session.setAttribute("userid", userid);
	    	System.out.println(userid);
			request.setAttribute("userid", userid);
	    	RequestDispatcher dis = request.getRequestDispatcher("/loginResult.jsp");
			dis.forward(request, response);
	    } else {
	    	response.sendRedirect("/Homepage_MJH/login.jsp");
		}
	    
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	    	 doGet(request, response);
	    
	}
	
	
}

Logout

package edu.web.member;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

// TODO : 로그인된 사용자만 접근 가능.
// userid 세션을 제거하고, login.jsp로 이동

@WebServlet("/logout.do")
public class LogoutServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
    public LogoutServlet() {
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		HttpSession session = request.getSession();
        String userid = (String) session.getAttribute("userid");

        
        if(userid != null) {
        	session.invalidate();
        	response.sendRedirect("/Homepage_MJH/login.jsp");
        } else {
            response.sendRedirect("/Homepage_MJH/login.jsp");
        }
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
	}

}

Register

package edu.web.member;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// TODO : memberRegister.jsp에서 전송된 데이터를 DB에 저장
// DB 저장 후에 login.jsp로 이동(심심하면 alert도 띄우기)

@WebServlet("/register.do")
public class RegisterServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private static MemberDAO dao;
    
    public RegisterServlet() {
    	dao = MemberDAOImple.getInstance();
    }

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// sendRedirect() : 특정 경로로 이동
		// request는 소멸되기 때문에 데이터를 전송할 수 없음
				
		response.sendRedirect("/Homepage_MJH/login.jsp");
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter out = response.getWriter();
		
		 // request에서 파라미터 값을 읽어옵니다.
	    String userid = request.getParameter("userid");
	    String password = request.getParameter("password");
	    String email = request.getParameter("email");
	    String emailAgree = request.getParameter("emailAgree");
	    String[] interest = request.getParameterValues("interest");
	    String phone = request.getParameter("phone");
	    String introduce = request.getParameter("introduce");
	    
	    // MemberVO 객체를 생성하고 파라미터 값을 설정합니다.
	    MemberVO member = new MemberVO(userid, password, email, emailAgree, interest, phone, introduce);
	    
	    // 이후에 MemberVO 객체를 이용하여 원하는 작업을 수행합니다.
	    int result = dao.insert(member);
	    System.out.println(result);
	    out.println("<script>alert('회원 등록 성공'); location.href='/Homepage_MJH/login.jsp';</script>");
	    
	}

}

Select

package edu.web.member;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


// TODO : loginResult.jsp에서 이동
// 로그인된 사용자의 정보를 DB에서 select
// select된 MemberVO 데이터를 memberResult.jsp로 전송
@WebServlet("/select.do")
public class SelectServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private static MemberDAO dao;
	
    public SelectServlet() {
    	dao = MemberDAOImple.getInstance();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		HttpSession session = request.getSession();
        String userid = (String) session.getAttribute("userid");

        if(userid != null) {
        	 MemberVO vo = dao.select(userid);
        	 System.out.println("회원정보 조회 성공");
        	 request.setAttribute("vo", vo);
        	 RequestDispatcher dis = request.getRequestDispatcher("/memberResult.jsp");
 			 dis.forward(request, response);
 			
        } else {
            // 사용자가 로그인하지 않은 상태일 때 수행할 작업
            response.sendRedirect("login.jsp");
        }
	    
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
	}

}

Update

package edu.web.member;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

// TODO : memberUpdate.jsp에서 전송된 데이터로 DB 회원 정보 수정
//        회원 정보 수정에 성공하면 memberResult.jsp에 MemberVO 데이터 전송하여 출력
@WebServlet("/update.do")
public class UpdateServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private static MemberDAO dao;
	
    public UpdateServlet() {
    	dao = MemberDAOImple.getInstance();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html; charset=UTF-8");
		HttpSession session = request.getSession();
        String userId = (String) session.getAttribute("userid");
        PrintWriter out = response.getWriter();
        
        if(userId != null) {
        	// request에서 파라미터 값을 읽어옵니다.
            String userid = request.getParameter("userid");
            String password = request.getParameter("password");
            String email = request.getParameter("email");
            String emailAgree = request.getParameter("emailAgree");
            String[] interest = request.getParameterValues("interest");
            String phone = request.getParameter("phone");
            String introduce = request.getParameter("introduce");
        	
            // MemberVO 객체를 생성하고 파라미터 값을 설정합니다.
            MemberVO member = new MemberVO(userid, password, email, emailAgree, interest, phone, introduce);
            System.out.println(member);
            // 이후에 MemberVO 객체를 이용하여 원하는 작업을 수행합니다.
            int result = dao.update(userId, member);
            
            if(result == 1) {
            out.println("<script>alert('회원정보 수정 성공'); location.href='select.do';</script>");
        	 System.out.println("회원정보 수정 성공");
            } else {
            	out.println("<script>alert('회원정보 수정 실패');  location.href='select.do';</script>");
				System.out.println("회원정보 수정 실패");
			}
        	 
        } else {
            // 사용자가 로그인하지 않은 상태일 때 수행할 작업
            response.sendRedirect("login.jsp");
        }
		
    

	}
}

이렇게 회원가입및 수정 삭제를 완성시켰다.

0개의 댓글