본문 바로가기

Programing/JSP

Servlet - JDBC활용

결과:

사용자 삽입 이미지
사용자 삽입 이미지


JdbcServlet1.java


import java.io.IOException;
import java.io.PrintWriter;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.Connection;
import java.util.concurrent.ExecutionException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


 public class JdbcServlet1 extends javax.servlet.http.HttpServlet {
  Connection con;
  ResultSet rs;
  PrintWriter out;
  Statement stmt;
 
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

  // emp 테이블의 자원들을 가져와서 화면에 출력하는 Servlet
  try{
   //드라이버 로딩
   Class.forName("oracle.jdbc.driver.OracleDriver");
   

   //DB연결
   con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL1" , "scott" , "tiger");
   
   Statement stmt = con.createStatement();
   
   rs = stmt.executeQuery("SELECT empno,ename FROM emp");

   //응답을 하기 위한 준비 작업
   response.setContentType("text/html;charset=euc-kr");
   PrintWriter out = response.getWriter();

   
   out.println("<body>");
   out.println("<h2>Emp테이블의 자원들</h2>");
   out.println("<hr>");
   out.println(" <table width=250>");
   out.println("  <tr bgcolor='#efefef'>");
   out.println("   <th>사번</th><th>이름</th>");
   out.println("  </tr>");
   
   while(rs.next()){
    out.println("<tr align='center'>");
    out.println(" <td>"+rs.getString("empno")+"</td>");  //rs.getString(1)
    out.println(" <td>"+rs.getString("ename")+"</td>");  //rs.getString(2)
    out.println("</tr>");
   }
   
   out.println(" </table>");
   out.println("</body>");
   out.close();
   stmt.close();
   con.close();
   
  }catch(Exception e){
    e.printStackTrace();
  }finally{
   try{
    if(out != null)
    out.close();
    if(stmt != null)
    stmt.close();
    if(con != null)
    con.close();
   }catch(Exception e){
    e.printStackTrace();
   }
  }
 
 }  
 
 
 }   





servers.xml 리소스등록 예제

 

server.xml의 리소스를 등록할 경우 톰켓에 lib에 오라클드라이버를 설치해야한다.

 


maxActive="10"(갯수) maxIdle="10"(대기자수) maxWait="-1"(대기시간 없게)



JdbcServlet2.java

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;


 public class JdbcServlet2 extends javax.servlet.http.HttpServlet {
 
  ResultSet rs;
  Connection con;
  Statement stmt;
  PrintWriter out;
   
 public void doGet(HttpServletRequest request, HttpServletResponse response){
   // server.xml에 Context에 등록한 Resource를 객체로 가져오기 위해서는
   // initialContext객체(현재 사용되는 Context)가 필요하다.
   // 이렇게 하려면 ojdbc14.jar파일을 Tomcat설치된 lib폴더에 복사해둬야한다.
 

  try {
   InitialContext ctx = new InitialContext();
   //현재 사용되는 컨텍스트를 얻는다
   Context c = (Context) ctx.lookup("java:comp/env");

  // "java:comp/env" <-바뀔수없다. object
   
   //현재 사용되는 컨텍스트로 부터 리소스찾기
   DataSource ds = (DataSource) c.lookup("jdbc/oracle");
   
   con = ds.getConnection();
   stmt = con.createStatement();
   rs = stmt.executeQuery("SELECT empno,ename FROM emp");

   //응답을 하기 위한 준비 작업
   response.setContentType("text/html;charset=euc-kr");
   out = response.getWriter();

   
   out.println("<body>");
   out.println("<h2>Emp테이블의 자원들</h2>");
   out.println("<hr>");
   out.println(" <table width=250>");
   out.println("  <tr bgcolor='#efefef'>");
   out.println("   <th>사번</th><th>이름</th>");
   out.println("  </tr>");
   
   while(rs.next()){
    out.println("<tr align='center'>");
    out.println(" <td>"+rs.getString("empno")+"</td>");  //rs.getString(1)
    out.println(" <td>"+rs.getString("ename")+"</td>");  //rs.getString(2)
    out.println("</tr>");
   }
   
   out.println(" </table>");
   out.println("</body>");
   out.close();
   stmt.close();
   con.close();
   
  }catch(Exception e){
    e.printStackTrace();
  }finally{
   try{
    if(out != null)
    out.close();
    if(stmt != null)
    stmt.close();
    if(con != null)
    con.close();
   }catch(Exception e){
    e.printStackTrace();
   }
  }
  }   
 }