[JSP]자바빈즈를 이용한 데이터베이스 연동

2023. 12. 18. 15:22· 공부/JSP
목차
  1. JSP 스크립트릿으로 데이터베이스 연동
  2. JSP 페이지와 데이터베이스의 직접적인 연동
  3. 자바빈즈(Java Beans) 사용의 장점
  4. ConnectionPool을 사용한 데이터베이스 연결
  5. ConnectionPool이란?
  6. Pooling 기법
  7. Pooling 기법의 DBConnectionMgr
  8. ConnectionPool을 이용한 데이터베이스 연결방법
  9. ConnectionPool을 사용한 데이터베이스 연결 기능 향상
  10. ConnectionPool과 Bean을 이용한 데이터베이스 연결
  11. Vector 클래스
반응형

 

JSP 스크립트릿으로 데이터베이스 연동

JSP 페이지와 데이터베이스의 직접적인 연동

  • JSP 페이지 내에서 직접 데이터베이스 관련 코드가 혼재됨
  • 추후 페이지 변경 등의 작업이 있을 때 불편함

자바빈즈(Java Beans) 사용의 장점

  • 내부적 데이터 처리와 공용화된 기능은 JSP 빈즈로 구현
  • 프로그램 중복을 줄이고 원활한 유지보수 가능
  • 한번 작성된 자바 빈즈를 여러 응용 프로그램에서 재사용 가능

Untitled.png

JDBC 연동

JSP —> 자바빈즈로 빼서 연동

JSP : 화면 출력

자바빈즈 : DB를 처리를 하는 곳

서블릿 : 실제 쿼리문을 실행하는것

ConnectionPool을 사용한 데이터베이스 연결

ConnectionPool이란?

  • 웹 프로그램에서 데이터베이스 연결, 질의 입력, 결과를 받아오는 부분에서 많은 시간 소요됨. →서버에 많은 과부하 줌
  • ConnectionPool 을 사용해서 효율적으로 데이터베이스 연동

서버에 부담을 덜 주기 위해 사용한다.

Pooling 기법

  • 효율적으로 여러 사용자에게 서비스하기 위해 미리 데이터베이스 연결을 위한 객체들을 생성
  • Connection 객체의 재사용
    • 데이터베이스 연결 객체를 매번 생성, 사용, 해제하지 않고 처음 만들어둔 데이터베이스 연결 객체를 계속 사용
  • 사용자에게 필요한 응답을 주는데 걸리는 시간을 단축하고 시스템 부하를 줄임

Pooling 기법의 DBConnectionMgr

Untitled.png

처음부터 미리 커넥션들을 만들어 놓고 필요할 때 마다 불러서 쓴다.

-DBConnectionMgr.java

  • 코드를 알 필요 없고 커넥션풀을 관리해주는 자바 파일임 (오픈 소스임)

ConnectionPool을 이용한 데이터베이스 연결방법

1단계 : 데이터베이스 연결 pool 객체를 얻음 DBConnectionMgr pool = DBConnectionMgr.getInstance();

2단계 : 얻어진 pool로 Connection을 얻음. conn = pool.getConnection();

  • 주어진 Connection을 통해 DB에 필요한 쿼리문 수행
  • Close 할 필요 없음

3단계 : 사용된 Connection 을 반환. 재사용위해 닫지 않고 그냥 반환만 pool.freeConnection(conn);

코드열기
<%@ page contentType="text/html;charset=EUC-KR"  import="java.sql.*, ch16_2.*" %>
<%

  /*  데이터베이스 연결 pool 객체를 얻는다. 입력하세요 */
  DBConnectionMgr pool = DBConnectionMgr.getInstance();
 
   Connection conn = null;
   Statement stmt = null;
   ResultSet rs = null;
   
	String id = "", 
	pwd = "", 
	email="";
	int counter = 0;
	
   try{
	   
	/*  얻어진 풀로 Connection을 얻는다. 입력하세요   */	
	conn = pool.getConnection();
	// conn = DriverManager.getConnection(JDBC_URL, USER, PASS); 가 필요없음 
	
	  
      stmt = conn.createStatement();
      rs = stmt.executeQuery("select * from members");
%>
<html>
<head>
<title>JSP에서 데이터베이스 연동</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<h2>JSP 스크립틀릿에서 Connection Pool을 이용한 데이터베이스 연동</h2>
<br/>
<h3>회원정보</h3>
<table  border="1">
<tr>
   <td><strong>ID</strong></td>
   <td><strong>PWD</strong></td>
   <td><strong>EMAIL</strong></td>

</tr>
<%
      if(rs!=null){
         while(rs.next()){
            id = rs.getString("id");
            pwd = rs.getString("passwd");
            email = rs.getString("email");
            
%>
<tr>
	<td><%= id %></td>
	<td><%= pwd %></td>
	<td><%= email %></td>
	
	</tr>
<%
            counter++;
         }//end while
      }//end if
%>
</table><br/>
total records : <%= counter %> 
<%
   }catch(SQLException sqlException){
      System.out.println("sql exception");
   }catch(Exception exception){
      System.out.println("exception");
   }finally{
      if( rs != null ) 
         try{ rs.close(); } 
         catch(SQLException ex) {}
      if( stmt != null ) 
         try { stmt.close(); } 
         catch(SQLException ex) {}
      
      if( conn != null ) 
    	  /* Connection을 반환함. 
    	  얻어진 pool 객체를 재사용하기 위해 닫지 말고 그냥 풀에 반환만함. 입력하세요 */
         try{
        	 pool.freeConnection(conn);
         } 
         catch(Exception ex){}
   }
%>

→ 여기에서 JSP 파일을 더 깨끗하게 하기 위해서 커넥션풀과 자바빈즈를 동시에 이용한다.

Untitled.png

ConnectionPool을 사용한 데이터베이스 연결 기능 향상

ConnectionPool과 Bean을 이용한 데이터베이스 연결

  • RegisterMgrPool.java
    • DB에 연결할 때 미리 생성되어져 있는 Connection을 하나 빌려서 사용 및 반환
    • RegisterMgrPool에서 수행된 쿼리에 대한 결과는 RegisterBean에 담겨져 jsp파일에서 이용
  • usingJDBCPoolBean.jsp
    • DB 관련 코드가 없고 전용 태그만 사용.
    • 간략한 페이지 작성 가능
    • 유지보수 효율적

JSP페이지 <-> RegisterMgrPool 간의 데이터 전송은 ArrayList 배열로 이동

Vector 클래스

  • java.util 패키지에 있는 컬렉션의 일종.가변 크기 배열을 구현하고 있음.
  • 컬렉션? 자바에서 자료 구조를 구현한 클래스
  • 기존 배열은 크기 고정. Vector는 요소의 개수가 늘어나면 자동으로 배열의 크기가 늘어남
  • 어떤 타입의 객체라도 저장 가능
  • 멀티스레드 환경에서도 사용할 수 있도록 동기화되어 있음
  • 참고

vector에 요소 추가 : add()

vector의 값 추출: get()

vector 안에 있는 요소 개수 : size()  등

반응형
  1. JSP 스크립트릿으로 데이터베이스 연동
  2. JSP 페이지와 데이터베이스의 직접적인 연동
  3. 자바빈즈(Java Beans) 사용의 장점
  4. ConnectionPool을 사용한 데이터베이스 연결
  5. ConnectionPool이란?
  6. Pooling 기법
  7. Pooling 기법의 DBConnectionMgr
  8. ConnectionPool을 이용한 데이터베이스 연결방법
  9. ConnectionPool을 사용한 데이터베이스 연결 기능 향상
  10. ConnectionPool과 Bean을 이용한 데이터베이스 연결
  11. Vector 클래스
'공부/JSP' 카테고리의 다른 글
  • [JSP]쿠키
  • [JSP]JDBC로 데이터베이스와 JSP연동
  • [JSP]파일 업로드
  • [JSP]자바빈즈 액션태그
Future0_
Future0_
rm -rf /
Future0_
Luna Developer Blog
Future0_
전체
오늘
어제
  • 분류 전체보기 (112)
    • 프로그래밍 (4)
      • 알고리즘 (4)
    • 보안 (14)
      • Dreamhack (4)
      • Hackthebox (1)
      • Webhacking (9)
    • 프로젝트 (4)
    • 공부 (80)
      • Database (2)
      • Python (11)
      • System (4)
      • Java (13)
      • JSP (13)
      • Spring (11)
      • Kotlin (16)
      • 자료구조 (10)
      • 기계학습 (0)
    • Docker (4)
    • Github (2)
    • Tip (1)
    • 잡담 (2)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • webhacking
  • 프로그래밍
  • Android Studio
  • 알고리즘
  • 디버깅키해시
  • 1.9.22
  • docker
  • 코틀린기본문법
  • spring
  • dreamhack
  • Java
  • native app
  • 상속
  • 자바빈즈
  • 보안
  • Computer science
  • Kotlin
  • Database
  • cs
  • jsp
  • ViewModel
  • React
  • Python
  • shared preference
  • 자료구조
  • 키 해시
  • 컴퓨터
  • SpringBoot
  • android studio 삭제
  • api 통신

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
Future0_
[JSP]자바빈즈를 이용한 데이터베이스 연동
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.