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;
}
}