1. org.kh.member.model.vo
Member class
package org.kh.member.model.vo;
import java.sql.Date;
public class Member {
private String memberId;
private String memberPw;
private String memberName;
private String email;
private int age;
private String addr;
private String gender;
private Date enrollDate;
public Member() {
super();
// TODO Auto-generated constructor stub
}
public Member(String memberId, String memberPw, String memberName, String email, int age, String addr,
String gender, Date enrollDate) {
super();
this.memberId = memberId;
this.memberPw = memberPw;
this.memberName = memberName;
this.email = email;
this.age = age;
this.addr = addr;
this.gender = gender;
this.enrollDate = enrollDate;
}
// public Member(String memberId, String memberPw, String memberName, String email, int age, String addr,
// String gender) {
// super();
// this.memberId = memberId;
// this.memberPw = memberPw;
// this.memberName = memberName;
// this.email = email;
// this.age = age;
// this.addr = addr;
// this.gender = gender;
// }
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public String getMemberPw() {
return memberPw;
}
public void setMemberPw(String memberPw) {
this.memberPw = memberPw;
}
public String getMemberName() {
return memberName;
}
public void setMemberName(String memberName) {
this.memberName = memberName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Date getEnrollDate() {
return enrollDate;
}
public void setEnrollDate(Date enrollDate) {
this.enrollDate = enrollDate;
}
}
2. org.kh.member.model.common
JDBCTemplate class
package org.kh.common;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JDBCTemplate {
public JDBCTemplate() {
}
// Connection 객체 생성 메소드
//static 정적변수!
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "server_test", "1234");
// 자동으로 commit을 지원해주는 기능을 해제
conn.setAutoCommit(false);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static void close(Connection conn) {
try {
if (conn != null && !conn.isClosed()) {
conn.close(); // 만약의 경우대비
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 커밋용 메소드
public static void commit(Connection conn) {
try {
if (conn != null && !conn.isClosed()) {
conn.commit();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void rollback(Connection conn) {
try {
if (conn != null && !conn.isClosed()) {
conn.rollback();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// stmt , pstmt, rset
// 얘네도 객체화 해줘야됨!
public static void close(Statement stmt) {
try {
if (stmt != null && !stmt.isClosed()) {
stmt.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// public void close(PreparedStatement pstmt) {
// try {
// if (pstmt != null && !pstmt.isClosed()) {
// pstmt.close();
// }
// } catch (SQLException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
// 지우는 이유는 다형성 때문에 stmt 를 만들었기 때문에 지워도 된다!!!!!!!!!!!!
public static void close(ResultSet rset) {
try {
if (rset != null && !rset.isClosed()) {
rset.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
3. org.kh.member.model.dao
MemberDao class
package org.kh.member.model.dao;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import org.kh.common.JDBCTemplate;
import org.kh.member.model.vo.Member;
public class MemberDao {
public Member login(String id, String pw) {
Member m = null;
Connection conn = JDBCTemplate.getConnection();
PreparedStatement pstmt = null;
ResultSet rset = null;
String query = "select * from member where member_id=? and member_pw=?";
try {
pstmt = conn.prepareStatement(query);
pstmt.setString(1, id);
pstmt.setString(2, pw);
rset = pstmt.executeQuery();
if (rset.next()) {
m = new Member();
m.setAddr(rset.getString("addr"));
m.setAge(rset.getInt("age"));
m.setEmail(rset.getString("email"));
m.setEnrollDate(rset.getDate("enroll_date"));
m.setGender(rset.getString("gender"));
m.setMemberId(rset.getString("member_id"));
m.setMemberName(rset.getString("member_name"));
m.setMemberPw(rset.getString("member_pw"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
JDBCTemplate.close(rset);
JDBCTemplate.close(pstmt);
JDBCTemplate.close(conn);
}
return m;
}
public ArrayList<Member> selectAll() {
ArrayList<Member> list = new ArrayList<Member>();
Connection conn = JDBCTemplate.getConnection();
PreparedStatement pstmt = null;
ResultSet rset = null;
String query = "SELECT * FROM MEMBER";
try {
pstmt = conn.prepareStatement(query);
rset = pstmt.executeQuery();
while (rset.next()) {
// String addr = rset.getString("addr");
// int age = rset.getInt("age");
// String email = rset.getString("email");
// Date enrollDate = rset.getDate("enroll_date");
// String gender = rset.getString("gender");
// String memberId = rset.getString("member_id");
// String memberName = rset.getString("member_name");
// String memberPw = rset.getString("member_pw");
// Member m = new Member(memberId, memberPw, memberName, email, age, addr,
// gender, enrollDate);
// list.add(m);
Member m = new Member();
m.setAddr(rset.getString("addr")); // 내용값이 DB의 아이디랑 맞아야됨!!!!!!!
m.setAge(rset.getInt("age"));
m.setEmail(rset.getString("email"));
m.setEnrollDate(rset.getDate("enroll_date"));
m.setGender(rset.getString("gender"));
m.setMemberId(rset.getString("member_Id"));
m.setMemberName(rset.getString("member_Name"));
m.setMemberPw(rset.getString("member_Pw"));
list.add(m);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
JDBCTemplate.close(rset);
JDBCTemplate.close(pstmt);
JDBCTemplate.close(conn);
}
return list;
}
public int enrollMember(Member m) {
int result = 0;
Connection conn = JDBCTemplate.getConnection();
PreparedStatement pstmt = null;
String query = "insert into member values(?,?,?,?,?,?,?,sysdate)";
try {
pstmt = conn.prepareStatement(query);
pstmt.setString(1, m.getMemberId());
pstmt.setString(2, m.getMemberPw());
pstmt.setString(3, m.getMemberName());
pstmt.setString(4, m.getEmail());
pstmt.setInt(5, m.getAge());
pstmt.setString(6, m.getAddr());
pstmt.setString(7, m.getGender());
result = pstmt.executeUpdate();
if (result > 0) {
conn.commit();
} else {
conn.rollback();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
JDBCTemplate.close(pstmt);
JDBCTemplate.close(conn);
}
return result;
}
public int deleteMember(String id) {
int result = 0;
Connection conn = JDBCTemplate.getConnection();
PreparedStatement pstmt = null;
String query = "delete from member where member_id = ?";
try {
pstmt = conn.prepareStatement(query);
pstmt.setString(1, id);
result = pstmt.executeUpdate();
if (result > 0) {
conn.commit();
} else {
conn.rollback();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
JDBCTemplate.close(pstmt);
JDBCTemplate.close(conn);
}
return result;
}
public int updateMember(Member m) {
int result = 0;
Connection conn = JDBCTemplate.getConnection();
PreparedStatement pstmt = null;
String query = "update member set member_pw=? ,member_name=?, email=?, age=?, addr=?, gender=? where member_id=?";
try {
pstmt = conn.prepareStatement(query);
pstmt.setString(1, m.getMemberPw());
pstmt.setString(2, m.getMemberName());
pstmt.setString(3, m.getEmail());
pstmt.setInt(4, m.getAge());
pstmt.setString(5, m.getAddr());
pstmt.setString(6, m.getGender());
pstmt.setString(7,m.getMemberId());
result = pstmt.executeUpdate();
if(result>0) {
conn.commit();
}else {
conn.rollback();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
JDBCTemplate.close(pstmt);
JDBCTemplate.close(conn);
}
return result;
}
}
1. index.html (메인화면)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>연습용 페이지 - 홍길동</h1>
<hr>
<h2>두 수 더하기</h2>
<form action="/plus" method="get">
<input type="text" name="firstValue">
+
<input type="text" name="secondValue">
<input type="submit" value="결과보기">
</form>
<h3><a href="/views/smember/login2.jsp">1. 로그인하기</a></h3>
</body>
</html>
2. login.html (로그인 화면)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>로그인</h1>
<hr>
<form action="./login.jsp" method="post">
아이디 : <input type="text" name="id"><br>
비밀번호 : <input type = "password" name="pw"><br>
<input type ="submit" value="로그인">
</form>
<br>
<a href="./enroll.html"><input type = "submit" value="회원가입"></a>
<a href="./delete.html"><input type = "submit" value="회원삭제"></a>
</body>
</html>
3. login.jsp (로그인 로직)
(1)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import ="org.kh.member.model.vo.Member" %>
<%@ page import ="org.kh.member.model.dao.MemberDao" %>
<%
//자바 소스 작성 구간
//1.인코딩
request.setCharacterEncoding("utf-8");
//2. 변수저장
String id = request.getParameter("id");
String pw = request.getParameter("pw");
//3. 비지니스로직
MemberDao dao = new MemberDao();
Member m = dao.login(id,pw);
if(m != null){
//로그인 성공한 경우
//세션객체에 로그인 정보 등록
//key 값은 String, Value값은 Object 타입 맵
session.setAttribute("member", m); // 타입이 String!!!!!!!
}
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>로그인 결과</h1>
<%if(m != null){%>
<p>로그인 성공!!</p>
<p><%=m.getMemberName() %> 님 환영합니다</p>
<a href="/index.html">메인으로 돌아가기</a>
<a href="./selectAll.jsp">전체회원정보 조회</a>
<%}else{%>
<p>로그인실패</p>
<script>
alert("아이디 비밀번호를 확인하세요");
</script>
<a href="/index.html">메인으로 돌아가기</a>
<%}%>
</body>
</html>
(2) 다른방식 login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import ="org.kh.member.model.vo.Member" %>
<%
Member m= (Member)session.getAttribute("member");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%if(m==null){%>
<h1>로그인</h1>
<hr>
<form action="./login.jsp" method="post">
아이디 : <input type="text" name="id"><br>
비밀번호 : <input type = "password" name="pw"><br>
<input type ="submit" value="로그인">
</form>
<br>
<a href="./enroll.html"><input type = "submit" value="회원가입"></a>
<a href="./delete.html"><input type = "submit" value="회원삭제"></a>
<%}else{ %>
<h2>[<%=m.getMemberName() %>]님 환영합니다.</h2>
<p><a href="/views/smember/logout.jsp">로그아웃</a></p>
<p><a href="/views/smember/mypage.jsp">마이페이지</a></p>
<%}%>
</body>
</html>
4. logout.jsp (로그아웃 로직)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
session.invalidate();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<script>
alert("로그아웃 되었습니다.");
location.href="/views/smember/login2.jsp";
</script>
</body>
</html>
5. enroll.html (회원가입 화면)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>회원가입</h1>
<hr>
<form action= "./enroll.jsp" method = "post">
아이디 : <input type="text" name="id"><br>
비밀번호 : <input type="password" name="pw"><br>
이름 : <input type="text" name="name"><br>
이메일 : <input type="email" name="email"><br>
나이 : <input type="text" name="age"><br>
주소 : <input type="text" name="addr"><br>
성별 : <input type="text" name="gender"><br>
<br>
<input type="submit" value="회원가입">
</form>
</body>
</html>
6. enroll.jsp (회원가입 로직)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import ="org.kh.member.model.vo.Member" %>
<%@ page import ="org.kh.member.model.dao.MemberDao" %>
<%
//자바 소스 작성 구간
//1.인코딩
request.setCharacterEncoding("utf-8");
//2. 변수저장
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String name = request.getParameter("name");
String email = request.getParameter("email");
int age = Integer.parseInt(request.getParameter("age"));
String addr = request.getParameter("addr");
String gender = request.getParameter("gender");
//3. 비지니스로직
MemberDao dao = new MemberDao();
Member m = new Member(id,pw,name,email,age,addr,gender,null);
int result = dao.enrollMember(m);
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%if(result>0){%>
<script>
alert("회원가입성공!!");
</script>
<%}else{%>
<script>
alert("회원가입실패!!") ;
</script>
<%}%>
</body>
</html>
7. mypage.jsp (마이페이지 로직)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="org.kh.member.model.vo.Member"%>
<%@page import="org.kh.member.model.dao.MemberDao"%>
<%
Member m = (Member)session.getAttribute("member");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>마이페이지</h1><hr>
<form action="/views/smember/updateMember.jsp">
<h3>아이디 : <input type="text" name="id" value="<%=m.getMemberId()%>" readonly></h3>
<h3>비밀번호 : <input type="password" name="pw" value="<%=m.getMemberPw() %>"> </h3>
<h3>이름 : <input type="text" name="name" value="<%=m.getMemberName()%>"></h3>
<h3>이메일 : <input type="text" name="email" value="<%=m.getEmail()%>"></h3>
<h3>나이 : <input type="text" name="age" value="<%=m.getAge()%>"></h3>
<h3>주소 : <input type="text" name="addr" value="<%=m.getAddr()%>"></h3>
<h3>성별 : <%-- <input type="radio" value="남" name="gender"
<%if(m.getGender().equals("남")){%>
checked="checked"
<%}%>
>남자
<input type="radio" value="남" name="gender"
<%if(m.getGender().equals("여")){%>
checked="checked"
<%}%>
>여자
</h3>--%>
<select name="gender">
<option value="남"<%if(m.getGender().equals("남")){%>selected="selected"<%}%>>남자</option>
<option value="여"<%if(m.getGender().equals("여")){%>selected="selected"<%}%>>여자</option>
</select>
</h3>
<button type="submit">정보변경</button>
<button type="button" onclick="return deleteMember('<%=m.getMemberId()%>');">회원탈퇴</button>
<%--form태그 안에서 type="button"을 명시하지 않으면 화면 넘어감 --%>
</form>
<form action="/views/smember/delete.jsp" method = "post">
<input type="hidden" name="id" value="<%=m.getMemberId()%>">
<button type="submit">탈퇴하기</button>
</form>
http://localhost/views/smember/deleteMember.jsp?id
<script>
function deleteMember(id){
if(confirm("정말 탈퇴하시겠습니까 ? ")){
location.href="/views/smember/delete.jsp?id="+id;
}
}
</script>
</body>
</html>
8. delete.html (회원탈퇴 화면)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>회원삭제</h1>
<hr>
<form action= "./delete.jsp" method = "post">
아이디 : <input type="text" name="id"><br>
<br>
<input type="submit" value="회원삭제">
</form>
</body>
</html>
9. delete.jsp (회원탈퇴 로직)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import ="org.kh.member.model.vo.Member" %>
<%@ page import ="org.kh.member.model.dao.MemberDao" %>
<%
//자바 소스 작성 구간
//1.인코딩
request.setCharacterEncoding("utf-8");
//2. 변수저장
String id = request.getParameter("id");
//3. 비지니스로직
MemberDao dao = new MemberDao();
int result = dao.deleteMember(id);
dao.deleteMember(id);
session.invalidate();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%if(result>0){%>
<script>
alert("회원삭제성공!!");
</script>
<%}else{%>
<script>
alert("회원삭제실패!!") ;
</script>
<%}%>
</body>
</html>
10. updateMember.jsp (회원정보수정 로직)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="org.kh.member.model.vo.Member"%>
<%@page import="org.kh.member.model.dao.MemberDao"%>
<%
//자바 소스 작성 구간
//1.인코딩
request.setCharacterEncoding("utf-8");
//2. 변수저장
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String name = request.getParameter("name");
String email = request.getParameter("email");
int age = Integer.parseInt(request.getParameter("age"));
String addr = request.getParameter("addr");
String gender = request.getParameter("gender");
MemberDao dao = new MemberDao();
Member member = new Member(id,pw,name,email,age,addr,gender,null);
int result = dao.updateMember(member);
if(result>0){
//Member m = (Member)session.getAttribute("member");
Member m = dao.login(id,pw);
session.setAttribute("member", m);
}
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<% if(result>0){%>
<script>
alert("정보 변경 성공");
location.href="/views/smember/login2.jsp";
</script>
<% }else{ %>
<script>
alert("정보 변경 실패");
location.href="/views/smember/login2.jsp";
</script>
<%} %>
</body>
</html>
11. selectAll.jsp (회원 전체 출력 로직)
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import ="org.kh.member.model.vo.Member" %>
<%@ page import ="org.kh.member.model.dao.MemberDao" %>
<%
//자바 소스 작성 구간
//1.인코딩
request.setCharacterEncoding("utf-8");
//2. 변수저장
//3. 비지니스로직
MemberDao dao = new MemberDao();
ArrayList<Member> list = dao.selectAll();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>전체 회원 정보 출력</h3>
<table border = 1>
<%-- <%for(int i=0; i<list.size(); i++){
<tr>
<td><%=list.get(i).getMemberId()%></td>
<td><%=list.get(i).getMemberPw()%></td>
<td><%=list.get(i).getMemberName()%></td>
<td><%=list.get(i).getEmail()%></td>
<td><%=list.get(i).getAge()%></td>
<td><%=list.get(i).getAddr()%></td>
<td><%=list.get(i).getGender()%></td>
<td><%=list.get(i).getEnrollDate()%></td>
</tr>
<%}%>
--%>
<%for(Member m : list){%>
<tr>
<td><%=m.getMemberId()%></td>
<td><%=m.getMemberPw()%></td>
<td><%=m.getMemberName()%></td>
<td><%=m.getEmail()%></td>
<td><%=m.getAge()%></td>
<td><%=m.getAddr()%></td>
<td><%=m.getGender()%></td>
<td><%=m.getEnrollDate()%></td>
</tr>
<%}%>
</table>
</body>
</html>
'이공계전문기술연수 > Servlet | JSP' 카테고리의 다른 글
<이공계기술전문연수> 7. Servlet / JSP jspTag(EL) (0) | 2019.11.19 |
---|---|
<이공계기술전문연수> 6. Servlet / JSP Servlet Filter (0) | 2019.10.08 |
<이공계기술전문연수> 3. Servlet / JSP MVC1 , MVC2 (0) | 2019.10.01 |
<이공계기술전문연수> 3. Servlet / JSP (0) | 2019.09.29 |
<이공계기술전문연수> 2. Servlet / JSP (0) | 2019.09.28 |