[Servlet] 아이디 찾기, 비밀번호 변경

2025. 3. 9. 19:12·Web

find_id.html

아이디 찾기 화면

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>아이디 찾기</title>
</head>
<body>

<form id="frm" method="post" action="./findok_id.do" onsubmit="return find_id()">
<p>아이디 찾기</p>
<input type="radio" name="spart" value="P" checked="checked" onclick="frm_view(this.value)">일반회원
<input type="radio" name="spart" value="C" onclick="frm_view(this.value)">사업자회원
<br>
회원 이름 및 회사명<br>
<input type="text" name="snm"><br>
휴대폰번호 및 전화번호<br>
<input type="text" name="stel" maxlength="11"><br>
이메일 주소<br>
<input type="text" name="semail"><br>
<span id="corp" style="display:none;">
사업자 번호<br>
<input type="text" name="sno" maxlength="13"> * "-" 없이 입력<br>
</span>
</div>
<input type="submit" value="아이디 찾기">
</form>
</body>
<script>
function find_id() {
	if (frm.snm.value == "") {
		alert("이름 및 회사명을 입력하세요");
		return false;
	} else if (frm.stel.value == "") {
		alert("휴대폰번호 및 연락처를 입력하세요");
		return false;
	} else if (frm.semail.value == "") {
		alert("이메일을 입력하세요");
		return false;
	} else {
		if (frm.spart[0].checked == true) {	//일반회원일때 
			return true;
		} else {	//사업자회원일때 
			if (frm.sno.value == "") {
				alert("사업자 번호를 입력하셔야 합니다.");
			} else if (frm.sno.value.length < 10) {
				alert("올바른 사업자 번호를 입력하세요!");
			} else {
				return true;
			}
		}
	}
}
</script>
</html>

 

findok_id.java (servlet)

값을 받아 DB에서 id를 select 하는 Model로 전달하는 Controller

package shop;

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

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

//아이디 
public class findok_id extends HttpServlet {
	private static final long serialVersionUID = 1L;
	PrintWriter pw = null;
	m_selectid si = new m_selectid();

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		try {
			this.pw = response.getWriter();
			String snm = request.getParameter("snm");
			String stel = request.getParameter("stel");
			String semail = request.getParameter("semail");
			String mid = this.si.idok(snm,stel,semail);
			
			if (mid == null) {
			    this.pw.write("<script>" 
			            + "alert('해당되는 아이디가 없습니다.');" 
			            + "history.go(-1);" 
			            + "</script>");
			}else {
				request.setAttribute("mid", mid);
				RequestDispatcher rd = request.getRequestDispatcher("./findok_id.jsp");
				rd.forward(request, response);
			}
		}catch (Exception e) {
			this.pw.write("<script>" 
					+ "alert('findok_id error');" 
					+ "history.go(-1);" 
					+ "</script>");
		}finally {
			this.pw.close();
		}
	}
}

 

m_selectid.java (class)

이름,전화번호,이메일로 아이디를 select하는 Model

package shop;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class m_selectid {
	Connection con = null;
	m_dbinfo db = new m_dbinfo();
	PreparedStatement ps = null;
	ResultSet rs = null;
	String id = null;

	public String idok(String snm, String stel, String semail) {
		try {
			this.con = this.db.getConnection();

			// select sid from shop_member where snm="" and stel="" and semail="";
			String sql = "select sid from shop_member where snm=? and stel=? and semail=?";
			this.ps = this.con.prepareStatement(sql);
			this.ps.setString(1, snm);
			this.ps.setString(2, stel);
			this.ps.setString(3, semail);
			this.rs = this.ps.executeQuery();
			
			if (this.rs.next()) {  //next() 호출 후 데이터 읽기
				this.id = this.rs.getString("sid");
			} 
		} catch (Exception e) {
			System.out.println("db select error");

		} finally {
			try {
				this.rs.close();
				this.ps.close();
				this.con.close();
			} catch (Exception e) {
				System.out.println("db close error");
			}
		}
		return this.id;
	}
}

 

findok_id.jsp

찾은 아이디를 출력하는 View

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
String mid = (String)request.getAttribute("mid");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>아이디 찾음</title>
</head>
<body>
<p>아이디 찾기</p>
아이디 : <%=mid %><br>
<input type="button" value="비밀번호 찾기" onclick="find_pw()">
</body>
<script>
function find_pw(){
	location.href="./find_pw.jsp";
}
</script>
</html>

 

find_pw.jsp

비밀번호를 찾는 View

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>비밀번호 찾기</title>
</head>
<body>

<form id="frm" method="post" action="./findok_pw.do">
<p>비밀번호 찾기</p>
<input type="radio" name="spart" value="P" checked="checked" onclick="frm_view(this.value)">일반회원
<input type="radio" name="spart" value="C" onclick="frm_view(this.value)">사업자회원
<br>
아이디<br>
<input type="text" name="mid"><br>
회원 이름 및 회사명<br>
<input type="text" name="snm"><br>
휴대폰번호 및 전화번호<br>
<input type="text" name="stel" maxlength="11"><br>
이메일 주소<br>
<input type="text" name="semail"><br>
<span id="corp" style="display:none;">
사업자 번호<br>
<input type="text" name="sno" maxlength="13"> * "-" 없이 입력<br>
</span>
</div>
<input type="button" value="비밀번호 찾기" onclick="find_pw()">
</form>

</body>
<script>
function find_pw() {
	if (frm.mid.value == "") {
		alert("아이디를 입력하세요");
	} else if (frm.snm.value == "") {
		alert("이름 및 회사명을 입력하세요");
	} else if (frm.stel.value == "") {
		alert("휴대폰번호 및 연락처를 입력하세요");
	} else if (frm.semail.value == "") {
		alert("이메일을 입력하세요");
	} else {
		if (frm.spart[0].checked == true) {	//일반회원일때 
			frm.submit();
		} else {	//사업자회원일때 
			if (frm.sno.value == "") {
				alert("사업자 번호를 입력하셔야 합니다.");
			} else if (frm.sno.value.length < 10) {
				alert("올바른 사업자 번호를 입력하세요!");
			} else {
				frm.submit();
			}
		}
	}
}
</script>
</html>

 

findok_pw.java (servlet)

받은 정보가 존재하는지 Model로 확인하는 Controller

존재하는 경우 mid를 담아 변경할 패스워드를 입력하는 view로 전송

package shop;

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

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

public class findok_pw extends HttpServlet {
	private static final long serialVersionUID = 1L;
	PrintWriter pw = null;
	m_selectid si = new m_selectid();
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		try {
			this.pw = response.getWriter();
			String mid = request.getParameter("mid");
			String snm = request.getParameter("snm");
			String stel = request.getParameter("stel");
			String semail = request.getParameter("semail");
			
			String sid = this.si.idok(snm,stel,semail);
			if(mid.equals(sid)){
				request.setAttribute("mid", mid);
				RequestDispatcher rd = request.getRequestDispatcher("./update_pw.jsp");
				rd.forward(request, response);
			}else {
				this.pw.write("<script>" 
			            + "alert('정보를 다시 확인해주세요');" 
			            + "history.go(-1);" 
			            + "</script>");
			}
		}catch (Exception e) {
			this.pw.write("<script>" 
					+ "alert('findok_pw error');" 
					+ "history.go(-1);" 
					+ "</script>");
		}finally {
			this.pw.close();
		}
	}
}

 

update_pw.jsp

변경할 패스워드를 입력하는 View

hidden 타입의 input 태그로 아이디를 함께 전송 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
String mid = (String)request.getAttribute("mid");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>비밀번호 재설정</title>
</head>
<body>

<form id="frm" method="post" action="./updatepw.do" onsubmit="return ck()">
<input type="hidden" name="mid" value="<%=mid%>">
<input type="password" name="newpw" placeholder="변경할 비밀번호 입력"><br>
<input type="password" name="newpw2" placeholder="변경할 비밀번호 재입력"><br>
<input type="submit" value="비밀번호 변경">
</form>

</body>
<script>
function ck(){
	if(frm.newpw.value != frm.newpw2.value){
		alert('비밀번호가 서로 다릅니다.');
		return false;
	}else{
		return true;
	}
	
}
</script>
</html>

 

updatepw.java (servlet)

패스워드를 update하는 Model을 사용하는 Controller

package shop;

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

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

public class updatepw extends HttpServlet {
	private static final long serialVersionUID = 1L;
	PrintWriter pw = null;
	m_updatepw up = new m_updatepw();
 
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		try {
			this.pw = response.getWriter();
			String mid = request.getParameter("mid");
			String newpw = request.getParameter("newpw");
			int result = this.up.pwok(mid, newpw);
			
			if(result==0) {
				this.pw.write("<script>" 
						+ "alert('변경 실패');" 
						+ "history.go(-1);" 
						+ "</script>");
			}else {
				this.pw.write("<script>" 
						+ "alert('비밀번호 변경 완료');" 
						+ "location.href='./login.jsp';" 
						+ "</script>");
			}
		}catch (Exception e) {
			this.pw.write("<script>" 
					+ "alert('updatepw error');" 
					+ "history.go(-1);" 
					+ "</script>");
		}finally{
			this.pw.close();
		}
	}
}

 

m_updatepw.java (class)

패스워드를 update하는 Model

package shop;

import java.sql.Connection;
import java.sql.PreparedStatement;

public class m_updatepw {
	Connection con = null;
	PreparedStatement ps = null;
	m_dbinfo db = new m_dbinfo();
	int result = 0;
	
	public int pwok(String mid, String newpw) {
		try {
			this.con = this.db.getConnection();
			
			newpw = new m_md5().md5_code(newpw);
			//update shop_member set spw="123" where sid="test";
			String sql = "update shop_member set spw=? where sid=?";
			this.ps = this.con.prepareStatement(sql);
			this.ps.setString(1, newpw);
			this.ps.setString(2, mid);
			this.result = this.ps.executeUpdate();
			System.out.println("pwok : " + this.result);
			
		}catch (Exception e) {
			this.result = 0;
			System.out.println(e);
			System.out.println("pwok error");
		}finally {
			try {
				this.ps.close();
				this.con.close();
				
			}catch (Exception e) {
				this.result = 0;
				System.out.println("pwok close error");
			}
		}		
		return this.result;
	}
}

 

 

 

 

저작자표시 비영리 변경금지 (새창열림)
'Web' 카테고리의 다른 글
  • [Servlet] 미니미니미니프로젝트 - 쇼핑몰 만들기
  • [Ajax] POST 전송 (Javascript, jQuery)
  • [Servlet] 제휴 메일 시스템
  • [Servlet] 게시판 만들기
9na0
9na0
응애
  • 9na0
    구나딩
    9na0
  • 전체
    오늘
    어제
    • 분류 전체보기 (211)
      • Web (118)
      • Java (28)
      • 데이터베이스 (14)
      • 세팅 (12)
      • 과제 (3)
      • 쪽지시험 (2)
      • 정보처리기사 (4)
      • 서버 (25)
  • 블로그 메뉴

    • 링크

      • 포폴
      • 구깃
    • 공지사항

    • 인기 글

    • 태그

      java_io1~10
      net4
      Oracle
      datalist
      macbook pro m4
      re_java10
      spring-boot
      net2
      notice_writer
      file24
      net3
      re2
      noticewriteok
      exam1_1~10
      net1
      net5~10
      file25_t
      io_dto
      ab1
      file25
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    9na0
    [Servlet] 아이디 찾기, 비밀번호 변경
    상단으로

    티스토리툴바