먼저 로그인 페이지를 생성한다.
더보기
loginForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 페이지</title>
</head>
<body>
<%session.invalidate(); %>
<center>
<form name="login" action="loginProcess.jsp" method="post">
<table border="1">
<thead>
<th colspan="2"><h2>로그인 페이지</h2></th>
</thead>
<tbody>
<tr>
<td>아이디:</td>
<td><input type="text" id="id" name="id" size="18" maxlength="12" minlength="4"></td>
</tr>
<tr>
<td>비밀번호:</td>
<td><input type="password" id="password" name="password" size="18" maxlength="12" minlength="4"></td>
</tr>
<tr>
<td colspan="2" align="center"><a href="#" onclick="javascript:login.submit()">로그인</a> <a href="joinForm.jsp">회원 가입</a></td>
</tr>
</tbody>
</table>
</form>
</center>
</body>
</html>
회원 가입 클릭시 예전에 만들어 두었던 회원가입 페이지를 사용한다.
더보기
유효성 검사 스크립트는 예전에 만든 https://code-escape.tistory.com/33 스크립트 참고
joinForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<title>
회원 가입 페이지
</title>
</head>
<body background="배경사진">
<form action="joinProcess.jsp" onsubmit="return check()" method="post">
<table width="620" height="450" border="1" bordercolor="skyblue" cellpadding="0" cellspacing ="0" align="center">
<th colspan="2" bgcolor="skyblue" >
회원 기본 정보
</th>
<tr bgcolor="white">
<td bgcolor="gray" align ="center"><b>아이디:</b></td>
<td>
<input type="text" id="id" name="id" size="18" maxlength="12" minlength="4">
<label for="my_id">4~12자의 영문 대소문자와 숫자로만 입력</label>
</td>
</tr>
<tr bgcolor="white">
<td width="120" bgcolor="gray" align ="center"><b>비밀번호:</b></td>
<td>
<input type="password" id="password" name="password" size="18" maxlength="12" minlength="4">
<label for="my_password">4~12자의 영문 대소문자와 숫자로만 입력</label>
</td>
</tr>
<tr bgcolor="white">
<td bgcolor="gray" align ="center"><b>비밀번호 확인:</b></td>
<td>
<input type="password" id="check_password" name="check_password" size="18" maxlength="12" minlength="4">
</td>
</tr>
<tr bgcolor="white">
<td bgcolor="gray" align ="center" ><b>메일주소:</b></td>
<td>
<input type="text" id="email" name="email" size="24">
<label for="my_email">예) id@domain.com</label>
</td>
</tr>
<tr bgcolor="white">
<td bgcolor="gray" align ="center"><b>이름:</b></td>
<td>
<input type="text" id="name" name="name" size="24">
</td>
</tr>
<th colspan="2" bgcolor="skyblue" >
개인 신상 정보
</th>
<!-- <tr bgcolor="white">
<td bgcolor="gray" align ="center"><b>주민등록 번호:</b></td>
<td>
<input type="text" id="my_number" name="my_number" maxlength="13" size="24">
<label for="my_email">예) 1234561234567</label>
</td>
</tr> -->
<tr bgcolor="white">
<td bgcolor="gray" align ="center"><b>생일:</b></td>
<td>
<input type="text" id="year" name="year" maxlength="4" size="5">
년
<select id="month" name="month">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
월
<select id="day" name="day">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
일
</td>
</tr>
<tr bgcolor="white">
<td bgcolor="gray" align ="center"><b>관심분야</b></td>
<td>
<input type="checkbox" name="interest" value="컴퓨터" >컴퓨터
<input type="checkbox" name="interest" value="인터넷" >인터넷
<input type="checkbox" name="interest" value="여행" >여행
<input type="checkbox" name="interest" value="영화감상" >영화감상
<input type="checkbox" name="interest" value="음악감상" >음악감상
</td>
</tr>
<tr bgcolor="white" height="100">
<td bgcolor="gray" align ="center"><b>자기소개:</b></td>
<td>
<textarea id="introduce" name="introduce" cols="56" rows="6"></textarea>
</td>
</tr>
</table>
<br>
<div align="center">
<input type="submit" value="회원가입">
<input type="reset" value="다시입력">
</div>
</form>
<script src="join.js"></script>
</body>
</html>
회원 가입 하면 db에 값을 넣을 페이지
더보기
자바 Bean태그를 사용하여 얻은 Parameter값을 자동으로 넣어 주었다.
joinProcess.jsp
<%@ 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"); %>
<jsp:useBean id="user" class="join.User" scope="page"/>
<jsp:setProperty name="user" property="*"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입 로직 페이지</title>
</head>
<body>
<%
Connection conn = null;
String sql = "INSERT INTO USER_MANAGE(ID,PASSWORD,EMAIL,NAME,BIRTH,INTEREST,INTRODUCE) VALUES(?,?,?,?,?,?,?)";
try{
Context init = new InitialContext();
DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
conn = ds.getConnection();
PreparedStatement ptmt = conn.prepareStatement(sql);
ptmt.setString(1, user.getId());
ptmt.setString(2, user.getPassword());
ptmt.setString(3, user.getEmail());
ptmt.setString(4, user.getName());
ptmt.setString(5, user.getBirth());
ptmt.setString(6, user.getInterests());
ptmt.setString(7, user.getIntroduce());
if(ptmt.executeUpdate() != 0){
conn.commit();
ptmt.close();
response.sendRedirect("loginForm.jsp");
}
}catch(Exception e){
out.println("<h3>데이터 삽입 실패<h3>");
e.printStackTrace();
response.sendRedirect("joinForm.jsp");
}
%>
</body>
</html>
매칭된 자바 파일은 이렇다.
user.java
package join;
public class User {
private String id; //아이디
private String password; //비번
private String email; //이메일
private String name; //이름
private String birth; //생일 전체
private String year; //생일연도
private String month; //생일월
private String day; //생일날짜
private String[] interest; //흥미
private String interests;
private String introduce; //자기소개
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBirth() {
return year+"/"+month+"/"+day;
}
public void setBirth(String birth) {
this.birth = birth;
}
public String getYear() {
return year;
}
public void setYear(String year) {
this.year = year;
}
public String getMonth() {
return month;
}
public void setMonth(String month) {
this.month = month;
}
public String getDay() {
return day;
}
public void setDay(String day) {
this.day = day;
}
public String[] getInterest() {
return interest;
}
public void setInterest(String[] interest) {
this.interest = interest;
this.interests = interest[0]+" ";
for(int i=1; i<interest.length; i++) {
this.interests += interest[i]+" ";
}
}
public String getInterests() {
return interests;
}
public void setInterests(String interests) {
this.interests = interests;
}
public String getIntroduce() {
return introduce;
}
public void setIntroduce(String introduce) {
this.introduce = introduce;
}
public User() {
// TODO Auto-generated constructor stub
}
}
이제 로그인 하면 db에 아이디와 비밀번호를 확인하여 페이지를 넘겨줄 페이지를 생성한다.
더보기
회원 이면 main 페이지로 가고
아니면 이전 로그인 페이지로 간다.
loginProcess.jsp
<%@ 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"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
Connection conn = null;
String sql = "SELECT * FROM USER_MANAGE WHERE ID = ? and PASSWORD = ?";
try{
Context init = new InitialContext();
DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
conn = ds.getConnection();
PreparedStatement ptmt = conn.prepareStatement(sql);
ptmt.setString(1, request.getParameter("id"));
ptmt.setString(2, request.getParameter("password"));
ResultSet rs = ptmt.executeQuery();
if(!rs.next()){
out.println("<script>alert('회원이 아닙니다!!'); history.back();</script>");
ptmt.close();
}else{
out.println("<h3>데이터 삽입이 모두 완료 되었습니다. </h3>");
session.setAttribute("id", request.getParameter("id"));
ptmt.close();
response.sendRedirect("Main.jsp");
}
}catch(Exception e){
out.println("<script>alert('로그인 오류!!'); history.back();</script>");
e.printStackTrace();
response.sendRedirect("loginForm.jsp");
}
%>
</body>
</html>
메인 페이지는 간단하게 구현 하였다.
로그인 시 아까전에 세션에 올려논 아이디를 가져와 띄웠다.
더보기
로그아웃시 로그인페이지로 돌아가며
로그인 페이지에 세션 초기화 코드가 있으므로 보내기만 하면 된다.
main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%String user_id = session.getAttribute("id").toString(); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2><%=user_id %> 님이 로그인 하셨습니다!</h2>
<%if(user_id.equals("admin")) {%>
<a href="Member_list.jsp">회원 정보 관리하러 가기</a>
<%} %>
<br/>
<a href="loginForm.jsp">로그아웃</a>
</body>
</html>
만약 관리자로 로그인 한다면 회원 정보를 볼 수 있게 하였다.
회원 정보 관리를 누르면 현재 db에 있는 모든 회원을 띄워준다.
더보기
Member_list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import= "java.sql.*" %>
<%@page import= "javax.sql.*" %>
<%@page import= "javax.naming.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 리스트 페이지</title>
</head>
<body>
<center>
<table border="1">
<%
Connection conn = null;
String sql = "SELECT * FROM USER_MANAGE";
try{
Context init = new InitialContext();
DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
conn = ds.getConnection();
conn.setAutoCommit(false);
PreparedStatement ptmt = conn.prepareStatement(sql);
ResultSet rs = ptmt.executeQuery();
while(rs.next()){
%>
<tr>
<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>
<%}
ptmt.close();
}catch(Exception e){
out.println("<h3>데이터 삽입 실패<h3>");
e.printStackTrace();
response.sendRedirect("Main.jsp");
} %>
</table>
</center>
</body>
</html>
회원 아이디를 눌렀을 경우 해당 회원의 정보를 띄워주는 페이지를 만들었다.
더보기
Member_info.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%request.setCharacterEncoding("UTF-8"); %>
<%@page import= "java.sql.*" %>
<%@page import= "javax.sql.*" %>
<%@page import= "javax.naming.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
Connection conn = null;
String sql = "SELECT * FROM USER_MANAGE WHERE ID=?";
try{
Context init = new InitialContext();
DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
conn = ds.getConnection();
conn.setAutoCommit(false);
PreparedStatement ptmt = conn.prepareStatement(sql);
ptmt.setString(1, request.getParameter("id"));
ResultSet rs = ptmt.executeQuery();
if(rs.next()){
%>
<center>
<table border=1>
<tr>
<td>
아이디 :
</td>
<td>
<%=rs.getString("ID") %>
</td>
</tr>
<tr>
<td>
비밀번호 :
</td>
<td>
<%=rs.getString("PASSWORD") %>
</td>
</tr>
<tr>
<td>
이름 :
</td>
<td>
<%=rs.getString("NAME") %>
</td>
</tr>
<tr>
<td>
이메일 :
</td>
<td>
<%=rs.getString("EMAIL") %>
</td>
</tr>
<tr>
<td>
생일 :
</td>
<td>
<%=rs.getString("BIRTH") %>
</td>
</tr>
<tr>
<td>
흥미 :
</td>
<td>
<%=rs.getString("INTEREST") %>
</td>
</tr>
<tr>
<td>
자기소개 :
</td>
<td>
<%=rs.getString("INTRODUCE") %>
</td>
</tr>
</table>
</center>
<%}
ptmt.close();
}catch(Exception e){
out.println("<h3>데이터 삽입 실패<h3>");
e.printStackTrace();
response.sendRedirect("Member_list.jsp");
} %>
</body>
</html>
만약 아까 삭제를 누를 경우 해당 회원을 삭제하는 페이지를 만들었다.
더보기
Member_delete.jsp
<%@ 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"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
Connection conn = null;
String sql = "DELETE FROM USER_MANAGE WHERE ID=?";
try{
Context init = new InitialContext();
DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
conn = ds.getConnection();
PreparedStatement ptmt = conn.prepareStatement(sql);
ptmt.setString(1, request.getParameter("id"));
if(ptmt.executeUpdate() != 0){
conn.commit();
ptmt.close();
response.sendRedirect("Member_list.jsp");
}
}catch(Exception e){
out.println("<h3>데이터 삽입 실패<h3>");
e.printStackTrace();
response.sendRedirect("Member_list.jsp");
}
%>
</body>
</html>
'웹' 카테고리의 다른 글
jsp 파일 업로드 (0) | 2022.10.11 |
---|---|
jsp에서 경고창 띄우기 (0) | 2022.10.11 |
jsp session을 이용한 쇼핑몰 구현 (0) | 2022.09.20 |
4번째 페이지에서 정보 띄우기 ( forward ) (0) | 2022.09.20 |
다음 페이지로 값 넘기기 ( foward 없이 ) (1) | 2022.09.20 |