[목차]
01. DTO_DAO 로그인 처리
💡
1️⃣ 아이디와 비번을 받는다.
2️⃣ Udao 클래스를 생성하고 select쿼리 메서드를 선언한다.
3️⃣ 메서드 처리 과정으로 JDBC 프로그램 7단계를 넣는다.
4️⃣ 조건문을 활용해서 아이디 불일치, 비번 불일치, 로그인 성공 조건을 만들고 리턴을 해준다.
5️⃣ 세션 메서드를 선언하고, 내부 처리 과정에 DTO 처리로 값들을 셋팅 해준다.
6️⃣ JSP에서 Udao 객체 생성 후 메서드를 호출한다.
7️⃣ 리턴값이 로그인 성공이면 세션 메서드 호출한다.
8️⃣ 세션 메서드 호출한 곳으로 DTO 객체 주소값을 리턴해서 셋팅된 값을 세션 처리 시 겟팅하여 메인화면으로 리다이렉트 한다.
[코드예제] Udao.java
package kr.or.dao; import kr.or.driverdb.DriverDB; import kr.or.dto.User; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class Udao { // 전역에 각각 데이터타입의 객체참조변수를 선언 User u = null; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; // 9, 세션 등록 메서드 public User mGetForSession(String uid) throws SQLException, ClassNotFoundException { System.out.println("mGetForSession 메서드 Udao.java"); // 1-2단계 드라이버 실행, DB연결 DriverDB db = new DriverDB(); conn = db.driverDbcon(); System.out.println(conn + "<- conn Udao.java"); // 3단계 쿼리 실행 준비 (세션 처리 시 필용한 정보만) pstmt = conn.prepareStatement("SELECT u_id, u_level, u_name FROM tb_user where u_id=?"); pstmt.setString(1, uid); // 4단계 쿼리 실행 rs = pstmt.executeQuery(); // 5단계 쿼리 실행 결과 사용 if(rs.next()) { u = new User(); u.setU_id(rs.getString("u_id")); u.setU_level(rs.getString("u_level")); u.setU_name(rs.getString("u_name")); } // 6단계 쿼리 종료 pstmt.close(); rs.close();; // 7단계 DB연결 종료 conn.close(); return u; } // 8. 로그인 처리 메서드 public String uLoginCheck(String uid, String upw) throws SQLException, ClassNotFoundException { System.out.println("uLoginCheck Udao.java"); String re = null; // 1-2단계 드라이버 실행, DB연결 DriverDB db = new DriverDB(); conn = db.driverDbcon(); System.out.println(conn + "<- conn Udao.java"); // 3단계 쿼리 실행 준비 (로그인 시 필용한 정보만) pstmt = conn.prepareStatement("SELECT u_pw FROM tb_user where u_id=?"); pstmt.setString(1, uid); // 4단계 쿼리 실행 rs = pstmt.executeQuery(); // 5단계 쿼리 실행 결과 사용 if(rs.next()) { System.out.println("아이디 일치 mLoginCheck Udao.java"); if(upw.equals(rs.getString("u_pw"))) { System.out.println("로그인 성공 mLoginCheck Udao.java"); re = "로그인성공"; } else { System.out.println("비밀번호 불일치 mLoginCheck Udao.java"); re = "비밀번호 불일치"; } } else { System.out.println("아이디 불일치 mLoginCheck Udao.java"); re = "아이디 불일치"; } // 6단계 쿼리 종료 pstmt.close(); rs.close();; // 7단계 DB연결 종료 conn.close(); return re; } }
[코드예제] login_action.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <%@ page import="java.sql.DriverManager"%> <%@ page import = "java.sql.Connection" %> <%@ page import = "java.sql.PreparedStatement" %> <%@ page import = "java.sql.ResultSet" %> <%@ page import = "java.sql.SQLException" %> <%@ page import="kr.or.dao.Udao" %> <%@ page import="kr.or.dto.User" %> <% // form에서 로그인 입력자료를 post 방식으로 가져온다. request.setCharacterEncoding("euc-kr"); // post방식 한글처리 String id = request.getParameter("id"); String pw = request.getParameter("pw"); System.out.println(id + "<-- id"); System.out.println(pw + "<-- pw"); // alert창에 사용 String messeage = null; // 객체 생성 후 메서드 호출 Udao udao = new Udao(); String re = udao.uLoginCheck(id, pw); System.out.println(re + "<- re login_action.jsp"); // 조건문 활용해서 3가지 조건 판단 if(re.equals("로그인성공")) { System.out.println("로그인 성공 조건문 login_action.jsp"); // 세션 처리 User u = udao.mGetForSession(id); session.setAttribute("S_ID", u.getU_id()); session.setAttribute("S_LEVEL", u.getU_level()); session.setAttribute("S_NAME", u.getU_name()); messeage = "로그인 성공"; } else if (re.equals("비밀번호 불일치")) { System.out.println("비밀번호 불일치 조건문 login_action.jsp"); messeage = "비밀번호 불일치"; } else if (re.equals("아이디 불일치")) { System.out.println("아이디 불일치 조건문 login_action.jsp"); messeage = "아이디 불일치"; } %> // 자바스크립트를 활용해서 3가지 조건 시 alert 창 문구 활성화 <script> alert('<%= messeage %>'); location.href='<%= request.getContextPath() %>/index.jsp'; </script>
02. DAO 전체 처리과정(회원가입 ~ 로그인처리)
[코드예제] Udao.java 전체코드
package kr.or.dao; import kr.or.driverdb.DriverDB; import kr.or.dto.User; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; public class Udao { // 전역에 각각 데이터타입의 객체참조변수를 선언 User u = null; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; ArrayList<User> alu = null; // 9, 세션 등록 메서드 public User mGetForSession(String uid) throws SQLException, ClassNotFoundException { System.out.println("mGetForSession 메서드 Udao.java"); // 1-2단계 드라이버 실행, DB연결 DriverDB db = new DriverDB(); conn = db.driverDbcon(); System.out.println(conn + "<- conn Udao.java"); // 3단계 쿼리 실행 준비 pstmt = conn.prepareStatement("SELECT u_id, u_level, u_name FROM tb_user where u_id=?"); pstmt.setString(1, uid); // 4단계 쿼리 실행 rs = pstmt.executeQuery(); // 5단계 쿼리 실행 결과 사용 if(rs.next()) { u = new User(); u.setU_id(rs.getString("u_id")); u.setU_level(rs.getString("u_level")); u.setU_name(rs.getString("u_name")); } // 6단계 쿼리 종료 pstmt.close(); rs.close();; // 7단계 DB연결 종료 conn.close(); return u; } // 8. 로그인 처리 메서드 public String uLoginCheck(String uid, String upw) throws SQLException, ClassNotFoundException { System.out.println("uLoginCheck Udao.java"); String re = null; // 1-2단계 드라이버 실행, DB연결 DriverDB db = new DriverDB(); conn = db.driverDbcon(); System.out.println(conn + "<- conn Udao.java"); // 3단계 쿼리 실행 준비 pstmt = conn.prepareStatement("SELECT u_pw FROM tb_user where u_id=?"); pstmt.setString(1, uid); // 4단계 쿼리 실행 rs = pstmt.executeQuery(); // 5단계 쿼리 실행 결과 사용 if(rs.next()) { System.out.println("아이디 일치 mLoginCheck Udao.java"); if(upw.equals(rs.getString("u_pw"))) { System.out.println("로그인 성공 mLoginCheck Udao.java"); re = "로그인성공"; } else { System.out.println("비밀번호 불일치 mLoginCheck Udao.java"); re = "비밀번호 불일치"; } } else { System.out.println("아이디 불일치 mLoginCheck Udao.java"); re = "아이디 불일치"; } // 6단계 쿼리 종료 pstmt.close(); rs.close();; // 7단계 DB연결 종료 conn.close(); return re; } // 7. 검색화면 처리 메서드 public ArrayList<User> uSearch(String sk, String sv) throws SQLException, ClassNotFoundException { System.out.println("uSearch 메서드 Udao.java"); alu = new ArrayList<User>(); // 1-2단계 드라이버 실행, DB연결 DriverDB db = new DriverDB(); conn = db.driverDbcon(); System.out.println(conn + "<- conn Udao.java"); // 3단계 쿼리 실행 준비 String selectQuery = "SELECT * from tb_user"; if((sk == null && sv == null) || (sk != null && sv.equals(""))) { pstmt = conn.prepareStatement(selectQuery); } else { pstmt = conn.prepareStatement(selectQuery + " where " + sk + "=?"); pstmt.setString(1, sv); } System.out.println(pstmt + "<- pstmt"); // 4단계 쿼리 실행 rs = pstmt.executeQuery(); // 5단계 쿼리 실행 결과 사용 while(rs.next()) { u = new User(); u.setU_id(rs.getString("u_id")); u.setU_pw(rs.getString("u_pw")); u.setU_level(rs.getString("u_level")); u.setU_name(rs.getString("u_name")); u.setU_email(rs.getString("u_email")); u.setU_phone(rs.getString("u_phone")); u.setU_addr(rs.getString("u_addr")); // ArrayList에 셋팅된 객체 주소를 추가 alu.add(u); } // 6단계 쿼리 종료 pstmt.close(); rs.close();; // 7단계 DB연결 종료 conn.close(); return alu; } // 6. 리스트화면 처리 메서드 public ArrayList<User> uAllSelect() throws SQLException, ClassNotFoundException { System.out.println("uAllSelect 메서드 Udao.java"); alu = new ArrayList<User>(); // 1-2단계 드라이버 실행, DB연결 DriverDB db = new DriverDB(); conn = db.driverDbcon(); System.out.println(conn + "<- conn Udao.java"); // 3단계 쿼리 실행 준비 pstmt = conn.prepareStatement("SELECT * from tb_user"); System.out.println(pstmt + "<- pstmt"); // 4단계 쿼리 실행 rs = pstmt.executeQuery(); // 5단계 쿼리 실행 결과 사용 while(rs.next()) { System.out.println("while 반복문 uAllSelect Udao.java"); u = new User(); // while문 통해서 u에 담긴 객체 주소를 확인 System.out.println(u + "<-- u uAllSelect Udao.java"); u.setU_id(rs.getString("u_id")); u.setU_pw(rs.getString("u_pw")); u.setU_level(rs.getString("u_level")); u.setU_name(rs.getString("u_name")); u.setU_email(rs.getString("u_email")); u.setU_phone(rs.getString("u_phone")); u.setU_addr(rs.getString("u_addr")); // ArrayList에 셋팅된 객체 주소를 추가 alu.add(u); } // 6단계 쿼리 종료 pstmt.close(); rs.close();; // 7단계 DB연결 종료 conn.close(); return alu; } // 5. 수정화면 처리 메서드 public User uSelectUpdate(String uid) throws SQLException, ClassNotFoundException { System.out.println("uSelectUpdate 메서드 Udao.java"); // 1-2단계 드라이버 실행, DB연결 DriverDB db = new DriverDB(); conn = db.driverDbcon(); System.out.println(conn + "<- conn Udao.java"); // 3단계 쿼리 실행 준비 pstmt = conn.prepareStatement("SELECT * from tb_user where u_id=?"); pstmt.setString(1, uid); System.out.println(pstmt + "<- pstmt"); // 4단계 쿼리 실행 rs = pstmt.executeQuery(); // 5단계 쿼리 실행 결과 사용 if(rs.next()) { System.out.println("if조건문 mSelectUpdate Udao.java"); u = new User(); u.setU_id(rs.getString("u_id")); u.setU_pw(rs.getString("u_pw")); u.setU_level(rs.getString("u_level")); u.setU_name(rs.getString("u_name")); u.setU_email(rs.getString("u_email")); u.setU_phone(rs.getString("u_phone")); u.setU_addr(rs.getString("u_addr")); } // 6단계 쿼리 종료 pstmt.close(); rs.close();; // 7단계 DB연결 종료 conn.close(); return u; } // 4. delete 처리 메서드 public void uDelete(String uid) throws SQLException, ClassNotFoundException { System.out.println("uDelete 메서드 Udao.java"); // 1-2단계 드라이버 실행, DB연결 DriverDB db = new DriverDB(); conn = db.driverDbcon(); System.out.println(conn + "<- conn Udao.java"); // 3단계 쿼리 실행 준비 pstmt = conn.prepareStatement("DELETE from tb_user where u_id=?"); pstmt.setString(1, uid); System.out.println(pstmt + "<- pstmt"); // 4단계 쿼리 실행 pstmt.executeUpdate(); // 5단계 쿼리 실행 결과 사용(생략) // 6단계 쿼리 종료 pstmt.close(); // 7단계 DB연결 종료 conn.close(); } // 3. update 처리 메서드 public void uUpdate(User u) throws SQLException, ClassNotFoundException { System.out.println("uUpdate 메서드 Udao.java"); // 1-2단계 드라이버 실행, DB연결 DriverDB db = new DriverDB(); conn = db.driverDbcon(); System.out.println(conn + "<- conn Udao.java"); // 3단계 쿼리 실행 준비 pstmt = conn.prepareStatement("UPDATE tb_user set u_pw=?, u_level=?, u_name=?, u_email=?, u_phone=?, u_addr=? where u_id=?"); pstmt.setString(1, u.getU_pw()); pstmt.setString(2, u.getU_level()); pstmt.setString(3, u.getU_name()); pstmt.setString(4, u.getU_email()); pstmt.setString(5, u.getU_phone()); pstmt.setString(6, u.getU_addr()); pstmt.setString(7, u.getU_id()); System.out.println(pstmt); // 4단계 쿼리 실행 pstmt.executeUpdate(); // 5단계 쿼리 실행 결과 사용(생략) // 6단계 객체 종료 pstmt.close(); // 7단계 DB연결 종료 conn.close(); } // 2. insert 처리 메서드(매개변수 하나) public void uInsert(User u) throws SQLException, ClassNotFoundException { System.out.println("uInsert 메서드 Udao.java"); // 1-2단계 드라이버 실행, DB연결 DriverDB db = new DriverDB(); conn = db.driverDbcon(); System.out.println(conn + "<- conn Udao.java"); // 3단계 쿼리 실행 준비 pstmt = conn.prepareStatement("INSERT INTO tb_user values (?, ?, ?, ?, ?, ?, ?)"); pstmt.setString(1, u.getU_id()); pstmt.setString(2, u.getU_pw()); pstmt.setString(3, u.getU_level()); pstmt.setString(4, u.getU_name()); pstmt.setString(5, u.getU_email()); pstmt.setString(6, u.getU_phone()); pstmt.setString(7, u.getU_addr()); System.out.println(pstmt + "<- pstmt Udao.java"); // 4단계 쿼리 실행 pstmt.executeUpdate(); // 5단계 쿼리 실행 결과 사용(생략) // 6단계 객체 종료 pstmt.close(); // 7단계 DB연결 종료 conn.close(); } // 1. insert 처리 매서드(매개변수 두개) public void uInsert(User u, Connection conn) throws SQLException, ClassNotFoundException { System.out.println("uInsert 메서드 Udao.java"); // 1-2단계 드라이버 실행, DB연결 DriverDB db = new DriverDB(); conn = db.driverDbcon(); System.out.println(conn + "<- conn Udao.java"); // 3단계 쿼리 실행 준비 pstmt = conn.prepareStatement("INSERT INTO tb_user values (?, ?, ?, ?, ?, ?, ?)"); pstmt.setString(1, u.getU_id()); pstmt.setString(2, u.getU_pw()); pstmt.setString(3, u.getU_level()); pstmt.setString(4, u.getU_name()); pstmt.setString(5, u.getU_email()); pstmt.setString(6, u.getU_phone()); pstmt.setString(7, u.getU_addr()); System.out.println(pstmt + "<- pstmt Udao.java"); // 4단계 쿼리 실행 pstmt.executeUpdate(); // 5단계 쿼리 실행 결과 사용(생략) // 6단계 객체 종료 pstmt.close(); // 7단계 DB연결 종료 conn.close(); } }
tag : #jsp #java #로그인 #세션 #select #쿼리 #JDBC #처리과정
Uploaded by N2T