[DB] Web Database Programming Techniques Using Tomcat + JSP

SUbbb·2021년 11월 20일
0

DataBase

목록 보기
11/15
post-thumbnail

Web Database Programming

  • 대부분의 Internet applications는 사용자와 상호작용할 수 있는 dynamic web page를 요구한다.
    • 하지만 basic HTML은 static web pages를 구현하는데 유용하다.

JavaServer Pages(JSP)

  • 서버에서 script를 작성하여 클라이언트에서 보낼 dynamic web page를 생성할 수 있다.
  • database server와 연결하는데 JDBC를 사용
  • 정적 페이지와 동적 페이지 모두 생성할 수 있다.

Apache Tomcat

  • Web Application Server(WAS)
  • Apache와 Tomcat을 합한 것으로, 정적인 데이터는 Apache에서, 동적인 데이터는 Tomcat에서 처리하는 서버

Example of Database Access via Web

  • Client Side : Client(user) Side
  • Server Side : Middleware layer + Server layer
  • Server layer와 Middleware layer는 JDBC를 통해 통신하고, 여러 webapp을 연동하여 처리할 수 있다.
  • Middleware layer는 DB에 많은 트래픽이 몰리는 것을 방지하기 위해 승인된 request만을 허용

왜 Three-layer로 구성하는지?
사용자 어플리케이션과 DB의 계층간 분리를 통해 역할을 분담시켜 일을 효율적으로 할 수 있다.
각 계층간의 독립성이 높아져 코드에 문제가 생겼을 때, 문제가 되는 부분만 쉽게 해결할 수 있다.
혹은, 중간의 Middleware layer가 resource, 보안성을 관리해 load balancing을 수행하여 client side에서의 무차별적인 DB 접근을 필터링해주는 역할을 수행하여 DB를 해치는 것을 막기 위함

Writing a Simple Web Database Application

<!-- JDBC package import -->
<%@ page language="java" import="java.text.*, java.sql.*" %>
...
<body>
<% 
    String serverIP = "localhost";
    String strSID = "orcl";
    String portNum = "1521";
    String user = "db11";
    String pass = "db11";
    String url = "jdbc:oracle:thin:@"+serverIP+":"+portNum+":"+strSID;
    
    // JDBC package가 제대로 load되지 않으면 error !
    Connection conn = null;
    PreparedStatement pstmt;
    ResultSet rs;
    Class.forName("oracle.jdbc.driver.OracleDriver");
    conn = DriverManager.getConneciton(url, user, pass);
    String query;
    // query 작성
    pstmt = conn.prepareStatement(query);
    rs = pstmt.executeQuery();
    
    ResultSetMetaData rsmd = rs.getMetaData();
    int cnt = rsmd.getColumnCount();
    for (int i=1;i<=cnt;i++) {
    	// index는 1부터 시작
    	out.println("<th>"+rsmd.getColumnName(i)+"</th>");
    }
    while (rs.next()) {
    	...
        SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd");
        Date mgrStartDate = rs.getDate(4);
        // Date를 처리하기 위한 객체
    }
%>
</body>
profile
배우고 정리하고 공유하기

0개의 댓글