ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java Beans 활용하여 로그인 만들기(2)
    프로그래밍/JSP 2022. 11. 29. 22:48
    728x90

     

     

    지난 시간에 이어 이번 시간에는 DB와 연동하여 Java Beans 를 활용한 로그인 로직을 만들어 볼 것이다.

     

     

    먼저 로그인 로직에서 사용될 DTO, DAO 객체와 Dbconn.java 파일을 생성하여 작성한다.

     

     

    기존에는 DB와 커넥션을 맺기 위해서 JSP 파일 내 자바코드를 입력하여 커넥션을 맺었지만 지금은 따로 Dbconn 파일을 생성하여 코드의 중복을 줄이고 싱글톤 패턴을 사용하여 동시에 커넥션 맺는 것을 방지한다.

     

     

    Dbconn.java 

    package com.koreait.db;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    
    public class Dbconn {
    	public static Connection getConnection() {
    		Connection conn = null;
    		
    		try {
    			String url = "jdbc:mysql://localhost:3306/aiclass";
    			String uid = "root";
    			String upw = "1234";
    			Class.forName("com.mysql.cj.jdbc.Driver");
    			conn = DriverManager.getConnection(url, uid, upw);
    		}catch(Exception e) {
    			e.printStackTrace();
    		}
    		return conn;
    	}
    }

     

     

    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 tb_idx, tb_name from tb_user where tb_userid=? and tb_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("tb_idx"));
    				member.setUsername(rs.getString("tb_name"));
    				return member;
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return null;
    	}
    
    }

     

    DAO는 직접적으로 쿼리를 통해 조회, 삽입, 갱신, 삭제 처리를 하고 결과를 DTO 객체에 저장할 수 있다.

     

     

     


     

     

    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_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>
    <%
    	}
    %>	

    memberDAO 안에 login() 메소드를 호출하여 메소드 리턴값이 null일 경우 로그인이 실패, 리턴값이 null이 아닐 경우 MemberDTO에서 userid, username, idx를 받아 세션으로 생성한다.

     

     

     

     

     

    logout.jsp

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

     

     

     

     

     

    로그인 페이지

     

     

    로그인 성공 화면

     

     

    728x90

    '프로그래밍 > JSP' 카테고리의 다른 글

    JSP 게시판 만들기(2)  (0) 2022.12.02
    JSP 게시판 만들기(1)  (0) 2022.11.30
    Java Beans 활용하여 로그인 만들기(1)  (0) 2022.11.27
    JSP 회원가입 만들기  (0) 2022.11.26
    JSP 로그인 만들기  (0) 2022.11.25

    댓글

Designed by Tistory.