2 분 소요

Java Beans(자바 빈즈) 활용하여 로그인 로직 만들기(2)


지난 시간에 이어 이번 시간에는 DB와 연동하여 자바빈즈를 활용한 로그인 로직을 만들어보자.

먼저 로그인 로직에서 사용될 DTO, DAO 객체를 만든다.

jsp10_1

MemberDTO.java

package com.koreait.member;

import java.util.Arrays;

public class MemberDTO {
	private int idx;
	private String userid;
	private String userpw;
	private String username;

	public int getIdx() {
		return idx;
	}

	public void setIdx(int idx) {
		this.idx = idx;
	}

	public String getUserid() {
		return userid;
	}

	public void setUserid(String userid) {
		this.userid = userid;
	}

	public String getUserpw() {
		return userpw;
	}

	public void setUserpw(String userpw) {
		this.userpw = userpw;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

}


MemberDAO.java

package com.koreait.member;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
import com.koreait.db.Dbconn;

public class MemberDAO {

	Connection conn = null;
	PreparedStatement pstmt = null;
	ResultSet rs;
	String sql = "";

	public MemberDTO login(MemberDTO member) throws SQLException {
		try {
			conn = Dbconn.getConnection();

			sql = "select mem_idx, mem_name from tb_member where mem_userid=? and mem_userpw=?";
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, member.getUserid());
			pstmt.setString(2, member.getUserpw());
			rs = pstmt.executeQuery();
			if (rs.next()) {
				member.setIdx(rs.getInt("mem_idx"));
				member.setUsername(rs.getString("mem_name"));
				return member;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

}

DAO에서는 login 메소드를 만들어 SQL문을 수행하고 수행 결과가 있다면 결과의 mem_idx, mem_name를 MemberDTO 객체에 넣어주게되고 나중에 jsp 페이지에서 호출하면 MemberDTO 객체에 저장된 데이터를 사용할 수 있다.

login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String userid = null;
	String name = null;
	if(session.getAttribute("userid") != null){
		userid = (String)session.getAttribute("userid");
 		name = (String)session.getAttribute("name");
	}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인</title>
</head>
<body>
	<h2>로그인</h2>
<%
	if(userid == null){
%>
	<form method="post" action="login_ok.jsp">
		<p>아이디 : <input type="text" name="userid"></p>
		<p>비밀번호 : <input type="password" name="userpw"></p>
		<p><input type="submit" value="로그인"></p>
		<p>회원이 아니신가요? <a href='./regist.jsp'>회원가입</a></p>
	</form>
<%
	}else{
%>
	<h3><%=userid%>(<%=name%>)님 환영합니다.</h3>
	<p>
		<input type="button" value="커뮤니티" onclick="location.href='./board/list.jsp'">
		<input type="button" value="정보수정" onclick="location.href='info.jsp'">
		<input type="button" value="로그아웃" onclick="location.href='logout.jsp'">
	</p>
<%
	}
%>
</body>
</html>

먼저 login.jsp 페이지를 살펴보면 페이지에 처음 진입하면 세션 유무를 확인하는데, 만약 세션이 없으면 폼태그가 포함된 html 화면을 보여주게되고 폼태그를 활용하여 post 방식으로 데이터를 login_ok.jsp로 보내주게된다.

세션이 있을 경우 세션에는 로그인한 유저의 아이디와 이름을 갖고 있어 else{}구문을 보여준다.


login_ok.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    
<jsp:useBean class="com.koreait.member.MemberDTO" id="member"/>
<jsp:setProperty property="userid" name="member"/>
<jsp:setProperty property="userpw" name="member"/>

<jsp:useBean class="com.koreait.member.MemberDAO" id="memberDAO"/>
<%
	if((member = memberDAO.login(member)) != null){
		session.setAttribute("userid", member.getUserid());
		session.setAttribute("name", member.getUsername());
		session.setAttribute("idx", member.getIdx());
%>
	<script>
		alert('로그인되었습니다.');
		location.href="login.jsp";
	</script>
<%
	}else{ // 로그인 실패
%>	
	<script>
		alert('아이디 또는 비밀번호를 확인하세요');
		history.back();	
	</script>
<%
	}
%>	

login_ok.jsp에서는 먼저 com.koreait.member 패키지에 MemberDTO와 MemberDAO class를 생성하여 객체화 시켜주고 login.jsp에서 받은 데이터를 MemberDTO로 보내주게된다.

memberDAO객체 내 login() 메소드를 호출하여 리턴값이 null이면 로그인이 실패되어 alert 경고와 이전페이지로 돌아가게되고 리턴값이 null이 아니라면 MemberDTO에서 userid, username, useridx를 받아 세션으로 생성해준다.


logout.jsp

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

로그아웃 페이지는 간단하게 세션을 지우는것으로 처리하였다.


결과 확인

로그인 페이지
jsp10_2

로그인 성공 페이지
jsp10_3

태그:

카테고리:

업데이트: