<%@ 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="age_db.jsp"> <label>이름 <input type="text" name="name"> </label><br> <input type="submit"> </form> <input type="button" value="전체 확인하기" onclick="selectAll();"> </body> <script> function selectAll() { location.href = "age_all.jsp"; } </script> </html>
package com.koit.web.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.DriverManager; public class DBConnection { static Connection getConnection() { Connection conn = null; //DB 연결 try { String driver = "oracle.jdbc.driver.OracleDriver"; String url = "jdbc:oracle:thin:@localhost:1521:xe"; String user = "jsp"; String password = "jsp"; Class.forName(driver); conn = DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException e) { e.printStackTrace(); System.out.println("드라이버를 찾지 못했습니다."); } catch (SQLException e) { e.printStackTrace(); System.out.println("DB 접속 오류"); } catch (Exception e) { e.printStackTrace(); System.out.println("알 수 없는 오류"); } return conn; }
- Connection 객체를 리턴받는다.
직접 DB와 연결
을 하고 Query문을 날리는 객체
는 DAO
이므로 생성한 DB 커넥션 객체를 이용하여 결과를 받아 올 DAO를 만들어 준다.MemberDAO
는 멤버테이블에 접근
하는 DAO게시판 DB에 접근
해야 한다면 BoardDAO
유저에 관한 DB에 접근
해야 한다면 UserDAO
에서 로직을 처리한다.DAO
는 DB Connection을 획득
해서 Query문을 처리
하는 부분으로, 프로젝트의 기능마다
1개씩 있어야 한다.package com.koit.web.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class MemberDAO { //DB 접근 Connection conn; PreparedStatement pstm; ResultSet rs ; public int getAge(String name) { int age = 0; String sql = "SELECT AGE FROM MEMBER WHERE NAME = ?"; try { conn = DBConnection.getConnection(); pstm = conn.prepareStatement(sql); pstm.setString(1, name); rs = pstm.executeQuery(); if(rs.next()) { age = rs.getInt(1); } } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return age; } }
- jsp 파일에서는 최소한의 리턴값만 받아서 출력!
<%@page import="java.sql.ResultSet"%> <%@ 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> <% String name = request.getParameter("name"); %> <jsp:useBean id="mdao" class="com.koit.web.dao.MemberDAO"/> <%int age = mdao.getAge(name); %> 이름 : <%=name %></br> 나이 : <%=age %></br> <input type="button" value="다시 검색하기" onclick="location.href='age_search.jsp'"> </body> </html>
- 파라미터로 사용자가 입력한 name을 받는다.
- MemberDAO의 객체를 생성한다.
- MemberDAO에서는 DB Connection 객체를 받아서, DB 쿼리문의 결과를 리턴받는다.
- jsp에서는 리턴값만 받아서 최소한의 코드로 출력한다.