국비학원/공부

31일차 jsp(6) 모델1 - 회원가입 (중복id체크, 우편번호검색, 회원가입 메소드)

mikan- 2023. 7. 3. 16:29

# LoginProc.jsp (로그인 프로세스)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    import="hewon.MemberDAO" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>id,passwd확인</title>
</head>
<body>
<%
    //id,passwd를 받아서 loginCheck()호출->true->LoginSuccess.jsp
    String mem_id=request.getParameter("mem_id");
    String mem_passwd=request.getParameter("mem_passwd");
    System.out.println("mem_id=>"+mem_id);
    System.out.println("mem_passwd=>"+mem_passwd);
    //->member=>loginCheck()호출
    MemberDAO memMgr=new MemberDAO();
    boolean check=memMgr.loginCheck(mem_id, mem_passwd);
    System.out.println("LoginProc.jsp의 check=>"+check);
%>
<%
  //check->LoginSuccess.jsp(인증화면),LogError.jsp(에러메세지)
  if(check){
	  session.setAttribute("idKey",mem_id);//키명,저장할값(id)
	  response.sendRedirect("LoginSuccess.jsp");
  }else{//check=false (id X passwd X)
	  response.sendRedirect("LogError.jsp");
  }
%>
</body>
</html>

 

# LoginSuccess.jsp (로그인 성공 페이지)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
//로그인했는지 안했는지 체크 session.setAttribute("idKey",mem_id);
String mem_id=(String)session.getAttribute("idKey");
System.out.println("LoginSuccess.jsp의 mem_id ->"+mem_id);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>인증성공 페이지</title>
</head>
<body>
<%
	if(mem_id!=null){
%>
<b><%=mem_id%></b>님 환영합니다.<p>
당신은 제한된 기능을 사용할 수 있습니다.<p>
<a href="Logout.jsp">로그아웃</a>
<%}else { %>
<script>
 alert("먼저 로그인해주세요.");
</script>
<%} %>
</body>
</html>

 

# Logout.jsp (로그아웃)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	session.invalidate();
%>
<script>
	alert("정상적으로 로그아웃 되었습니다.");
	location.href="Login.jsp"
</script>

 

# MemberDTO

package hewon;//기능별로 분리=>패키지역할(회원,설문조사,고객,,,)

/*
 * 웹상에서 입력받은 데이터를 테이블의 필드에 1:1 대응에 맞게
 * 저장할 수 있도록 설계된  클래스(=데이터 저장빈) DTO=>VO(스프링)
 */
public class MemberDTO {

	//입력받은 갯수만큼 멤버변수를 선언
	//input type="text" name="mem_id"
	private String mem_id;//회원id
	private String mem_passwd;//암호
	private String mem_name;//이름
	private String mem_email;//이메일
	private String mem_phone;//전번
	private String mem_zipcode;//우편번호
	private String mem_address;//주소지
	private String mem_job;//직업
	
	public String getMem_id() {
		return mem_id;
	}
	public void setMem_id(String mem_id) {
		this.mem_id = mem_id;
	}
	public String getMem_passwd() {
		return mem_passwd;
	}
	public void setMem_passwd(String mem_passwd) {
		this.mem_passwd = mem_passwd;
	}
	public String getMem_name() {
		return mem_name;
	}
	public void setMem_name(String mem_name) {
		this.mem_name = mem_name;
	}
	public String getMem_email() {
		return mem_email;
	}
	public void setMem_email(String mem_email) {
		this.mem_email = mem_email;
	}
	public String getMem_phone() {
		return mem_phone;
	}
	public void setMem_phone(String mem_phone) {
		this.mem_phone = mem_phone;
	}
	public String getMem_zipcode() {
		return mem_zipcode;
	}
	public void setMem_zipcode(String mem_zipcode) {
		this.mem_zipcode = mem_zipcode;
	}
	public String getMem_address() {
		return mem_address;
	}
	public void setMem_address(String mem_address) {
		this.mem_address = mem_address;
	}
	public String getMem_job() {
		return mem_job;
	}
	public void setMem_job(String mem_job) {
		this.mem_job = mem_job;
	}
}

 

# MemberDAO

package hewon;

//웹상에서 호출할 메서드를 작성(업무분석)=>DB연결된 후 호출(has a)
import java.sql.*;//DB연결
import java.util.*;//Vector,ArrayList,,,

public class MemberDAO {

	//1.멤버변수에 연결할 클래스의 객체를 선언
	private DBConnectionMgr pool=null;
	//getConnection()->Connection필요,freeConnection() 해제
	
	//1-1) 공통으로 접속할 경우(필요로하는 멤버변수)
	private Connection con=null;
	private PreparedStatement pstmt=null;//sql실행목적
	private ResultSet rs=null;//select
	private String sql="";//실행시킬 SQL구문 저장 목적
	
	//2.생성자를 통해서 자동으로 객체를 얻어올 수 있도록 연결
	public MemberDAO() {
		try {
			pool=DBConnectionMgr.getInstance();
			System.out.println("pool=>"+pool);
		}catch(Exception e) {
			System.out.println("DB연결실패=>"+e);//e.toString()
		}
	}
   //3.요구분석에 따른 웹상에서 호출할 메서드를 작성=>flow-chart
	//1)회원로그인->id,passwd
	public boolean loginCheck(String id,String passwd) {
		//1.DB연결
		boolean check = false;
		//2.sql구문
		try {
			con=pool.getConnection();
			System.out.println("con->"+con);
			sql="select id,passwd from member where id=? and passwd=?";
			pstmt=con.prepareStatement(sql);
			pstmt.setString(1,id);
			pstmt.setString(2,passwd);
			rs=pstmt.executeQuery();
			check=rs.next();
		} catch(Exception e) {
			System.out.println("login check-> 실행에러유발"+e);
		}finally {//3.메모리 해제
			pool.freeConnection(con,pstmt,rs);
		}
		return check;
	}
	
	//2)중복id를 체크
	//3)우편번호 검색->직접 테이블을 생성->입력->찾기, OpenAPI
	//4)회원가입
	
	//5)회원수정->특정회원찾기
	//6)찾은회원 수정
	//7)회원탈퇴
	
	//8)회원리스트->게시판의 글목록보기=>관리자
	
	
}

 

# Register.jsp (회원가입 페이지)

<%@ page contentType="text/html;charset=UTF-8"%>
<html>
<head>
<title>회원가입</title>
<link href="style.css" rel="stylesheet" type="text/css">
<script language="JavaScript" src="script.js"></script>
</head>
<body bgcolor="#996600" onLoad="regForm.mem_id.focus()">
<br><br>
<table align="center" border="0" cellspacing="0" cellpadding="5" >
  <tr> 
    <td align="center" valign="middle" bgcolor="#FFFFCC"> 
      <table border="1" cellspacing="0" cellpadding="2"  align="center">
        <form name="regForm" method="post" action="RegisterProc.jsp">
          <tr align="center" bgcolor="#996600"> 
            <td colspan="3"><font color="#FFFFFF"><b>회원 가입</b></font></td>
          </tr>
          <tr> 
            <td width="16%">아이디</td>
            <td width="57%"> <input type="text" name="mem_id" size="15">
		      <input type="button" value="ID중복확인" 
       onClick="idCheck(this.form.mem_id.value)"></td>
            <td width="27%">아이디를 적어 주세요.</td>
          </tr>
          <tr> 
            <td>패스워드</td>
            <td> <input type="password" name="mem_passwd" size="15"> </td>
            <td>패스워드를 적어주세요.</td>
          </tr>
          <tr> 
            <td>패스워드 확인</td>
            <td> <input type="password" name="mem_repasswd" size="15"> </td>
            <td>패스워드를 확인합니다.</td>
          </tr>
          <tr> 
            <td>이름</td>
            <td> <input type="text" name="mem_name" size="15"> </td>
            <td>고객실명을 적어주세요.</td>
          </tr>
          <tr> 
            <td>이메일</td>
            <td> <input type="text" name="mem_email" size="27"> </td>
            <td>이메일을 적어주세요.</td>
          </tr>
          <tr>  
            <td>전화번호</td>
            <td> <input type="text" name="mem_phone" size="20"> </td>
            <td>연락처를 적어 주세요.</td>
          </tr>
		  <tr>  
            <td>우편번호</td>
            <td> <input type="text" name="mem_zipcode" size="7">
                 <input type="button" value="우편번호찾기" onClick="zipCheck()"></td>
            <td>우편번호를 검색 하세요.</td>
          </tr>
		  <tr>  
            <td>주소</td>
            <td><input type="text" name="mem_address" size="70"></td>
            <td>주소를 적어 주세요.</td>
          </tr>
		  <tr>  
            <td>직업</td>
            <td><select name=mem_job>
 					<option value="0">선택하세요.
 					<option value="회사원">회사원
 					<option value="연구전문직">연구전문직
 					<option value="교수학생">교수학생
 					<option value="일반자영업">일반자영업
 					<option value="공무원">공무원
 					<option value="의료인">의료인
 					<option value="법조인">법조인
 					<option value="종교,언론,에술인">종교.언론/예술인
 					<option value="농,축,수산,광업인">농/축/수산/광업인
 					<option value="주부">주부
 					<option value="무직">무직
 					<option value="기타">기타
				  </select></td>
            <td>직업을 선택 하세요.</td>
          </tr>
          <tr> 
            <td colspan="3" align="center"> 
             <input type="button" value="회원가입"   onclick="inputCheck()"> 
              &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
             <input type="reset" value="다시쓰기"> 
            </td>
          </tr>
        </form>
      </table>
    </td>
  </tr>
</table>
</body>
</html>

'국비학원 > 공부' 카테고리의 다른 글

30일차 jsp(5) 모델1 - 회원가입 (로그인)  (0) 2023.07.03
29일차 jap(4) 메인페이지 + 자바빈즈 + 쿠키  (0) 2023.07.03
28일차 jsp(3)  (0) 2023.07.03
27일차 jsp(2)  (0) 2023.07.03
26일차 jsp(1)  (0) 2023.07.03