개발자입니다
IT BANK) JSP 12일차 - JSP(회원관리 페이지) 본문
220922
-회원 인터넷 페이지 만들기
*java에서 alt + shift + s - generate Getters and Setters
*MemberDAO 작성 + ctrl + space 로 import 및 MemberDTO 작성 + ctrl + space 로 import
*변수에 저장하면 서버 재시작시 ArrayList에 저장한 데이터 날라간다. 그래서 나중에 DB로 할 것이다.
MemberDTO 내에 1명의 사람 정보는 다음과 같이 구성되어 저장된다.
ArrayList 내 MemberDTO 객체 저장되고, MemberDTO 객체 내에는 id, pw, name, email이 저장된다.
<title>index</title>
<style>
a{text-decoration: none; color: black;}
</style>
</head>
<body>
<h2>인덱스 페이지</h2>
<a href="member.jsp">회원 가입</a> |
<a href="list.jsp">회원 목록</a> |
<a href="update.jsp">회원 수정</a> |
<a href="delete.jsp">회원 삭제</a> |
<a href="login.jsp">로그인</a> |
<a href="logout.jsp">로그아웃</a> |
</body>
<title>member</title>
<script>
function check(){
id = document.getElementById('id');
pw = document.getElementById('pw');
confirmPw = document.getElementById('confirmPw');
if(id.value == "" || pw.value == ""){
alert('필수 항목입니다.');
return;
}
if(pw.value != confirmPw.value){
alert('두 비밀번호가 일치하지 않습니다.');
return;
}
document.getElementById('f').submit();
}
</script>
</head>
<body>
<form action="memberService.jsp" method="post" id="f">
<input type="text" name="id" id="id" placeholder="아이디"><br>
<input type="password" name="pw" id="pw" placeholder="비밀번호"><br>
<input type="password" name="confirmPw" id="confirmPw" placeholder="비밀번호 확인"><br>
<input type="text" name="name" id="name" placeholder="이름"><br>
<input type="text" name="email" id="email" placeholder="이메일"><br>
<input type="button" value="회원 가입" onclick="check();">
<input type="button" value="취소" onclick="location.href='index.jsp'">
</form>
</body>
// memberService.jsp
<%@page import="session.MemberDTO"%>
<%@page import="session.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String confirmPw = request.getParameter("confirmPw");
String name = request.getParameter("name");
String email = request.getParameter("email");
// 서버측 입력값 검증
if(id == "" || pw == "" || name == ""){
out.print("<script>alert('서버에서 검증하고 있는 필수 입력 항목입니다.');location.href='member.jsp'</script>");
return;
}
if(pw.equals(confirmPw) == false){
out.print("<script>alert('서버에서 검증하고 있는 필수 입력 항목입니다.');</script>");
response.sendRedirect("member.jsp");
return;
}
// Data Access Object
MemberDAO memberDao = new MemberDAO();
MemberDTO check = memberDao.selectId(id);
String message, path;
if(check == null){
// 가입하려고 하는 아이디가 없기에 회원가입을 진행함.
MemberDTO member = new MemberDTO();
member.setEmail(email);
member.setId(id);
member.setName(name);
member.setPw(pw);
memberDao.insert(member);
message = "회원가입 완료";
path = "index.jsp";
}else{
// 가입하려고 하는 아이디가 있기에 중복 계정으로 가입을 할 수 없음.
message = "회원가입 실패";
path = "member.jsp";
}
%>
<script>alert('<%=message%>'); location.href='<%=path%>'</script>
아래 2개의 java코드들은 src\main\java\session 폴더 내에 저장한다.
// MemberDAO.java
package session;
import java.util.ArrayList;
public class MemberDAO {
// DataBase를 대신해서 데이터를 저장할 공간
private static ArrayList<MemberDTO> members = new ArrayList<>();
public void insert(MemberDTO member) {
members.add(member);
}
public MemberDTO selectId(String id) {
for(MemberDTO member : members) {
if(member.getId().equals(id)) {
return member;
}
}
// 사용자가 매개변수로 전달한 아이디가 저장공간에 없다는 의미.
return null;
}
public ArrayList<MemberDTO> list() {
return members; // 저장 공간의 참조값을 리턴함. 데이터를 통째로 넘기는 게 아님.
}
// 수정할 데이터를 받아서 ArrayList에 기존 데이터를 찾아 수정함.
public void update(MemberDTO member) {
MemberDTO old = selectId(member.getId());
int index = members.indexOf(old);
members.set(index, member); // set(첫번째는 인덱스, 두번째는 데이터)
}
public void delete(String id) {
MemberDTO search = selectId(id);
int index = members.indexOf(search);
members.remove(index);
}
}
// MemberDTO.java
package session;
// Data Transfer Object
public class MemberDTO {
private String id;
private String pw;
private String name;
private String email;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
<%@page import="session.MemberDTO"%>
<%@page import="java.util.ArrayList"%>
<%@page import="session.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>list</title>
</head>
<body>
<%
MemberDAO memberDao = new MemberDAO();
ArrayList<MemberDTO>members = memberDao.list();
%>
<table border=1>
<tr>
<th>아이디</th>
<th>비밀번호</th>
<th>이름</th>
<th>이메일</th>
</tr>
<%
for(MemberDTO m : members){
%>
<tr>
<td><%=m.getId() %></td>
<td><%=m.getPw() %></td>
<td><%=m.getName() %></td>
<td><%=m.getEmail() %></td>
</tr>
<%} %>
</table>
<a href="index.jsp" style="text-decoration: none"> 인덱스 페이지로 이동합니다.</a>
</body>
</html>
<input> 태그 내에서 disabled="disabled" 사용시 회색으로 수정 불가 상태 된다.
// update.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>update</title>
<script>
function check(){
id = document.getElementById('id');
pw = document.getElementById('pw');
confirmPw = document.getElementById('confirmPw');
if(id.value == "" || pw.value == ""){
alert('필수 항목입니다.');
return;
}
if(pw.value != confirmPw.value){
alert('두 비밀번호가 일치하지 않습니다.');
return;
}
document.getElementById('f').submit();
}
</script>
</head>
<body>
<%
String id = (String)session.getAttribute("id");
if(id == null){
out.print("<script>alert('로그인 후 이용하세요.'); location.href='login.jsp';</script>");
return;
}
%>
<form action="updateService.jsp" method="post" id="f">
<input type="text" name="id" id="id" value='<%=session.getAttribute("id") %>' disabled="disabled"><br>
<input type="password" name="pw" id="pw" placeholder="비밀번호"><br>
<input type="password" name="confirmPw" id="confirmPw" placeholder="비밀번호 확인"><br>
<input type="text" name="name" id="name" value='<%=session.getAttribute("name")%>'><br>
<input type="text" name="email" id="email" value='<%=session.getAttribute("email")%>'><br>
<input type="button" value="회원 수정" onclick="check();">
<input type="button" value="취소" onclick="location.href='index.jsp'">
</form>
</body>
</html>
// updateService.jsp
<%@page import="session.MemberDTO"%>
<%@page import="session.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
String id = (String)session.getAttribute("id");
if(id == null){
response.sendRedirect("login.jsp");
return;
}
String pw = request.getParameter("pw");
String confirmPw = request.getParameter("confirmPw");
String name = request.getParameter("name");
String email = request.getParameter("email");
// 서버측 입력값 검증
if(pw == "" || name == ""){
out.print("<script>alert('서버에서 검증하고 있는 필수 입력 항목입니다.');location.href='update.jsp'</script>");
return;
}
if(pw.equals(confirmPw) == false){
out.print("<script>alert('서버에서 검증하고 있는 필수 입력 항목입니다.');</script>");
response.sendRedirect("update.jsp");
return;
}
// Data Access Object
MemberDAO memberDao = new MemberDAO();
// 수정하려고 하는 아이디가 있으면 MemberDAO에 데이터 전달해서 수정
MemberDTO member = new MemberDTO();
member.setEmail(email);
member.setId(id);
member.setName(name);
member.setPw(pw);
memberDao.update(member);
String message = "회원 정보 수정 완료";
String path = "index.jsp";
%>
<script>alert('<%=message%>'); location.href='<%=path%>'</script>
<title>login</title>
</head>
<body>
<%
String id = (String)session.getAttribute("id");
if(id == null){
id = "";
%>
<form action="loginService.jsp" method="post">
<input type="text" placeholder="아이디" name="id"> <br>
<input type="password" placeholder="비밀번호" name="pw"> <br>
<input type="submit" value="로그인">
<input type="reset" value="취소">
</form>
<%}else{ %>
<%=id %>님 로그인 상태입니다. <br>
<input type="button" value="index 페이지로 이동" onclick="location.href='index.jsp'">
<%} %>
</body>
</html>
// loginService
<%@page import="session.MemberDTO"%>
<%@page import="session.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");
// 서버측 입력값 검증
if(id == "" || pw == ""){
out.print("<script>alert('서버에서 검증하고 있는 필수 입력 항목입니다.');location.href='update.jsp'</script>");
return;
}
// 데이터베이스에서 아이디/패스워드 정보를 갖고 옴.
MemberDAO memberDao = new MemberDAO();
MemberDTO member = memberDao.selectId(id);
if(member != null && member.getPw().equals(pw)){
// 로그인 성공
session.setAttribute("id", member.getId());
session.setAttribute("name", member.getPw());
session.setAttribute("email", member.getEmail());
response.sendRedirect("index.jsp");
return;
}
// 로그인 실패 시
%>
<script>alert('아이디 또는 비밀번호를 확인하세요'); location.href='login.jsp'</script>
<input> 태그 내 readonly="readonly" 시 수정 불가 상태가 된다.
// delete.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>delete</title>
</head>
<body>
<%
String id = (String)session.getAttribute("id");
if(id == null){
out.print("<script>alert('로그인 후 이용하세요.'); location.href='login.jsp';</script>");
return;
}
%>
<form action="deleteService.jsp" method="post">
<input type="text" value="<%=id %>" readonly="readonly"> <br>
<input type="password" placeholder="비밀번호" name="pw" ><br>
<input type="password" placeholder="비밀번호 확인" name="confirmPw" ><br>
<input type="submit" value="회원 탈퇴" >
<input type="button" value="취소" onclick="location.href='index.jsp'">
</form>
</body>
</html>
// deleteService
<%@page import="session.MemberDTO"%>
<%@page import="session.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String id = (String)session.getAttribute("id");
if(id == null){
out.print("<script>alert('로그인 후 이용하세요.'); location.href='login.jsp';</script>");
return;
}
request.setCharacterEncoding("utf-8");
String pw = request.getParameter("pw");
String confirmPw = request.getParameter("confirmPw");
// 입력 값 검증
if(pw == ""){
out.print("<script>alert(' 필수 항목이다.'); location.href='delete.jsp';</script>");
return;
}
// 입력 값 검증.
if(pw.equals(confirmPw) == false){
response.sendRedirect("delete.jsp");
return ;
}
MemberDAO memberDao = new MemberDAO();
MemberDTO member = memberDao.selectId(id);
if(member.getPw().equals(pw) == false){
out.print("<script>alert('비밀번호가 일치하지 않습니다.'); location.href='delete.jsp';</script>");
return;
}
memberDao.delete(id);
session.invalidate();
%>
<script>alert('회원 삭제 완료'); location.href='index.jsp';</script>
'JSP > IT BANK - JSP' 카테고리의 다른 글
IT BANK) JSP 14일차 - JSP(회원관리 페이지(SQL)) (0) | 2022.09.26 |
---|---|
IT BANK) JSP 13일차 - JSP(Oracle 설치, 명령어) (0) | 2022.09.23 |
IT BANK) JSP 11일차 - JSP(세션) (0) | 2022.09.21 |
IT BANK) JSP 10일차 - JSP(쿠키) (0) | 2022.09.20 |
IT BANK) JSP 9일차 - JSP(form, result, 응답) (0) | 2022.09.20 |