-
Java Beans 활용하여 로그인 만들기(2)프로그래밍/JSP 2022. 11. 29. 22:48728x90
지난 시간에 이어 이번 시간에는 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