서블릿-데이터베이스 액세스
이 튜토리얼에서는 JDBC 애플리케이션의 작동 방식을 이해하고 있다고 가정합니다. 서블릿을 통한 데이터베이스 액세스를 시작하기 전에 데이터베이스와 함께 적절한 JDBC 환경 설정이 있는지 확인하십시오.
JDBC 및 환경 설정을 사용하여 데이터베이스에 액세스하는 방법에 대한 자세한 내용은 JDBC Tutorial을 참조하십시오 .
기본 개념으로 시작하기 위해 다음과 같이 간단한 테이블을 만들고 해당 테이블에 몇 개의 레코드를 만듭니다.
테이블 생성
만들려면 Employees TEST 데이터베이스의 테이블, 다음 단계를 사용하십시오-
1 단계
열기 Command Prompt 다음과 같이 설치 디렉토리로 변경하십시오-
C:\>
C:\>cd Program Files\MySQL\bin
C:\Program Files\MySQL\bin>
2 단계
다음과 같이 데이터베이스에 로그인하십시오.
C:\Program Files\MySQL\bin>mysql -u root -p
Enter password: ********
mysql>
3 단계
테이블 만들기 Employee 에 TEST 다음과 같이 데이터베이스-
mysql> use TEST;
mysql> create table Employees (
id int not null,
age int not null,
first varchar (255),
last varchar (255)
);
Query OK, 0 rows affected (0.08 sec)
mysql>
데이터 레코드 생성
마지막으로 다음과 같이 Employee 테이블에 몇 개의 레코드를 생성합니다.
mysql> INSERT INTO Employees VALUES (100, 18, 'Zara', 'Ali');
Query OK, 1 row affected (0.05 sec)
mysql> INSERT INTO Employees VALUES (101, 25, 'Mahnaz', 'Fatma');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO Employees VALUES (102, 30, 'Zaid', 'Khan');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO Employees VALUES (103, 28, 'Sumit', 'Mittal');
Query OK, 1 row affected (0.00 sec)
mysql>
데이터베이스 액세스
다음은 Servlet을 사용하여 TEST 데이터베이스에 액세스하는 방법을 보여주는 예입니다.
// Loading required libraries
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
public class DatabaseAccess extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL="jdbc:mysql://localhost/TEST";
// Database credentials
static final String USER = "root";
static final String PASS = "password";
// Set response content type
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String title = "Database Result";
String docType =
"<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";
out.println(docType +
"<html>\n" +
"<head><title>" + title + "</title></head>\n" +
"<body bgcolor = \"#f0f0f0\">\n" +
"<h1 align = \"center\">" + title + "</h1>\n");
try {
// Register JDBC driver
Class.forName("com.mysql.jdbc.Driver");
// Open a connection
Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
// Execute SQL query
Statement stmt = conn.createStatement();
String sql;
sql = "SELECT id, first, last, age FROM Employees";
ResultSet rs = stmt.executeQuery(sql);
// Extract data from result set
while(rs.next()){
//Retrieve by column name
int id = rs.getInt("id");
int age = rs.getInt("age");
String first = rs.getString("first");
String last = rs.getString("last");
//Display values
out.println("ID: " + id + "<br>");
out.println(", Age: " + age + "<br>");
out.println(", First: " + first + "<br>");
out.println(", Last: " + last + "<br>");
}
out.println("</body></html>");
// Clean-up environment
rs.close();
stmt.close();
conn.close();
} catch(SQLException se) {
//Handle errors for JDBC
se.printStackTrace();
} catch(Exception e) {
//Handle errors for Class.forName
e.printStackTrace();
} finally {
//finally block used to close resources
try {
if(stmt!=null)
stmt.close();
} catch(SQLException se2) {
} // nothing we can do
try {
if(conn!=null)
conn.close();
} catch(SQLException se) {
se.printStackTrace();
} //end finally try
} //end try
}
}
이제 위의 서블릿을 컴파일하고 web.xml에 다음 항목을 생성하겠습니다.
....
<servlet>
<servlet-name>DatabaseAccess</servlet-name>
<servlet-class>DatabaseAccess</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DatabaseAccess</servlet-name>
<url-pattern>/DatabaseAccess</url-pattern>
</servlet-mapping>
....
이제 다음 응답을 표시하는 URL http : // localhost : 8080 / DatabaseAccess를 사용하여이 서블릿을 호출합니다.
Database Result
ID: 100, Age: 18, First: Zara, Last: Ali
ID: 101, Age: 25, First: Mahnaz, Last: Fatma
ID: 102, Age: 30, First: Zaid, Last: Khan
ID: 103, Age: 28, First: Sumit, Last: Mittal