[JSP] OJDBC, 자바빈즈

보람·2023년 3월 26일
0

JSP

목록 보기
10/17

1. OJDBC

(1) ojdbc

  • ojdbc : Oracle jdbc
    • 오라클에서 제공하는, 오라클 DB를 관리할 수 있도록 도와주는 JDBC

(2) ojdbc 주요 메서드

1) getConnection(url, user, password)

  • db랑 연결 맺는 메서드
	Connection conn = null;
			
	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);

2) preparedstatement();

  • 쿼리문 실행 메서드
	String sql = "select color from car where carnum=?";
	// 쿼리문 날리기
	PreparedStatement pstm = conn.prepareStatement(sql);
    // 답 받기
    pstm.setString(인덱스, 값);
    pstm.setInt(인덱스, 값);
    

3) executeUpdate()

  • select 구문을 제외 insert / delete / update 관련 구문에서는 반영된
    레코드의 건수를 반환한다.
	int check = pstm.executeUpdate();

4) executeQuery()

  • select구문을 수행할 때 사용, ResultSet을 반환
	ResultSet rs = pstm.executeQuery();

2) Resultset

  • select 쿼리 실행 시 executeQuery() 메서드를 사용하여, 실행 결과로 java.sql.ResultSet 형으로 리턴
  • ResultSet 메서드
    • next() : resultset내에서 커서를 하나씩 옮김
      • rs.next(); 데이터가 있는지 없는 지 한줄씩 찾아줌
    • getInt(int columnIndex) : columnIndex 번째 컬럼의 값을 가지고 온다
    • getString(String columnName) : columnName값을 가지고 온다
		while( rs.next() ){ .... }
		rs.getInt(1);
		rs.getString("BRAND")

2. 자바빈즈

  • JSP의 표준 액션 태그를 통해 접근할 수 있는 자바 클래스로서 멤버변수(필드)와 setter, getter 메소드로 이루어짐

💡 예시

public class MemberBean {
	// 멤버변수 (필드)
	private String name;
	private int age;
    
	// 메서드 (getter, setter)
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

🔑 자바빈즈 태그

1) 객체 생성

  • java
	MemberBean member = new MemberBean();
  • jsp
	<jsp:userBean class="패키지명.MemberBean" id="member">

2) setter()

  • java
	member.setName("자바학생");
  • jsp
	<jsp:setProperty name="member" property="name" value="자바학생">

3) getter()

  • java
	member.getName();
  • jsp
	<jsp:getProperty name="member" property="name" />

💡 예시

① 폼 만들기 => .jsp

<body>
	<form action="age_db.jsp">
		<label>이름
			<input type="text" name="name" /><br>
		</label>
			<input type="submit" value="검색" />
	</form>
	<input type="button" value="전체확인하기" onclick="selectAll();" />
	
	<script>
		function selectAll(){
			location.href = "age_all.jsp";
		}
	</script>
</body>

② db select 메서드 만들기 => .java

📌 이름 검색하며 나이 나오는 메서드

public class MemberDao {

	Connection conn;
	PreparedStatement pstm;
	ResultSet rs;
	
	public int getAge(String name) {
		String sql = "SELECT age FROM MEMBER WHERE name = ?";
		int age = 0;
		
		try {
			
			Connection conn = DBConnection.getConnection();
			PreparedStatement pstm = conn.prepareStatement(sql);
			pstm.setString(1, name);
			ResultSet rs = pstm.executeQuery();
			
			if(rs.next()) {
				age = rs.getInt(1);
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return age;
	}
    
📌 ArrayList를 이용해 자바빈즈 객체 담기

public ArrayList<MemberBean> selectAll(){
		
		String sql = "SELECT * FROM MEMBER";
		ArrayList<MemberBean> result = new ArrayList();
		
		try {
			
			Connection conn = DBConnection.getConnection();
			PreparedStatement pstm = conn.prepareStatement(sql);
			ResultSet rs = pstm.executeQuery();
			
			while(rs.next()) {
            	// rs 레코드당 하나의 MemberBean 생성
				MemberBean member = new MemberBean();
                // 결과를 Bean에 저장
				member.setName(rs.getString(1));
				member.setAge(rs.getInt(2));
                // Bean을 ArrayList에 add
				result.add(member);
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return result;
	}
}

③ form action="age_db.jsp"

-> 나이에 대한 정보 요청

<body>
<% 	
	//search의 검색어 넘겨 받기
	String name = request.getParameter("name");
    // MemberDao 클래스 가져오기
	MemberDao mdao = new MemberDao();
	// mdao의 getAge메서드에 search의 검색어 입력
	int age = mdao.getAge(name);
%>

<% if(age != 0){ %>
	이름 : <%= name %><br>
	나이 : <%= age %><br>
<% } else { %>
	찾는 이름이 없습니다.
<% } %>

<input type="button" value="다시 검색하기" onclick="location.href='age_search.jsp'">
</body>

④ location.href = "age_all.jsp"

<body>
	<jsp:useBean id="mdao" class="com.codingbox.dao.MemberDao" />
	<% ArrayList<MemberBean> result = mdao.selectAll(); %>
	<!-- result 객체 하나에 name, age 담겨있고 이 객체가 arrayList로 -->
	<table border="1">
		<tr>
			<th>이름</th>
			<th>나이</th>
		</tr>
		<tr>
		<% for(MemberBean member : result) {%>
        <!-- for문은 result가 끝날 때까지 돌릴 거고 Member bean에하나하나를 담을 거야 -->
		<!-- 사이즈는 알필요 없고 끝날 떄까지 -->
			<th><%=member.getName() %></th>
			<th><%=member.getAge() %></th>
		</tr>
		<%} %>
	</table>	
	<input type="button" value="다시 검색하기" onclick="location.href='age_search.jsp'">
</body>

👍 결과

profile
안녕하세요, 한보람입니다.

0개의 댓글