본문 바로가기

JAVA/JSP

JSP - DBCP 정의 및 설정 (DataBase Connection Pool)

반응형

** DBCP (DataBase Connection Pool)

 : 대부분의 사용자가 요구하는 웹 서비스는 데이터베이스와 연동하는 것이 일반적이다.

사용자 요청이 있을때 마다 db 서버에 Connection을 맺어야 한다면

만약, 한번에 다수의 사용자의 요청이 있다면 서버는 부담이 될 수 밖에 없다.


사용자 입장에서는 대기시간이 길어 질 수 있다.

이를 위해서 미리 일정한 양의 Connection을 미리 만들어 두면 훨씬 서버의 부담을 줄일 수 있고 

사용자의 대기 시간을 줄일 수 있다.


톰캣에서 제공하는 툴이 있다.



** DBCPl 설정

www.apache.org

맨 밑에 T로 시작하는 Tomcat

Documentation - Tomcat 7.0 

User Guide - 9)JDBC DataSources 

Table of Contents - Database Connection Pool(DBCP) Configurations - 4. Oracle 8i, 9i & 10g

1. Context configuration 에 보면 창이 있음 (이것 사용)

(name 설정, ip 설정, driverClassName에 driver 추가, 서비스명 설정)

--------------------------------------------------------------------

<Resource name="jdbc/myoracle" auth="Container"

              type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"

              url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"

              username="scott" password="tiger" maxActive="20" maxIdle="10"

              maxWait="-1"/>

--------------------------------------------------------------------

위에 것을 복사해서

server.xml 혹은 context.xml 에 복사하여 자신에게 맞도록 수정한다.

server.xml 적용시 : 그 어플리케이션에만 적용된다.

context.xml 적용시 : 모든 어플리케이션에 적용된다.



예)

server.xml 적용 방법

server.xml 열고

맨 밑에 내리면

<Context docBase="dbcpTest" path="/dbcpTest" reloadable="true" source="org.eclipse.jst.jee.server:dbcpTest"/></Host>

이 있다.

위에 것을 분리하여 하위노드에 아까 창을 줄것임

위에 / 를 지우고 밑에처럼 작성함

형식)

<Context docBase="dbcpTest" path="/dbcpTest" reloadable="true" source="org.eclipse.jst.jee.server:dbcpTest">

      여기 안에 적용시킴

</Context>

실제)

<Context docBase="dbcpTest" path="/dbcpTest" reloadable="true" source="org.eclipse.jst.jee.server:dbcpTest">

       <Resource name="oracle" auth="Container"

              type="javax.sql.DataSource" driverClassName="oracle.jdbc.driver.OracleDriver"

              url="jdbc:oracle:thin:@203.236.209.143:1521:XE"

              username="scott" password="tiger" maxActive="20" maxIdle="10"

              maxWait="-1"/>

</Context>

// maxActive 은 최대 커넥션수를 얼마만큼 만들겠다는 것임



<테스트를 위한 test.jsp 생성>

// import 주의

<%@page import="java.sql.Connection"%>

<%@page import="javax.sql.DataSource"%>

<%@page import="javax.naming.InitialContext"%>


<%@page import="javax.naming.Context"%>


<body>

<%

// Context에 설정한 리소스를 찾는다.

Context context = new InitialContext();


DataSource ds = (DataSource)context.lookup("java:comp/env/oracle");

// "java:comp/env/내가 지정한이름" : 형식임(외우기)

// 에러날때 (DataSource)를 캐스팅 해줌(자바는 항상 제일 조상인 Object를 생각하고 있기 때문이다.)


// DataSource를 통해 Connection을 얻어 온다.

Connection conn = ds.getConnection();


if(conn != null){

out.println("DBCP 성공");

conn.close();

}


%>

</body>


** Connection Pool을 이용해 DB에 넣기

test를 위한 테이블 만들기


create table test (

no number, 

title varchar2(20)

);


위에 데이터를 넣는 간단한 jsp 만듬

<test2.jsp 만듬>


<%

String sql = "insert into test values (1, 'hello')";


Context context = new InitialContext();

DataSource ds = (DataSource)context.lookup("java:comp/env/oracle");

Connection conn = ds.getConnection();

Statement stmt = conn.createStatement();


int re = stmt.executeUpdate(sql);


if(re==1){

out.println("추가 성공");

}else{

out.println("추가 실패");

}


if(stmt != null){

stmt.close();

}

if(conn != null){

conn.close();

}


%>


** workSpace 바꾸기

file - swtich workspace - other

browse - c드라이브 밑에 파일 하나 만들기 c:jspTest


1. 서버 설정

project Explorer 창에서 마우스 오른쪽 - new - other - server - Apache - Tomcat 7.0 

- Tomcat installation directory 설정 

C:\Tomcat 7.0

- JRE 설정

jre1.8.0_73 잡아줌


2. 웹프로젝트 생성


 

3. DBCP 설정

www.apache.org

맨 밑에 T로 시작하는 Tomcat

Documentation - Tomcat 7.0 

User Guide - 9)JDBC DataSources 

Table of Contents - Database Connection Pool(DBCP) Configurations - 4. Oracle 8i, 9i & 10g

1. Context configuration 에 보면 창이 있음 (이것 사용)

(name 설정, ip 설정, driverClassName에 driver 추가, 서비스명 설정)

(이외에 권한설정 등등)


4. 상품등록을 위한 웹어플리케이션 작성


** 프로젝트 만들고 미리 해야할것

Window

Preferences

Web

JSP Files

Encoding 에 맨 위로 올리면

ISO 10646/Unicode(UTF-8) 선택해줌

이렇게 하면 지금부터 만드는 모든 문서는 UTF-8로 만들어짐


1.GoodsVo 생성


1-1. ConnectionProvider 생성

(Context 를 이용하여)


2.GoodsDao 생성


3.WebContent - WEB-INF - lib 에

jar 3가지 파일 복사


4.WebContent - img 폴더 만듬(이미지 업로드용)


5.start.jsp 생성


6.start.jsp에서 받아오는 insertGoods.jsp 생성

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

위에 문장을 

<!DOCTYPE html >

이렇게 바꾸면 html5 로 인식하여 input type에 number 설정과 min 1000 설정이 가능함


7. servlet 생성 (InsertGoods 이란 이름으로)


8. ***** UTF-8 설정

Servers - server.xml

65번째 줄 Connector 찾음

<Connector connectionTimeout="20000" 

    port="8088" 

    protocol="HTTP/1.1" 

    redirectPort="8443"/>

여기에 추가로 ( URIEncoding="UTF-8" ) 해줌

<Connector connectionTimeout="20000" 

    port="8088" 

    protocol="HTTP/1.1" 

    redirectPort="8443"

    URIEncoding="UTF-8"

    />




9. 상품 목록보기 jsp 

반응형