AR삽질러

JSP 개인프로젝트(4) - 회원가입완성, 로그인구현 본문

JAVA/JSP

JSP 개인프로젝트(4) - 회원가입완성, 로그인구현

아랑팡팡 2023. 2. 16. 16:58
728x90

 

https://arang95.tistory.com/34

 

JSP 개인프로젝트(3) - 로그인, 회원가입

https://arang95.tistory.com/31 JSP 개인프로젝트(2) 회원테이블생성 zipcode생 1. 회원테이블스키마 생성 2. 우편번호 스키마생성 회원테이블과 우편번호테이블을 생성한다. (우편번호 테이블의 ri와 bunji는

arang95.tistory.com

지난시간에는 DAO, VO, 메인페이지, 로그인화면, 회원가입화면등 DB연동과 뷰와 관련된 내용을 만들어보았다.

이번 게시물에서는 회원가입시 입력정보가 오라클에 연동되어 제대로 들어가는지 확인하고 회원가입을 완성할차례이고

프로필은 나중에..

 

구현 순서 

메인 페이지 => 회원가입폼 => idCheck => zipCehck => 회원가입 성공 => 로그인페이지 => 로그아웃 => 로그인성공(메인으로 return)

1. db테스트 

만들어둔 member table에 insert가 되는지 확인해보기

db에서 직접입력시 데이터가 잘들어가는 것을 확인할 수 있어 commit후 web에서 회원가입을 구현해보겠다.

2. 회원정보입력

memberInsert DAO

입력데이터는 총 13개로 프로필을 제외한 모든값은 not null로 설정하였다.

public boolean  memberInsert(MemberVO vo) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		boolean flag = false;
		try {
			conn = getConnection();
			String strQuery = "insert into member values(?,?,?,?,?,?,?,?,?,?,?,?,?)";
			pstmt = conn.prepareStatement(strQuery);
			pstmt.setString(1, vo.getId());
			pstmt.setString(2, vo.getPass());
			pstmt.setString(3, vo.getName());
			pstmt.setString(4, vo.getPhone1());
			pstmt.setString(5, vo.getPhone2());
			pstmt.setString(6, vo.getPhone3());
			pstmt.setInt(7, vo.getAge());
			pstmt.setString(8, vo.getGender());
			pstmt.setString(9, vo.getEmail());
			pstmt.setString(10, vo.getZipcode());
			pstmt.setString(11, vo.getAddress1());
			pstmt.setString(12, vo.getAddress2());
			pstmt.setString(13, vo.getProfile());
			int count = pstmt.executeUpdate();
			if(count > 0)flag = true;
		}catch(Exception ex) {
			System.out.println("Exception" + ex);
		}finally {
			if(rs != null)try {rs.close();}catch(SQLException sqle1) {}
			if(pstmt != null)try {pstmt.close();}catch(SQLException sqle2) {}
			if(conn != null)try {conn.close();}catch(SQLException sqle3) {}
		}
		return flag;
	}

 

 

 

3. 회원가입 성공페이지

13개의 정보를 오류없이 입력했다면 정상적으로 DB에 데이터가 들어가고 회원가입이 완료된다.

<title>회원가입 확인</title></head>
<link href="style.css" rel="stylesheet" type="text/css">
<body bgcolor="#FFFFCC">
<br></br>
<center>
<%
if(flag){
	out.println("<b>회원가입을 축하드립니다.</b><br/>");
	out.println("<a href=login.jsp>로그인</a>");
	}else{
		out.println("<b>다시 입력하여 주십시오.</b><br/>");
		out.println("<a href=regForm.jsp>다시 가입</a>");
	}
%>
</center>

입력한 회원정보가 문제없이 들어가면 성공..

 

 

4. 로그인 구현하기

회원가입을 완료했다면 회원가입 성공페이지로 이동후 로그인페이지로 이동할수 있게된다.

가입한 ID, Password를 통해서 로그인기능을 만든다.

로그인 버튼을 클릭하면 회원가입으로 db에 저장된 id, password를 비교해서 같으면 로그인성공, 다르면 실패를 처리해야한다. memberDAO 추가

결과값 1 : 로그인성공

 

로그인처리 DAO

// 로그인처리
	public int loginCheck(String id, String pass) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		int check = -1; // id가 존재하지 않는 경우
		try {
			conn = getConnection();
			String strQuery = "select pass from member where id = ?";
			pstmt = conn.prepareStatement(strQuery);
			pstmt.setString(1, id);
			rs = pstmt.executeQuery();
			if(rs.next()) {
				String dbPass = rs.getString("pass");
				if(pass.equals(dbPass)) check = 1;
				else					check = 0;
			}
		}catch(Exception e) {
			System.out.println("Exception" + e);
		}
			finally {
				if(rs != null)try {rs.close();}catch(SQLException sqle1) {}
				if(pstmt != null)try {pstmt.close();}catch(SQLException sqle2) {}
				if(conn != null)try {conn.close();}catch(SQLException sqle3) {}
		}
		return check;
	}

login.jsp (로그인화면)

<%
		String id = (String)session.getAttribute("id");
	%>
	<nav class="navbar navbar-default">
	 <div class="navbar-header">
	  <button type="button" class="navbar-toggle collapsed"
	  	data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"
	  	aria-expanded="false">
		 	<span class="icon-bar"></span>
		 	<span class="icon-bar"></span>
		 	<span class="icon-bar"></span>
		 </button>
		 <a class="navbar-brand" href="main.jsp">AR 웹페이지</a>
		</div>
		<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
		 <ul class="nav navbar-nav">
		  <li class="active"><a href="main.jsp">메인</a>
		 </ul>
		 <%
		 	if(id == null){
		 %>
		 <ul class="nav navbar-nav navbar-right">
		  <li class="dropdown">
		   <a href="#" class="dropdown-toggle"
		   	data-toggle="dropdown" role="button" aria-haspopup="true"
		   	aria-expanded="false">접속하기<span class="caret"></span>
		   </a>
		   <ul class="dropdown-menu">
		   	<li><a href="login.jsp">로그인</a></li>
		   	<li><a href="regForm.jsp">회원가입</a></li>
		   </ul>
		  </li>
		 </ul>
		 
		 <%
		 	}
		 %>
		</div>
	</nav>
	
	<div class="container">
	 <form method="post" action="loginAction.jsp">
	  <table class="table table-bordered table-hover" style="text-align: center; border: 1px solid #ddddddd">
	   <thead>
	    <tr>
	     <th colspan="2"><h4>로그인</h4></th>
	    </tr>
	   </thead>
	    <tbody>
	     <tr>
	      <td style="width:110px;"><h5>아이디</h5></td>
	      <td><input class="form-control" type="text" id="id" name="id" maxlength="20" placeholder="아이디를 입력하세요."></td>
	     </tr>
	     <tr>
	      <td style="width:110px;"><h5>비밀번호</h5></td>
	      <td><input class="form-control" type="password" id="pass" name="pass" maxlength="20" placeholder="비밀번호를 입력하세요."></td>
	     </tr>
	     <tr>
	      <td style="text-align: left" colspan="2"><input class="btn btn-primary pull-right" type="submit" value="로그인" /></td>
	     </tr>
	    </tbody>
	   </table>
	  </form>
	 </div>

로그인 페이지에서 추가로 아이디가 존재하지 않으면 경고창을 아이디는 존재하지만 비빌번호가 틀리면 경고창을 띄우는 기능을 추가한다.

5. 로그인 성공시 페이지이동

로그인에 성공할 경우 해당 id를 가지고 main.jsp페이지로 이동

<title>로그인처리</title>
</head>
<body>
	<%
		String id = request.getParameter("id");
		String pass = request.getParameter("pass");
		int check = dao.loginCheck(id, pass);
	%>
	<%
	if(check == 1){ // 로그인 성공시
		session.setAttribute("id", id);
		response.sendRedirect("main.jsp");
	}else if(check == 0){ // 아이디존재 비밀번호 오류
	%>
	<script type="text/javascript">
		alert("비밀번호 오류!");
		history.go(-1);
	</script>
	<%}else{ // 아이디 자체가 존재하지 않는 경우
	%>
		<script type="text/javascript">
			alert("아이디가 존재하지 않습니다.");
			history.go(-1);
		</script>
	<%} %>

 

6. 로그아웃 처리

로그인에 성공한 상태로 로그아웃 기능에 들어가면 자동으로 로그아웃되면서 메인페이지로 이동한다.

<title>로그인아웃처리</title>
</head>
<body>
	<%session.invalidate(); %>
	<script type="text/javascript">
		location.href = 'main.jsp';
	</script>

 

 

현재까지 구현한 코드 영상

 

 

다음시간에는 회원정보수정을 구현해보겠다!! 시들시들..

728x90
반응형
LIST