Truy cập Database trong Servlet



Trước khi vào chương này, chúng tôi giả sử bạn đã hiểu cách ứng dụng JDBC làm việc. Trước khi bắt đầu với truy cập Database thông qua một Servlet, chắc chắn rằng bạn đã cài đặt môi trường JDBC thích hợp cùng với một Database.

Để biết thêm chi tiết về cách truy cập Database bởi sử dụng JDBC và cài đặt môi trường của nó, bạn nên tham khảo: JDBC Tutorial.

Để bắt đầu với các khái niệm cơ bản, chúng ta tạo một table đơn giản và tạo một vài bản ghi trong bảng đó như sau:

Tạo table

Để tạo bảng Employees trong TEST database, bạn theo các bước:

Bước 1:

Mở một Command Prompt và thay đổi thư mục cài đặt như sau:

C:\>
C:\>cd Program Files\MySQL\bin
C:\Program Files\MySQL\bin>

Bước 2:

Login vào Database như sau:

C:\Program Files\MySQL\bin>mysql -u root -p
Enter password: ********
mysql>

Bước 3:

Tạo bảng Employee trong TEST database như sau:

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>
Quảng cáo

Tạo Data Records

Cuối cùng, bạn tạo các bản ghi mới trong Employee table như sau:

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>

Truy cập một Database sử dụng Servlet

Ví dụ sau minh họa cách để truy cập một TEST database bởi sử dụng Servlet:

// 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
  {
      // Ten cua driver va dia chi URL cua co so du lieu
      static final String JDBC_DRIVER="com.mysql.jdbc.Driver";  
      static final String DB_URL="jdbc:mysql://localhost/TEST";

      //  Ten nguoi dung va mat khau cua co so du lieu
      static final String USER = "root";
      static final String PASS = "123456";

      // 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
         conn = DriverManager.getConnection(DB_URL,USER,PASS);

         // Execute SQL query
         stmt = conn.createStatement();
         String sql;
         sql = "SELECT mssv, ho, ten, diemthi FROM sinhvienk60";
         ResultSet rs = stmt.executeQuery(sql);

         // Extract data from result set
         while(rs.next()){
            // Lay du lieu boi su dung ten cot
            int mssv  = rs.getInt("mssv");
            int diemthi = rs.getInt("diemthi");
            String ho = rs.getString("ho");
            String ten = rs.getString("ten");

            // Hien thi cac gia tri
            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){
         // Xu ly cac loi cho JDBC
         se.printStackTrace();
      }catch(Exception e){
         // Xu ly cac loi cho Class.forName
         e.printStackTrace();
      }finally{
         // Khoi finally duoc su dung de dong cac resource
         try{
            if(stmt!=null)
               stmt.close();
         }catch(SQLException se2){
         } 
         try{
            if(conn!=null)
            conn.close();
         }catch(SQLException se){
            se.printStackTrace();
         }// Ket thuc khoi finally
      } // Ket thuc khoi try
   }
} 
Quảng cáo

Biên dịch Servlet trên và tạo các entry sau trong 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>
....

Bây giờ, gọi Servlet này bởi sử dụng URL là http://localhost:8080/DatabaseAccess sẽ hiển thị phản hồi sau:

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

Các bạn ở Hà Nội có thể tham gia khóa học thứ 9 của vietjackteam (đang tuyển sinh) vào cuối tháng 10/2018 do anh Nguyễn Thanh Tuyền, admin vietjack.com trực tiếp giảng dạy tại Hà Nội. Chi tiết nội dung khóa học tham khỏa link : Khóa học Java.Các bạn học CNTT, điện tử viễn thông, đa phương tiện, điện-điện tử, toán tin có thể theo học khóa này. Số lượng các công việc Java hoặc .NET luôn gấp ít nhất 3 lần Android hoặc iOS trên thị trường tuyển dụng. Khóa online= Đi phỏng vấn, Khóa offline= Đi phỏng vấn+ 1.5 tháng thực tập ngoài doanh nghiệp. .

Mọi người có thể xem demo nội dung khóa học tại địa chỉ Video demo khóa học Offline

Các bạn ở xa học không có điều kiện thời gian có thể tham dự khóa Java online để chủ động cho việc học tập. Từ tháng 4/2018, VietJack khuyến mại giá SỐC chỉ còn 250k cho khóa học, các bạn có thể trả lại tiền nếu không hài lòng về chất lượng trong 1 tháng, liên hệ facebook admin fb.com/tuyen.vietjack để thanh toán chuyển khoản hoặc thẻ điện thoại, khóa học bằng Tiếng Việt với gần 100 video, các bạn có thể chủ động bất cứ lúc nào, và xem mãi mãi. Thông tin khóa học tại Khóa học Java Online trên Udemy

Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

Các bài học SEO phổ biến khác tại VietJack: