티스토리 뷰
파일 구성 JAVA 파일 -member.vo >Member.java -member.controllerInterface >MemberStorage.java >ControllerInterface.java JSP 파일 -index.jsp -member.jsp -member_insert.jsp -list.jsp -login.jsp -login_check.jsp -logout.jsp -update.jsp -member_update.jsp -delete.jsp -member_delete.jsp |
홈페이지 만들기(회원가입, 회원목록) 링크: rla5378.tistory.com/17
홈페이지 만들기(로그인 로그아웃) 링크: rla5378.tistory.com/18
JSP_홈페이지 회원가입, 회원 목록 기능 만들기(DB연동 없이)
파일 구성 JAVA 파일 -member.vo >Member.java -member.controllerInterface >MemberStorage.java >ControllerInterface.java JSP 파일 -index.jsp -member.jsp -member_insert.jsp -list.jsp package m..
rla5378.tistory.com
-MemberStorage.java
private static ArrayList<Member> memberList = new ArrayList<Member>();
@Override
public int selectMember(Member member) {
return memberList.indexOf(member);
}
@Override
public boolean update(Member member) {
int i =selectMember(member);
if(i == -1) {
return false;
}else {
memberList.set(i, member);
return true;
}
}
@Override
public boolean delete(Member member) {
return memberList.remove(member);
}
}
-update.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String id = (String)session.getAttribute("id");
if(id == null){
%>
<script>
alert('로그인 후 사용 가능합니다.');
location.href='login.jsp';
</script>
<%
}
String name = (String)session.getAttribute("name");
String email = (String)session.getAttribute("email");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>회원 정보 수정</h2>
<form action="member_update.jsp" method="post">
아이디:<%=id %><br>
패스워드:<input type="password" name="pw" placeholder="패스워드"><br>
이름:<input type="text" name="name" value=<%=name %>><br>
이메일:<input type="text" name="email" value=<%=email %>><br>
<input type="submit" value="회원 수정">
<input type="button" value="취소" onclick="jsvascript:location.href='index.jsp'">
</form>
</body>
</html>
해당 페이지는 로그인 상태가 아니면 사용할 수 없게 session.getAttribute("id")로 id가 session에 있는지의 여부를 확인한다.(없다면 바로 메인페이지로 보내버림)
회원수정페이지에서는 아이디는 변경할 수 없고, 이름과 이메일은 기존 값을 보여주지만 변경 가능하도록 value=<%=name %>을 사용하였다.
수정 내용을 입력하였다면 submit버튼을 눌러 member_update.jsp페이지로 정보가 넘어간다.
-member_update.jsp
<%@page import="member.vo.Member"%>
<%@page import="member.controller.MemberStorage"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
// 1. 로그인 여부 확인하기.(login.jsp)
String id = (String)session.getAttribute("id");
if(id == null) {
%>
<script>
alert('로그인 후에 이용하세요.');
location.href='login.jsp';
</script>
<%
}
String pw = request.getParameter("pw");
String name = request.getParameter("name");
String email = request.getParameter("email");
//2. 동일한 아이디의 Member Class를 MemberStorage에 업데이트 시켜주세요.
// - MemberStorage 내부의 update 메소드를 호출해서 수정 될 수 있도록 코드를 작성해주세요.
MemberStorage ms = new MemberStorage();
Member m = ms.selectId(id);
if(m != null && m.getId().equals(id)){
m.setPw(pw);
m.setEmail(email);
m.setName(name);
ms.update(m);
// 3. 정상적으로 수정이 완료되면 index.jsp 로 이동시켜주세요.
%>
<script>
alert('회원 정보 수정 완료');
location.href='logout.jsp';
</script>
<%
}else{
%>
<script>
alert('회원가입 후에 이용하세요.');
location.href='member.jsp';
</script>
<%
}
%>
해당 페이지에서는 한번 더 로그인 여부를 확인하였고, update.jsp페이지에서 입력한 내용을 가져온다.
ms에 있는 selectId(id)메소드를 실행하여 리턴된 값을 m에 넣어준다.
해당 m의 전 페이지에 입력된 pw, email, name을 넣어주고 update()메소드를 호출하여 수정을 완료한다.
이 작업이 끝나면 '회원 정보 수정 완료'창을 띄우고 메인페이지로 넘긴다.
-delete.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>
<script>
function check(){
if(document.form_del.pw.value==""){
alert('입력 값을 확인하세요.');
return;
}
if(document.form_del.repw.value==""){
alert('입력 값을 확인하세요.');
return;
}
if(document.form_del.repw.value != document.form_del.pw.value){
alert('입력한 패스워드가 다릅니다.');
return;
}
if(confirm('탈퇴하시겠습니까?')) {
document.form_del.action = 'member_delete.jsp';
document.form_del.submit();
}
}
</script>
</head>
<body>
<h2>회원 탈퇴</h2>
<form method="post" name="form_del">
아이디:<%=session.getAttribute("id") %><br>
패스워드:<input type="password"name="pw"><br>
패스워드 확인:<input type="password"name="repw"><br>
<input type="button" value="탈퇴" onclick="check();">
<input type="button" value="취소" onclick="location.href='index.jsp';">
</form>
</body>
</html>
이번에는 function을 사용하여 페이지를 넘겨준다.
패스워드와 패스워드 확인을 입력하고 탈퇴 버튼을 누르면 onclick 기능으로 인해 check()메소드로 올라간다.
check()메소드에서는 delete.jsp에 pw창이 비여있다면, pw 확인창이 비여있다면, pw와 pw확인이 서로 다르다면 으로 나뉘고 만약 위의 사항들에 해당되지 않으면 confrim()메소드로 YES NO창을 띄워 확인을 하게 해준다.
yes를 누르면 true가 리턴되어 밑의 코드들이 작동하여 member_delete.jsp페이지로 넘어가게 된다.
-member_delete.jsp
<%@page import="member.vo.Member"%>
<%@page import="member.controller.MemberStorage"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
String id = (String)session.getAttribute("id");
String pw = request.getParameter("pw");
String repw = request.getParameter("repw");
if( pw.equals(repw) == false){
%>
<script>
alert('패스워드가 서로 다릅니다.');
history.back();
</script>
<%
}else{
MemberStorage ms = new MemberStorage();
Member m = ms.selectId(id);
if(m != null && m.getPw().equals(pw)){
boolean check = ms.delete(m);
if(check == true){
%>
<script>
alert('회원 정보 삭제 완료');
location.href='logout.jsp';
</script>
<%
}else{
%>
<script>
alert('다시 시도하세요.');
location.href='delete.jsp';
</script>
<%
}
}else{
%>
<script>
alert('패스워드를 확인하세요.');
history.back();
</script>
<%
}
}
%>
전 페이지에서 입력한 pw와 repw가 같은지의 여부를 한번 더 체크해주었다.(생략 가능)
현재 세션에 저장된 id를 통해 ms.selectId(id)의 데이터를 m에 넣어준다.
m이 null이 아니고 m의 pw가 전 페이지(delete.jsp)에서 입력한 pw가 일치하다면 ms.delete(m)이 실행된다.
잘 삭제가 되었다면 true가 나와 회원정보가 삭제되었다는 알림창이 뜨게 되고
데이터 삭제에 문제가 생겨 데이터가 삭제가 되지 않았고 그 결과 리턴값이 false가 나왔다면 다시 시도하라는 메시지 창을 띄운다.
pw가 일치하지 않으면 패스워드를 확인하라는 메시지창과 함께 전 페이지(delete.jsp)로 넘겨버린다.
'JSP' 카테고리의 다른 글
JSP_오라클 연동_자바로 연습하기(selectAll/insert/update/delete) (0) | 2021.05.08 |
---|---|
JSTL_태그 라이브러리 다운받기 (0) | 2021.05.03 |
JSP_홈페이지 로그인, 로그아웃 구현(DB연동 없이) (0) | 2021.05.02 |
JSP_홈페이지 회원가입, 회원 목록 기능 만들기(DB연동 없이) (0) | 2021.04.28 |
JSP_Session을 이용해서 로그인, 로그아웃만들기 (0) | 2021.04.22 |
- Total
- Today
- Yesterday
- Redirect
- this.
- pageContext
- id
- scriptlet
- forward
- padding
- CLASS
- 독학
- dl
- 자격증
- Expression
- 실기
- application
- link href
- 정처산기
- Declaration
- Margin
- span
- NAV
- 합격
- getParameter
- 정보산업처리기사
- div
- RequestDispatcher
- 정처기
- request
- session
- jsp
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |