[jsp] 로그인 DTO, DAO 객체 생성

seulki·2022년 10월 20일
0

jsp

목록 보기
38/51
post-custom-banner

🎈 login_view.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="login_db.jsp" method="post" name="frm">
	
		<p>
			<label>아이디 <input type="text" name="userid"> </label>
		</p>
		
		<p>
			<label>비밀번호  <input type="password" name="userpw">  </label>
		</p>
		<input type="button" value="로그인" onclick="sendit();">
	</form>
</body>
<script src="login.js">
	//validation check,
	//아이디 유무
	//비밀번호유무
	//submit();

</script>

</html>
  • 로그인 버튼 클릭시 sendit() 호출
  • login.js에서 validation check
  • 유효성 검사 완료 후, login_db.jsp로 데이터 이동


🎈login.js

 function sendit(){
	
 let frm = document.frm;
 let userid = frm.userid;
 let userpw = frm.userpw;

 if(!userid.value){
	alert("아이디를 입력하세요");
	userid.focus();
	return false;
}

if(!userpw.value){
	alert("비밀번호를 입력하세요");
	userpw.focus();
	return false;
}

frm.submit();
}


🎈 login_db.jsp 로 이동한 데이터로 DB 커넥션 하기위해 UserDAO login()메서드 생성

package com.koit.web.dao;

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

import com.koit.web.beans.UserBean;

public class UserDAO {

	Connection conn;
	PreparedStatement pstm;
	ResultSet rs;
	
	public boolean join(UserBean user) {
		boolean result = false;
		String sql = "INSERT INTO TBL_USER values(?, ?, ?, ?, ?)";
		int count = 0;
		
		try {
			conn = DBConnection.getConnection();
			pstm = conn.prepareStatement(sql);
			
			pstm.setString(1, user.getUserid());
			pstm.setString(2, user.getUserpw());
			pstm.setString(3, user.getUsername());
			pstm.setString(4, user.getUsergender());
			pstm.setString(5, user.getUserphone());
			
			//데이터 조작어가 실행된 건수 int로 반환
			count = pstm.executeUpdate();
			
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		if(count != 0) {
			System.out.println("회원가입 성공");
			result = true;
		}else {
			System.out.println("회원가입 실패");
			result = false;
		}
		return result;
	}	

	public boolean login(String userid, String userpw) {
		boolean result = false;
		String sql = "SELECT * FROM TBL_USER tu WHERE USERID = ? AND USERPW =?";

		
		try {
			conn = DBConnection.getConnection();
			pstm = conn.prepareStatement(sql);
			pstm.setString(1, userid);
			pstm.setString(2, userpw);
			rs = pstm.executeQuery();
			
			if(rs.next()) {
				result = true;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return result;
	}
  • 사용자가 입력한 userid와 userpw를 파라미터로 받아서
    DB에 같은 아이디와 비밀번호를 가진 레코드가 있는지 확인
  • 만약 rs.next() 가 트루라면 레코드가 있다는 것이기 때문에
    조건이 일치하는 회원이 있다는 것이다.


🎈 login_db.jsp - 컨트롤러가 jsp 이므로 MVC1 모델

<%@page import="com.koit.web.dao.UserDAO"%>
<%@page import="com.koit.web.dao.UserDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<!-- 로그인 기능 -->
<!-- 성공 시 -> 메인 -->
<!-- 실패 -> 로그인 -->
<!-- 정보파라미터를 받아와서 DB, DAO -->

<%
	String userid = request.getParameter("userid");
	String userpw = request.getParameter("userpw");
	
	UserDAO udao = new UserDAO();
	boolean result = udao.login(userid, userpw);
	
	if(result){
%>
	<script type="text/javascript">
		alert("로그인 완료");
		location.href = "main_view.jsp"
	</script>
	<%
	}else{
	%>
	<script type="text/javascript">
		alert("로그인 실패");
		history.go(-1);
	</script>
	<%
	}
	%>

</body>
</html>
  • 사용자가 입력한 id, pw 를 파라미터로 받고 UserDAO login()에 파라미터로 사용
  • 만약 결과가 true라면 로그인 완료 -> 메인페이지로 이동
  • 결과가 false라면 다시 로그인 페이지로 이동
  • history.go(-1); -> 바로 전 페이지로 이동

profile
웹 개발자 공부 중
post-custom-banner

0개의 댓글