JDBC 를 이용해 Servlet 을 만들고 DB 액세스 하기

JDBC

Servlet 예제

JDBC 는 Java 에서 데이터베이스를 액세스하기 위해 사용하는 드라이버, Servlet 은 톰캣 컨테이너가 실행하는 자바 class 파일

 

이 두 가지를 이용하여 아주 간단한 웹 양식을 만들고 DB를 액세스 할 것이다. 이전 포스팅에서 JDBC 를 이용하여 Oracle DB 에 연동하는 방법을 설명했고, 현장실습 다닐 때 잠깐 배웠던 스프링 프레임워크에서 서블릿에 대해 잠깐 포스팅을 했다.

Oracle DB 에는 아주 간단한 테이블이 이미 만들어져 있다. Student 테이블과 Course 라는 테이블이고 각각 학생정보와 교과목에 대한 정보가 들어있다.

 

학생의 정보를 출력하는 서블릿 만들기

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

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dbaccess.oraConnectionManager;

/**
 * Servlet implementation class oraStudentList
 */
@WebServlet("/oraStudentList")
public class oraStudentList extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public oraStudentList() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub

        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        Connection con = null;
        try {
            con = oraConnectionManager.getConnection();
        } catch (SQLException e1) {
            e1.printStackTrace();
        }
        try {
            Statement stmt = con.createStatement();
            String sqlString = "select * from student order by sno asc";
            ResultSet rset = stmt.executeQuery(sqlString);
            out.println("<html>");
            out.println("<head><title>학생명단 </title> <link rel='stylesheet' type='text/css' href='css/dbprog.css'> </head>");
            out.println("<body>");
            out.println("<h2 align=center>학생명단 [Oracle Version]</h2>");
            out.println("<br>");
            out.println("<table align=center >");
            out.println("<tr align=center>");
            out.println(" <td>학번</td>");
            out.println(" <td>이름</td>");
            out.println(" <td>학년</td>");
            out.println(" <td>학과</td>");
            out.println("</tr>");
            while ( rset.next() ) {
                String sno = rset.getString("SNO");
                String sname = rset.getString("SNAME");
                String year = rset.getString("YEAR");
                String dept = rset.getString("DEPT");
                out.println("<tr align=center>");
                out.println(" <td>" + sno + "</td>");
                out.println(" <td>" + sname + "</td>");
                out.println(" <td>" + year + "</td>");
                out.println(" <td>" + dept + "</td>");
                out.println("</tr>");
            }
            rset.close(); stmt.close(); con.close();
            out.println("</table>"); out.println("</body>"); out.println("</html>");
            con.close();
            stmt.close();
            rset.close();
        } catch ( SQLException e ) {
            e.printStackTrace();
        }

    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

우선 전에 만들었던 dbaccess 패키지가 import 되어야 한다. 또한 JDBC 를 사용하기 위해 java.sql.* 을 import 시켜준다.

javax 는 서블릿과 관련한 패키지가 들어있다.

‘@’ 표시는 “어노테이션” 이라 부르며 JavaEE5 부터 새롭게 추가된 내용이다. 이는 URL Mapping 기능을 맡고 있다. 스프링 프레임워크를 배우면서 잠깐 언급했다.

res.getWriter() 메소드는 콘솔창이 아닌 HTML 문서로 출력하는 객체를 만들어준다.

서블릿에서 자주 사용하는 메소드는 doGet(HttpServletRequest request, HttpServletResponse response) 와 doPost(HttpServletRequest request,  HttpServletResponse response) 이다.

이는 “form” 태그에서 method 속성을 통해 실행되는 메소드이며 속성을 지정해주지 않았다면 default 값은 “GET” 방식이다.

요청한 쪽의 글자 인코딩과 응답한 쪽의 글자 인코딩을 맞춰주어야 한다. response.setContentType(“text/html;charset=utf-8”) 과 request.setCharacterEncoding(“UTF-8”) 이 글자의 인코딩을 맞춰준다.

 

참고자료

[JSP] Servlet 이란?

[Database] JDBC 를 이용하여 Oracle DB연동

URL Mapping 관련 – [Spring Framework] 스프링 예제 소스 분석


게시됨

카테고리

작성자

%d 블로거가 이것을 좋아합니다: