본문 바로가기
Project Development/Java_programming

아이디 찾기 - DB 연결

by SeleniumBindingProtein 2021. 12. 15.
728x90
반응형
package miniProjectPrivateBMK_memberFrm;
/*
 * id varchar2(10) NOT NULL 
	, pw varchar2(15) NOT NULL
	, name varchar2(30) NOT NULL
	, age number(3) NOT NULL
	, gender varchar2(3) NOT NULL 
	, phone varchar2(20) NOT NULL
	, email varchar2(100) NOT NULL
	, address varchar2(1000) NOT NULL 
	, regidate DATE DEFAULT sysdate NOT NULL
	, PRIMARY KEY(id)
 */
import java.sql.Date;

public class MemberVO {

	private String id;
	private String pw;
	private String name;
	private int age;
	private String gender;
	private String phone;
	private String email;
	private String address;
	private Date regidate;
	
	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 int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public Date getRegidate() {
		return regidate;
	}
	public void setRegidate(Date regidate) {
		this.regidate = regidate;
	}	
}
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>로그인</title>
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100;300;400;500&display=swap" rel="stylesheet">
	<link rel="stylesheet" href="../css/login.css">
</head>
	<body>
		<div class="wrap">
			<form name="frmLogin" method="post" class="frmLogin"
             		enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
              	<div class="loginFrm">
              		<div class="frmList">
              			<h2>로그인</h2>
						<div class="login_id">
							<label><span>아이디 : </span><input class="text" type="text" name="user_id" placeholder="아이디"></label>
						</div> 
		
						<div class="login_pw" >		
							<label><span>비밀번호 : </span><input class="password" type="password" name="user_pw" placeholder="비밀번호"></label>
						</div>
		
						<div class="login_btn">
							<input type="checkbox" name="user_save"> 아이디/패스워드 저장
  							<input class="btnSubmit" type="submit" value="로그인">
						</div>
						
						<div class="sign_up">	
							<a class="join" href="memberForm.html">회원가입</a>
 							<a class="searchIdAndPwd" href="searchId.html">아이디찾기</a>
 							<a class="searchIdAndPwd" href="searchPwd.html">패스워드찾기</a>
						</div>		
					</div>
				</div>
			</form>
		</div>
	</body>
</html>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>아이디 찾기</title>
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100;300;400;500&display=swap" rel="stylesheet">
	<link rel="stylesheet" href="../css/searchId.css">
	<script type="text/javascript">
	function id_search() { 
	 	var frm = document.searchIdScreen;

	 	if (frm.name.value.length < 1) {
			alert("이름을 입력해주세요");
		 }
	 	else if (frm.email.value.length == 0) {
			 alert("이메일을 정확하게 입력해주세요");
		 }
	 	else{
	 		frm.method = "post";
	 		frm.action = "searchIdDB";
	 		frm.submit();  
	 	}
	 }
	</script>
</head>
	<body>
		<div class="wrap">
			<form name="searchIdScreen" method="post">
				<div class="screenId"><h1>아이디 찾기</h1></div>
				<section class="frmSearch">
					<div class="nameSearch">
						<label>이름</label><input type="text" class="memberName" name="name" placeholder="이름을 입력하세요.">
					</div>
					<br>
						
					<div class="phoneSearch">
						<label>이메일</label><input type="text" class="memberEmail" name="email" placeholder="이메일을 입력하세요.">
					</div>
					<br>
				</section>
				<div class="btnSearch">
					<input type="button" name="enter" value="찾기" onClick="id_search()">
					<input type="reset" name="cancel" value="취소" onClick="history.back()">
					<input type="hidden" name="command" value="searchId">
				</div>					
			</form>
		</div>
	</body>
</html>
package miniProjectPrivateBMK_memberFrm;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/miniProject/html/searchIdDB")		//서블릿 매핑 이름 
public class MemberServletMemberSearchId extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		request.setCharacterEncoding("utf-8");
		//전송된 리퀘스트를 가져옴
		String name = request.getParameter("name");
		String email = request.getParameter("email");
		// memberVO를 만들어서 리퀘스트에서 불러온 값을 저장 
		MemberVO memberVO = new MemberVO();
		memberVO.setName(name);
		memberVO.setEmail(email);
		
		MemberDAO dao = new MemberDAO();
		String flag = dao.searchId(memberVO);
		// 조회한 값이 맞다면, MSMSI(MemberServletMemberSearchId)로 이동
		if(flag != null) {
			RequestDispatcher d = request.getRequestDispatcher("MSMSI");
			d.forward(request, response);
		}
		else {
			RequestDispatcher d = request.getRequestDispatcher("searchId.html");
			d.forward(request, response);
		}
	}
}
package miniProjectPrivateBMK_memberFrm;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/miniProject/html/MSMSI")		//서블릿 매핑 이름 
public class MSMSI extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		request.setCharacterEncoding("utf-8");
		//전송된 리퀘스트를 가져옴
		String name = request.getParameter("name");
		String email = request.getParameter("email");
		
		//전송된 리퀘스트 값이 제대로 왔는지 확인
		System.out.println(name);
		System.out.println(email);
		// memberVO를 만들어서 리퀘스트에서 불러온 값을 저장	
		MemberVO memberVO = new MemberVO();
		memberVO.setName(name);
		memberVO.setEmail(email);
		
		MemberDAO dao = new MemberDAO();
		PrintWriter out = response.getWriter();
		
		out.println("아이디는 "+dao.searchId(memberVO)+"입니다.");
		out.print("<html><body><div><a href='login.html'>로그인 창으로 이동</a></div></body></html>");
	}
}
package miniProjectPrivateBMK_memberFrm;

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 java.util.List;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.RequestDispatcher;
import javax.sql.DataSource;
/*
 * id varchar2(10) NOT NULL 
	, pw varchar2(15) NOT NULL
	, name varchar2(30) NOT NULL
	, age number(3) NOT NULL
	, gender varchar2(3) NOT NULL 
	, phone varchar2(20) NOT NULL
	, email varchar2(100) NOT NULL
	, address varchar2(1000) NOT NULL 
	, regidate DATE DEFAULT sysdate NOT NULL
	, PRIMARY KEY(id)
 */
 public class MemberDAO {
	
	private Connection conn;
	private PreparedStatement pstmt;
	private DataSource dataFactory;		
	private ResultSet rs;
	
	public MemberDAO() {
		try {
			Context ctx = new InitialContext();
			Context envContext = (Context)ctx.lookup("java:/comp/env"); 	//JDNI에 접근하기 위해 기본경로를 지정함
			dataFactory = (DataSource)envContext.lookup("jdbc/oracle");		// 톰캣 context.xml에 설정한 name 값인 jdbc/oracle을 이용해 톰캣이 미리 연결한 DataSource를 받아옴 
		} catch (NamingException e) {
			e.printStackTrace();
			System.out.println(e.getMessage());
		}
	}
    public String searchId(MemberVO memberVO) {
		// id값을 null 
		String result = null;	
		// 조회한 레코드의 각 컬럼 값을 받아옴
		String name = memberVO.getName();
		String email = memberVO.getEmail();
		// 조회한 값이 제대로 넘어왔는지 확인
		System.out.println("이름:"+name);
		System.out.println("이메일"+email);
		
		try {
			conn = dataFactory.getConnection();	//DataSource를 이용해 DB 연결 
			String query = "SELECT id FROM MEMBERFORM";
			query += " WHERE name=? AND email=?";
			
			//메서드로 전달된 이름과 이메일을 이용해 SQL문을 작성한 후 DB에 조회함 
			pstmt = conn.prepareStatement(query); //prepareStatement() 메서드에 SQL문을 전달해 객체 생성함 
			pstmt.setString(1, name);	// 첫번째 '?'에 전달된 name을 인자로 넣음 
			pstmt.setString(2, email);	// 두번째 '?'에 전달된 email을 인자로 넣음 
			//미리 설정한 SQL문을 실행함 
			ResultSet rs = pstmt.executeQuery();
			rs.next();	
			result = rs.getString("id");
			
			System.out.println("id = " + result);
			
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println(e.getMessage());
		}
		
		return result;
	}
}

728x90
반응형

'Project Development > Java_programming' 카테고리의 다른 글

공지사항 페이지 레이아웃  (0) 2021.12.15
비밀번호 찾기 - 메일 인증  (0) 2021.12.15
회원가입 - DB 연결  (0) 2021.12.14
쇼핑몰 홈페이지  (0) 2021.12.14
회원가입 페이지  (0) 2021.12.14

댓글