빅데이터 교육과정 (2021-01-25 ~ 2021-06-24)/WEB (02-22 ~)
DB를 활용한 회원가입
hwangpro
2021. 3. 23. 00:24
실행 결과
로그인 페이지
로그인 결과
회원가입 페이지
회원 가입 완료 창
로그인 페이지 관리자 아이디로 접속
관리자모드 접속 창
Member_list
2열 삭제 결과
뒤로 가기 눌렀을 때
로그 아웃 눌렀을 때
JoinForm.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
32
33
34
35
36
37
38
39
40
41
42
43
44
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>회원가입</title>
</head>
<body>
<form name="Join" action="JoinProcess.jsp" method="post">
<center>
<table border=1>
<tr>
<td colspan="2" align=center bgcolor="pink">
<b><font size=5>회원가입 페이지</font></b>
</td>
</tr>
<tr><td>아이디 : </td><td><input type="text" name="id"></td></tr>
<tr><td>비밀번호 : </td><td><input type="password" name="password"></td></tr>
<tr><td>이름 : </td><td><input type="text" name="name"></td></tr>
<tr><td>나이 : </td><td><input type="text" name="age" size=5></td></tr>
<tr>
<td>성별</td>
<td>
<input type="radio" name="gender" value="남" checked/>남자
<input type="radio" name="gender" value="여"/>여자
</td>
</tr>
<tr><td>이메일 주소 : </td><td><input type="text" name="email" size=30></td></tr>
</tr>
<tr>
<td colspan="2" align=center>
<input type="submit" value="회원가입"> <!-- 회원가입을 하면 JoinProcess.jsp로 넘어가게 된다. -->
<input type="reset" value="다시 작성">
</td>
</tr>
</table>
</center>
</form>
</body>
</html>
|
cs |
JoinProcess.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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String password = request.getParameter("password");
String name = request.getParameter("name");
int age = Integer.parseInt(request.getParameter("age"));
String gender = request.getParameter("gender");
String email = request.getParameter("email");
Connection conn=null; //DB 연결
PreparedStatement pstmt=null; //SQL문
try {
Context init = new InitialContext();
DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
conn = ds.getConnection();
pstmt = conn.prepareStatement("Insert into member5 values(?,?,?,?,?,?)"); //커넥션풀 방식 ?,?,?,?,?,? 쿼리문
pstmt.setString(1,id); //1부터
pstmt.setString(2,password); //2번째 물음표에 password를 넣겠다.
pstmt.setString(3,name);
pstmt.setInt(4,age);
pstmt.setString(5,gender);
pstmt.setString(6,email); //6까지가 물음표 순서
int result = pstmt.executeUpdate();
if(result!=0){
out.println("<script>");
out.println("alert('회원가입이 완료되었습니다!')");
out.println("</script>");
out.println("<script>");
out.println("location.href='LoginForm.jsp'");
out.println("</script>");
}else {
out.println("<script>");
out.println("location.href='JoinForm.jsp'");
out.println("</script>");
}
} catch (Exception e) {
e.printStackTrace();
}
%>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
|
cs |
LoginForm.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
32
33
34
35
36
37
38
39
40
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
#special {
border: 0;
background-color: white;
font-size: 16px;
color: blue;
text-decoration: underline;
}
</style>
</head>
<body>
<form name="loginform" action="LoginProcess.jsp" method="post">
<center>
<table border=1>
<tr>
<td colspan="2" align=center bgcolor="pink">
<b><font size=6>로그인페이지</font></b>
</td>
</tr>
<tr><td>아이디 : </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" id="special" value="로그인"> <!-- 위의 form과 연동되어 LoginProcess로 이동한다. -->
<a href="JoinForm.jsp">회원가입</a> <!-- 회원가입을 누르면 a태그를 통해서 JoinForm으로 이동한다. -->
</td>
</tr>
</table>
</center>
</form>
</body>
</html>
|
cs |
LoginProcess.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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- LoginProcess는 입력된 정보를 DB와 연결해주는 창입니다.
목적: login창에서 입력한 거랑 loginform에서 입력한 아이디 값이랑 db에 있는 데이터랑 비교해서 일치하면 메인으로 보내주는 역할 ! -->
<%
String id = request.getParameter("id"); //loginform에서 넘어온 값
String pass = request.getParameter("password"); //loginform에서 넘어온 값
String admin = "admin";
Connection conn = null; //DB 연결
PreparedStatement pstmt = null; //SQL문
try{
Context init = new InitialContext(); //커넥션 풀을 이용하게 되면 편리하게 디비연동을 할 수 있다.
DataSource ds = (DataSource)init.lookup("java:comp/env/jdbc/OracleDB");
conn = ds.getConnection();
pstmt = conn.prepareStatement("select id, password from member5 WHERE id=? and password=?"); //prepareStatement는 statement와 다르게 ?로 지정된 값을 필요할 때 마다 이용할 수 있다.
pstmt.setString(1,id);
pstmt.setString(2,pass);
pstmt.executeUpdate();
//executeQuery 메서드는 데이터베이스에서 데이터를 가져와서 결과 집합을 반환한다. 이 메서드는 Select 문에서만 실행하는 특징이 있다.
ResultSet rs = pstmt.executeQuery(); //ResultSet
if(rs.next()) {
if(rs.getString(1).equals(id)) { //rs.getString(1)이 db에 저장되있던 id값을 갖고온다.
if(rs.getString(2).equals(pass)) { //rs.getString(1)이 db에 저장되있던 pass값을 갖고온다.
session.setAttribute("id", rs.getString(1));
//response.sendRedirect("Main.jsp");
out.println("<script>");
out.println("location.href='Main.jsp'"); //저장된 정보와 아이디와 비밀번호가 일치하면 Main.jsp로 보낸다. Main.jsp는 정보가 출력되는 창이다.
out.println("</script>");
}
else {
response.sendRedirect("LoginForm.jsp"); //pass
}
} else {
response.sendRedirect("LoginForm.jsp"); //id
}
}
//out.println("<script>");
//out.println("location.href='Main.jsp'"); //저장된 정보와 아이디와 비밀번호가 일치하면 Main.jsp로 보낸다. Main.jsp는 정보가 출력되는 창이다.
//out.println("</script>");
//out.println("<script>");
//out.println("location.href='LoginForm.jsp'");
//out.println("</script>");
}catch(Exception e){
e.printStackTrace();
}
%>
</body>
</html>
|
cs |
Main.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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%
String id = null;
if (session.getAttribute("id") != null) {
id = (String) session.getAttribute("id");//로그인을 성공적으로 수행하면 메인창 입장.
} else {
out.println("<script>");
out.println("location.href='LoginForm.jsp'"); //로그인 실패시 다시 loginForm.jsp로 돌아간다.
out.println("</script>");
}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Join Main</title>
</head>
<body>
<h3 align = "center">
<%=id%>로 로그인하셨습니다.
</h3>
<%
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try{
Context init = new InitialContext(); //context.xml을 불러오는 코드
DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB"); //커넥션풀
conn = ds.getConnection();
pstmt=conn.prepareStatement("select * from member5 where id=?"); //db에다 쿼리문을 때려박는 줄. ?자체가 특정 데이터를 받겠단 약속, id가 ?인 값을 보여주라는 의미.
pstmt.setString(1,id); //1번이 물음표의 순서, id 값이 물음표에 들어갈 값 (loginform에서 입력받은 id 값)
rs=pstmt.executeQuery(); //?에 id값이 들어갔으니 쿼리문을 실행하겠다.
while(rs.next()) { //DB를 일일이 확인 할 것 없이 바로 자신의 회원정보를 열람 할 수 있도록 하였다. id가 ?인 데이터 값들을 다 가져옴.
%>
<center>
<h2>나의 회원정보</h2>
<table border ="1" align="center">
<tr>
<td>아이디:</td><td><%= id %></td>
</tr>
<tr>
<td>이름:</td><td><%=rs.getString("name")%></td>
</tr>
<tr>
<td>비밀번호:</td><td><%=rs.getString("password") %></td>
</tr>
<tr>
<td>나이:</td><td><%=rs.getString("age") %></td>
</tr>
<tr>
<td>성별:</td><td><%=rs.getString("gender") %></td>
</tr>
<tr>
<td>이메일:</td><td><%=rs.getString("email") %></td>
</tr>
</table>
<%
}
} catch (Exception e) {
e.printStackTrace(); //콘솔에서 오류 띄워주는 것
}finally{ // 어떻게 해서든 코드를 다 실행
rs.close();
pstmt.close();
conn.close();
}
%>
<%
if (id.equals("admin")) { //admin이라는 아이디는 관리자이다. 관리자가 로그인 하였을 시에는 관리자모드 접속을 하도록 코딩하였다.
%>
<!-- //관리자(admin)접속시 -->
<a href=" Member_list.jsp" align="center">관리자모드 접속(목록 보기 가능)</a>
<%
}
%>
<form action="LoginForm.jsp">
<input type="submit" value="로그인창으로">
</form>
</center>
</body>
</html>
<!-- String id = (String)session.getAttribute("id");
out.println(id); -->
|
cs |
Member_delete.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
32
33
34
35
36
37
38
39
40
41
42
43
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="javax.sql.*"%>
<%@page import="javax.naming.*"%>
<%@page import="java.sql.*"%>
<%
String id=null;
if((session.getAttribute("id")==null) || (!((String)session.getAttribute("id")).equals("admin"))){
out.println("<script>");
out.println("location.href='loginForm.jsp'");
out.println("</script>");
}
String delete_id=request.getParameter("id");
Connection conn = null;
PreparedStatement pstmt =null;
ResultSet rs = null;
try{
Context init = new InitialContext();
DataSource ds = (DataSource)init.lookup("java:comp/env/jdbc/OracleDB");
conn=ds.getConnection();
pstmt=conn.prepareStatement("Delete from member5 where id=?");
pstmt.setString(1, delete_id);
pstmt.executeUpdate();
out.println("<script>");
out.println("location.href='Member_list.jsp'");
out.println("</script>");
}catch(Exception e){
e.printStackTrace();
}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
|
cs |
Member_info.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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="javax.sql.*"%>
<%@page import="javax.naming.*"%>
<%@page import="java.sql.*"%>
<%
String id = null;
if ((session.getAttribute("id") == null) || (!((String) session.getAttribute("id")).equals("admin"))) {
out.println("<script>");
out.println("location.href='LoginForm.jsp'");
out.println("</script>");
}
String info_id = request.getParameter("id");
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
Context init = new InitialContext();
DataSource ds = (DataSource)init.lookup("java:comp/env/jdbc/OracleDB");
conn = ds.getConnection();
pstmt = conn.prepareStatement("select * from member5 where id=?");
pstmt.setString(1, info_id);
rs = pstmt.executeQuery();
rs.next();
} catch (Exception e) {
e.printStackTrace();
}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>회원관리 시스템 관리자모드(회원 정보 보기)</title>
</head>
<body>
<center>
<table border=1 width=300>
<tr align=center>
<td>아이디:</td>
<td><%=rs.getString("id")%></td>
</tr>
<tr align=center>
<td>비밀번호 :</td>
<td><%=rs.getString("password")%></td>
</tr>
<tr align=center>
<td>나이:</td>
<td><%=rs.getString("age")%></td>
</tr>
<tr align=center>
<td>성별:</td>
<td><%=rs.getString("gender")%></td>
</tr>
<tr align=center>
<td>이메일 주소:</td>
<td><%=rs.getString("email")%></td>
</tr>
<tr align=center>
<td colspan=2><a href="Member_list.jsp">리스트로 돌아가기</a></td>
</table>
</center>
</body>
</html>
|
cs |
Member_list.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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
<%@page import="javax.sound.midi.MidiDevice.Info"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="javax.sql.*"%>
<%@page import="javax.naming.*"%>
<%@page import="java.sql.*"%>
<%
String id = null;
if ((session.getAttribute("id")) == null || (!((String) session.getAttribute("id")).equals("admin"))) {
out.println("<script>");
out.println("location.href='LoginForm.jsp'");
out.println("</script>");
}
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
Context init = new InitialContext();
DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
conn = ds.getConnection();
pstmt = conn.prepareStatement("select * from member5");
rs = pstmt.executeQuery();
} catch (Exception e) {
e.printStackTrace();
}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>회원관리 시스템 관리자모드(회원 목록 보기)</title>
</head>
<body>
<center>
<table border=1 width=300>
<tr align=center>
<td colspan=2>회원목록</td>
</tr>
<%
while (rs.next()) {
%>
<tr align=center>
<td><a href="Member_info.jsp?id=<%=rs.getString("id")%>">
<%=rs.getString("id")%>
</a></td>
<td><a href="Member_delete.jsp?id=<%=rs.getString("id")%>">삭제</a></td>
</tr>
<%
}
%>
<input type = "button" value = "뒤로 가기" onclick = "location.href = 'Main.jsp'">
<input type = "button" value = "로그 아웃" onclick = "location.href = 'LoginForm.jsp'">
</table>
</center>
</body>
</html>
|
cs |