[jsp] 오라클 DB 데이터 select하기 / DBConnection, DAO 객체 생성

seulki·2022년 10월 19일
0

jsp

목록 보기
35/51
post-custom-banner

🎈age_search.jsp

<%@ 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>

  • 이름을 입력 후 제출 버튼을 누르면, controller인 age_db.jsp 호출
  • 전체 확인하기 버튼을 누르면, selectAll()에서 age_all.jsp로 이동
  • 각각 DB connection을 맺어야 하는데, 각각의 파일에서 DB 코드를 입력하지 않고 DB Connection을 위한 java 파일을 따로 만들어 객체를 생성하여 여러 곳에서 사용한다.
  • DB Connection을 직접적으로 하는 객체는 DAO이므로 DAO 패키지, 클래스 생성하기!


🎈 DBConnection 패키지, 클래스 생성

  • DB Connection 객체를 만들어서 다른 곳에서도 객체를 사용하여 DB연결!
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 객체를 리턴받는다.


🎈 MemberDAO.java

  • 직접 DB와 연결을 하고 Query문을 날리는 객체DAO이므로 생성한 DB 커넥션 객체를 이용하여 결과를 받아 올 DAO를 만들어 준다.
  • MemberDAO멤버테이블에 접근하는 DAO
  • 만약 게시판 DB에 접근해야 한다면 BoardDAO
  • 유저에 관한 DB에 접근해야 한다면 UserDAO 에서 로직을 처리한다.
  • DAODB 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 파일에서는 최소한의 리턴값만 받아서 출력!


🎈 age_db.jsp -> controller

  • 사용자가 제출버튼을 누르고 form태그 action 속성으로 age_db.jsp 로 이동하게 된다.
  • 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에서는 리턴값만 받아서 최소한의 코드로 출력한다.




🎈 멤버 테이블

profile
웹 개발자 공부 중
post-custom-banner

0개의 댓글