JSP

 

 

 

1. mariadb dbcp  다운로드

mariadb-java-client-2.3.0.jar

https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client

 

오라클

■ 파일 다운로드

 

 

 

 

 

2. 프로젝트 내의 META-INF  폴더 아래

context.xml 파일 을 생성

(톰켓 컨테이너에서 conf 폴더 아래 존재하지만 프로젝트 내에서 설절 할 수 있다.)


 

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="DataBase" path="/DataBase" reloadable="true" source="org.eclipse.jst.jee.server:DataBase">

<Resource auth="Container" 
          name="jdbc/pool" 
         driverClassName="org.mariadb.jdbc.Driver"
          type="javax.sql.DataSource" 
          url="jdbc:mysql://ip주소:포트번호/전역 데이터베이스 이름" 
          username="접속계정"
          password="계정 비밀번호" 
          loginTimeout="10" 
          maxActive="50" 
          maxIdle="20"
          maxWait="5000" 
          testOnBorrow="true" />
 
</Context>
 
<!--
    auth : 컨테이너를 자원 관리자로 기술
    name : JDBC이름, 변경 가능
    driverClassName : JDBC 드라이버
    type : 웹에서 이 리소스를 사용할 때 DataSource로 리턴됨
    username : 접속계정
    password : 접속할 계정 비밀번호
    
    loginTimeout : 연결 끊어지는 시간
    maxActive : 최대 연결 가능한 Connection수 (기본 20개)
    maxIdle : Connection pool 유지를 위해 최대 대기 connection 숫자
    maxWait : 사용 가능한 커넥션이 없을 때 커넥션 회수를 기다리는 시간 (1000 = 1초)
    testOnBorrow : db에 test를 해볼 것인지
-->

 

 

3.web.xml

	<resource-ref>
	      <description>DB Connection</description>
	      <res-ref-name>jdbc/pool</res-ref-name>
	      <res-type>javax.sql.DataSource</res-type>
	      <res-auth>Container</res-auth>
   </resource-ref>

 

 

4.java

package sec01.ex03;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class MemberDAO {
	
	private Connection con;
	private Statement stmt; 
	private PreparedStatement pstmt;
	private DataSource ds;
	
	public MemberDAO() {
		try {
			Context ctx=new InitialContext();
			Context envContext=(Context)ctx.lookup("java:/comp/env");
			ds=(DataSource)envContext.lookup("jdbc/pool");			
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	
	
	public List<MemberVO> listMembers() {	
		
		List<MemberVO> list =new ArrayList<MemberVO>();
		ResultSet rs=null;
		try {
			//connDB();
			con=ds.getConnection();
			
			String query="select * from t_member";
			System.out.println("PreparedStatement  sql " +query);
			pstmt=con.prepareStatement(query);
			//rs=stmt.executeQuery(query);
			rs=pstmt.executeQuery();		
			while(rs.next()) {
				String id=rs.getString("id");
				String pwd=rs.getString("pwd");
				String name=rs.getString("name");
				String email=rs.getString("email");
				Date joinDate=rs.getDate("joinDate");
				MemberVO vo=new MemberVO();
				vo.setId(id);
				vo.setPwd(pwd);
				vo.setName(name);
				vo.setEmail(email);
				vo.setJoinDate(joinDate);
				list.add(vo);
			}
			
		}catch (Exception e) {
			e.printStackTrace();
		}finally {
			try {
				if(rs!=null) rs.close();				
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {				
				if(stmt!=null) stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if(con!=null) con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		
		return list;
	}

	
	private void connDB(){
		try {
			Class.forName(driver);
			System.out.println("mysql 드라이버 로딩 성공");
			con=DriverManager.getConnection(url, user, pwd);
			System.out.println("Connection 생성 성공");
			stmt=con.createStatement();
			System.out.println("Statement 생성 성공");			
		}catch (Exception e) {
			e.printStackTrace();
		}
	}



	public void addMember(MemberVO vo) {
		try {
			Connection con=ds.getConnection();
			
			String sql="insert into t_member";
			sql+=" (id, pwd, name, email)";
			sql+=" values ( ? , ? , ? , ?)";
			System.out.println("preparestatement  : "+sql);
			pstmt=con.prepareStatement(sql);
			pstmt.setString(1, vo.getId());
			pstmt.setString(2, vo.getPwd());
			pstmt.setString(3, vo.getName());
			pstmt.setString(4, vo.getEmail());
			pstmt.executeUpdate();
			pstmt.close();
			
		}catch(Exception e) {
			e.printStackTrace();
		}		
	}



	public void delMember(String id) {
		try {
			Connection con=ds.getConnection();
			
			String sql="delete from t_member where id=?";

			System.out.println("preparestatement  delMember: "+sql);
			pstmt=con.prepareStatement(sql);
			pstmt.setString(1,id);
			pstmt.executeUpdate();
			pstmt.close();			
		}catch(Exception e) {
			e.printStackTrace();
		}	
		
	}
	
	
	
	
	
}

 

 

 

 

 

about author

PHRASE

Level 60  라이트

모든 성장에는 활동이 필요하다. 노력하지 않으면 육체도 정신도 성장하지 않는다.

댓글 ( 4)

댓글 남기기

작성

JSP 목록    more