ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 이클립스 DBCP연결방법 (간단)
    카테고리 없음 2018. 6. 21. 08:23

    정말 간단함

    1. DB에 테이블을 작성한다.

    (나는 mariaDB를 사용했음 이건 각자하기)


     작성자, 비밀번호, 내용, 작성일, 아이피

       

       create table memo(

        idx int(4) primary key auto_increment,

        name varchar(100) not null,

        password varchar(100) not null,

        content text not null,

        regdate timestamp default now(),

        ip varchar(20) not null);


    2. DBCP를 설정한다.


    1)META- INF 안에 context.xml을 만들자

    - META-INF폴더 오른쪽누르면 OTHER가 있다 클릭하면 XML생성가능함

    이 내용을 쫘르르 붙여 쓴다


    <?xml version="1.0" encoding="UTF-8"?>

    <context>

    <Resource 

    name="jdbc/TestDB" 

    auth="Container"

    type="javax.sql.DataSource" 

    maxTotal="100" 

    maxIdle="30"

    maxWaitMillis="10000" 

    username="jspuser" 

    password="0000"

    driverClassName="org.mariadb.jdbc.Driver"

    url="jdbc:mariadb://localhost:3306/mydb" />

    </context>


    // 간단설명을 붙이자면

    auth:컨테이너를 자원 관리자로 쓸것이다.

    name: JDBC의 이름이고 변경이 가능하다.

    type: 웹에서 이 리소스를 사용시 datasource로 리턴된다.

    username: 접속계정(마리아db접속계정)

    password: 마리아계정 비번설정했던것



    2) WEB- INF안에 web.xml에 리소스를 추가한다.


      <resource-ref>

        <description>DB Connection</description>

        <res-ref-name>jdbc/TestDB</res-ref-name>

        <res-type>javax.sql.DataSource</res-type>

        <res-auth>Container</res-auth>

      </resource-ref>


    (xml version , web-app, display-name 그 바로 밑에 넣으면 됨 )


    // 설명

    res-ref-name은 JDBC의 이름이며 resource의 name과 동일하게 입력

    res-type은 resource의 type과 동일하게입력

    res- auth도 auth부분과 동일하게 입력


    3) WEB-INF안에 있는 lib에 라이브러리를 복사한다.


    4) JdbcUtil.java클래스를 하나 만든다


    package kr.kjwc.jdbc;

    import java.sql.Connection;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import java.sql.Statement;

    import javax.naming.Context;

    import javax.naming.InitialContext;

    import javax.naming.NamingException;

    import javax.sql.DataSource;

    public class JdbcUtil {

    public static Connection getConnection() {

    Context initContext;

    Connection conn = null;

    try {

    initContext = new InitialContext();

    Context envContext  = (Context)initContext.lookup("java:/comp/env");

    DataSource ds = (DataSource)envContext.lookup("jdbc/TestDB");

    conn = ds.getConnection();

    } catch (NamingException e) {

    e.printStackTrace();

    } catch (SQLException e) {

    e.printStackTrace();

    }

    return conn;

    }

    public static void close(ResultSet rs) {

    try {

    if (rs != null) rs.close();

    } catch (SQLException e) {

    e.printStackTrace();

    }

    }

    public static void close(Statement stmt) {

    try {

    if (stmt != null) stmt.close();

    } catch (SQLException e) {

    e.printStackTrace();

    }

    }

    public static void close(Connection conn) {

    try {

    if (conn != null) conn.close();

    } catch (SQLException e) {

    e.printStackTrace();

    }

    }

    public static void rollback(Connection conn) {

    try {

    if (conn != null) conn.rollback();

    } catch (SQLException e) {

    e.printStackTrace();

    }

    }

    }


    5. DBTest jsp파일 만들자!


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

    <%@page import="kr.kjwc.jdbc.JdbcUtil"%>

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

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

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

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <title>Insert title here</title>

    </head>

    <body>


    <%

    Connection conn  = null;

    try{

    conn = JdbcUtil.getConnection();

    conn.setAutoCommit(false);

    out.println("연결성공 : " + conn + "<br>");

    conn.commit();

    }catch(SQLException e){

    out.println("연결실패 : " + e.getMessage() + "<br>");

    JdbcUtil.rollback(conn);

    }finally{

    JdbcUtil.close(conn);

    }

    %>

    </body>

    </html>


    //설명

    setAutoCommit은 자동으로 true로 설정이 되어있다. 제대로 작동이 안되게끔 false로 설정을 하고 연결성공이 되면 그때 conn.commit을 해준다.

    그리고 예외 발생시 rollback으로 상황을 되돌려준다.

    (ex. 장바구니물건을 구입시 결제 오류가 나면 다시 장바구니로 돌아오는 ..)

     

    연결되는지 테스트!!!!

    연결성공 : 543276357, URL=jdbc:mariadb://localhost:3306/mydb, UserName=jspuser, MariaDB connector/J


    이렇게 나오면 성공^^(단, 543276357 이숫자는 새로고침할때마다 바뀜)

    질문은 댓글 달면 답변해드림~ 다함께 공부하자!

    얼씨구나 좋다!


    아래에 압축파일 올려놓음


    MariaMemoPractice.zip


    반응형

    댓글

Designed by Tistory.