Life is Good

수콩이의 시선

Coding/JSP

[MVC/DB연동] 로그인 페이지 (로그아웃, 회원수정, 회원탈퇴 기능) (2)

Soocong 2022. 4. 8. 11:07

로그인 페이지

 

 

login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri = "http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<c:set var="root" value="${pageContext.request.contextPath}"/>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="${root}/javascript/member/rutil.js"></script>
</head>
<body>
	<jsp:include page="../../../index.jsp"/>
	<br /><br />
	<div align="center">
		<form action="${root}/member/loginOk.do" method="post" onsubmit="return idCheckFun(this)">
			<table>
				<tr>
					<td>회원 ID</td>
					<td>
						<input type="text" name="id"/>
					</td>
				</tr>
				<tr>
					<td>비밀번호</td>
					<td>
						<input type="password" name="password"/>
					</td>
				</tr>
				<tr>
					<td colspan="2" align="center">
						<input type="submit" name="확인"/>
						<input type="reset" name="취소"/>
					</td>
				</tr>
			</table>
		</form>
	</div>
</body>
</html>

 

LoginOk.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri = "http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<c:set var="root" value="${pageContext.request.contextPath}"/>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<c:if test="${memberLevel!=null}">
		<c:set var= "id" value="${id}" scope="session"/>
		<c:set var= "memberLevel" value="${memberLevel}" scope="session"/>
		
		<script type="text/javascript">
			alert("로그인 성공");
			location.href = "${root}/member/main.do";
		</script>
	</c:if>

	<c:if test="${memberLevel==null}">
		<script type="text/javascript">
			alert("아이디와 비밀번호를 확인하세요");
			location.href = "${root}/member/login.do";
		</script>
	</c:if>
</body>
</html>

 

LoginCommand.java

package com.java.member.command;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.java.command.Command;

public class LoginCommand implements Command {

    @Override
    public String proRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
	// TODO Auto-generated method stub
	return "/WEB-INF/views/member/login.jsp";
    }
}

 

LoginCommandOk.java

package com.java.member.command;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.java.command.Command;
import com.java.member.model.MemberDao;

public class LoginCommandOk implements Command {

    @Override
    public String proRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {

	String id = request.getParameter("id");
	String password = request.getParameter("password");
	logger.info(logMsg + id + "\t" +  password);
	
	String memberLevel = MemberDao.getInstance().loginCheck(id, password);
	logger.info(logMsg + memberLevel);
	
	request.setAttribute("memberLevel", memberLevel);
	request.setAttribute("id", id);
	
	return "/WEB-INF/views/member/loginOk.jsp";
    }
}

 

main.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>
	<jsp:include page="../../../index.jsp"/>
	<br /><br />
	<h3>안녕하세요! ${id} 님 즐거운 시간되세요. </h3>
</body>
</html>

 

mainCommand.java

package com.java.member.command;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.java.command.Command;

public class mainCommand implements Command {

    @Override
    public String proRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
	// TODO Auto-generated method stub
	return "/WEB-INF/views/member/main.jsp";
    }
}

 

rutil.js

function idCheckFun(obj){
	alert("OK");
}

 

 

로그인 후 결과창

로그인 성공 후 페이지(member_level=ma 관리자인 경우 관리자 페이지 라고 화면에 출력)


 

로그아웃 페이지

 

 

logout.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>

<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<c:set var="root" value="${pageContext.request.contextPath}"/>

	<c:remove var="id" scope="session"/>
	<c:remove var="memberLevel" scope="session"/>
	
	<script type="text/javascript">
		alert("로그아웃 되었습니다.");
		location.href = "${root}/member/login.do";
	</script>
</body>
</html>

 

LoginOutCommand.java

package com.java.member.command;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.java.command.Command;

public class LoginOutCommand implements Command {

    @Override
    public String proRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
	HttpSession session = request.getSession();
	
//	if(!session.isNew()) {
//	    String id = (String) session.getAttribute("id");
//	    String memberLevel = (String) session.getAttribute("memberLevel");
//	    logger.info(logMsg + id + "\t" + memberLevel);
//	}
	
	return "/WEB-INF/views/member/logout.jsp";
    }

}

 

 


회원수정 페이지

 

update.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<c:set var="root" value="${pageContext.request.contextPath}" />
<html>
<head>
<meta charset="UTF-8">
<title>회원가입page</title>
	<link rel="stylesheet" href="${root}/css/member/joinStyle.css?ver=1">
	<script type="text/javascript" src="${root}/javascript/member/register.js"></script>
</head>
<body>
	<jsp:include page="../../../index.jsp"/>
	<br /><br />
	<form id="joinform" name="joinform" action="${root}/member/updateOk.do" method="post" 
		onsubmit="return createFrom(this)">

		<h4 style="text-align: center;">회원가입(*필수입력사항입니다.)</h4>
		<div class="menu" style="border-bottom-width: 0px;">
		
		<input type="hidden" name="num" value="${memberDto.num}"/>

		<div id="id">아이디</div>
			<span>* 
				<input type="text" class="UserInfo" name="id" size="12" value="${memberDto.id}" readonly="readonly"/> 
			</span>
		</div>

		<div class="menu " style="border-bottom-width: 0px;">
			<div id="id">비밀번호</div>
			<span>* <input type="password" class="checkInfo" name="password" size="12" value="${memberDto.password}"/>
			</span>
		</div>

		<div class="menu " style="border-bottom-width: 0px;">
			<div id="id">비밀번호확인</div>
			<span>* <input type="password" class="checkInfo" name="passwordCheck" size="12"  value="${memberDto.password}"/>
			</span>
		</div>

		<div class="menu " style="border-bottom-width: 0px;">
			<div id="id">이름</div>
			<span>* <input type="text" class="checkInfo" name="name" size="12"  value="${memberDto.name}" disabled="disabled"/>
			</span>
		</div>

		<div class="menu " style="border-bottom-width: 0px;">
			<div id="id">주민번호</div>
			<span>* 
				<input type="text" class="checkInfo" name="jumin1" size="6" value="${memberDto.jumin1}" disabled="disabled"/> 
				<span>-</span> 
				<input type="text" class="checkInfo" name="jumin2" size="7" value="${memberDto.jumin2}" disabled="disabled"/>
			</span>
		</div>

		<div class="menu" style="border-bottom-width: 0px;">
			<div id="id" style="margin-left: 10px,">이메일</div>
			<span> 
				<input type="email" name="email" size="25" value="${memberDto.email}" />
			</span>
		</div>


		<div class="menu" style="border-bottom-width: 0px;">
			<div id="id">우편번호</div>
			<span> 
				<input type="text" name="zipcode" size="30" value="${memberDto.zipcode}"/> 
				<button type="button" onclick="searchZipcode('${root}')">우편번호검색</button>
			</span>
		</div>

		<div class="menu" style="border-bottom-width: 0px;">
			<div id="id">주소</div>
			<span> <input type="text" name="address" size="50" value="${memberDto.address}" />
			</span>
		</div>

		<div class="menu" style="border-bottom-width: 0px;">
			<div id="id">직업</div>
			<span> <select name="job">
					<option>직업을 선택하세요.</option>
					<option value=' '>무직</option>
					<option value='programmer'>프로그래머</option>
					<option value='designer'>디자이너</option>
			</select>
			<%-- ${memberDto.job} --%>
			</span>
			<script type="text/javascript">
			joinform.job.value = "${memberDto.job}"
			</script>
		</div>


		<div class="menu" style="border-bottom-width: 0px;">
			<div id="id">메일수신</div>
			<span> <input type="radio" id="yes" name="mailing" value="yes" />
				<label for="yes">yes</label> <input type="radio" id="no"
				name="mailing" value="no" /> <label for="no">no</label>
				<%-- ${memberDto.mailing} --%>
			</span>
			<script type="text/javascript">
			for(var i = 0; i<joinform.mailing.length; i++){
				if(joinform.mailing[i].value == "${memberDto.mailing}"){
					joinform.mailing[i].checked = true;
				}
			}
			</script>
		</div>

		<div class="menu" style="border-bottom-width: 0px;">
			<div id="id">관심분야</div>
			<span> 
				<input type="checkbox" size="12" name="interest" value="경제"/> 
				<label for="경제" >경제</label> 
				<input type="checkbox" size="12" name="interest" value="IT"/> 
				<label for="IT" >IT</label>
				<input type="checkbox" size="12" name="interest" value="음악"/>
				<label for="음악" >음악</label> 
				<input type="checkbox" size="12" name="interest" value="미술"/> 
				<label for="미술" >미술</label>
				<input type="hidden" name="resultInterest"/>
				<%-- ${memberDto.interest} --%>
			</span>	
			<c:forTokens var="interest" items="${memberDto.interest}" delims=",">
				<script type="text/javascript">
					for(var i = 0; i<joinform.interest.length; i++){
						if(joinform.interest[i].value == "${interest}"){
							joinform.interest[i].checked = true;
						}
					}
				</script>
			</c:forTokens>
		</div>
		
		<div class="menu" style="text-align: center;">
			<span> 
				<input type="submit" value="수정" />
			 	<input type="reset" value="취소" />
			</span>
		</div>
	</form>
</body>
</html>

 

updateOk.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<c:set var="root" value="${pageContext.request.contextPath}"/>
	<c:if test="${check > 0 }">
		<script type="text/javascript">
			alert("회원 수정 되었습니다.");
			location.href="${root}/member/main.do";
		</script>
	</c:if>
	<c:if test="${check == 0 }">
		<script type="text/javascript">
			alert("회원 수정 되지 않았습니다.");
			location.href="${root}/member/update.do";
		</script>
	</c:if>
</body>
</html>

 

updateCommand.java

package com.java.member.command;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.java.command.Command;
import com.java.member.model.MemberDao;
import com.java.member.model.MemberDto;

public class UpdateCommand implements Command {

    @Override
    public String proRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
	// TODO Auto-generated method stub
	HttpSession session = request.getSession();
	String id = (String) session.getAttribute("id");
	logger.info(logMsg + id); 
	
	MemberDto memberDto = MemberDao.getInstance().updateId(id);
	logger.info(logMsg + memberDto.toString());
	
	request.setAttribute("memberDto", memberDto);
	
	return "/WEB-INF/views/member/update.jsp";
    }

}

 

updateOkCommand.java

package com.java.member.command;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.java.command.Command;
import com.java.member.model.MemberDao;
import com.java.member.model.MemberDto;

public class UpdateOkCommand implements Command {

    @Override
    public String proRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
	// TODO Auto-generated method stub
	
	request.setCharacterEncoding("utf-8");
	MemberDto memberDto = new MemberDto();
	
	// id가 disabled 이기 때문에 값을 넘겨주지 않아 세션을 사용한다.  
	/* HttpSession session = request.getSession();
	memberDto.setId((String) session.getAttribute("id"));*/
	
	memberDto.setNum(Integer.parseInt(request.getParameter("num")));
	memberDto.setPassword(request.getParameter("password"));
	memberDto.setEmail(request.getParameter("email"));
	
	memberDto.setZipcode(request.getParameter("zipcode"));
	memberDto.setAddress(request.getParameter("address"));
	memberDto.setJob(request.getParameter("job"));
	memberDto.setMailing(request.getParameter("mailing"));
	memberDto.setInterest(request.getParameter("interest"));
	
	logger.info(logMsg + memberDto);
	
	int check = MemberDao.getInstance().update(memberDto);
	logger.info(logMsg + check);
	
	request.setAttribute("check", check);
	
	return "/WEB-INF/views/member/updateOk.jsp";
    }

}

 

 


회원탈퇴 페이지

 

 

delete.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<jsp:include page="../../../index.jsp"/>
	
	<c:set var="root" value="${pageContext.request.contextPath}"/>
	<div align="center">
		<form action="${root}/member/deleteOk.do" method="post">
			<table>
				<tr>
					<td>회원아이디</td>
					<td><input type="text" name="id" value="${id}" readonly="readonly"/></td>
				</tr>
				<tr>
					<td>비밀번호</td>
					<td><input type="password" name="password"/></td>
				</tr>
				<tr>
					<td colspan="2" align="center">
						<input type="submit" value="회원탈퇴"/>
						<input type="reset" value="취소"/>
					</td>
				</tr>
			</table>	
		</form>
	</div>
</body>
</html>

 

deleteOk.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<c:set var="root" value="${pageContext.request.contextPath}"/>
	
	<c:choose>
		<c:when test="${check > 0}">
			<c:remove var="id" scope="session"/>
			<c:remove var="memberLevel" scope="session"/>
			
			<script type="text/javascript">
				alert("회원탈퇴가 완료되었습니다.");
				location.href = "${root}/member/register.do";
			</script>
		</c:when>
		
		<c:when test="${check == 0}">
			<script type="text/javascript">
				alert("회원탈퇴 되지 않았습니다.");
				location.href = "${root}/member/delete.do";
			</script>
		</c:when>
	</c:choose>
</body>
</html>

 

DeleteCommand.java

package com.java.member.command;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.java.command.Command;

public class DeleteCommand implements Command {

    @Override
    public String proRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
	
	return "/WEB-INF/views/member/delete.jsp";
    }
}

 

DeleteOkCommand.java

package com.java.member.command;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.java.command.Command;
import com.java.member.model.MemberDao;

public class DeleteOkCommand implements Command {

    @Override
    public String proRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
	String id = request.getParameter("id");
	String password = request.getParameter("password");
	logger.info(logMsg + id + "\t" + password);
	
	int check = MemberDao.getInstance().delete(id, password);
	logger.info(logMsg + check);
	
	request.setAttribute("check", check);
	
	return "/WEB-INF/views/member/deleteOk.jsp";
    }
}

 

회원탈퇴 결과 창

Oracle SQL Developer에서 member테이블의 데이터를 조회해보면 id가 'bbb'인 관리자계정이 삭제되었다.