SERVLET kết nối các cơ sở dữ liệu

Các WebSite ngày nay không chi hiển thị nhũng thông tin cùa cảc trang HTML tĩnh. Ví dụ, trong thưorng mại điện tử, một lĩnh vực đang thịnh hành trên thế giới, khách hàng có thề vào một trang Web bán hàng, chọn những mặt hàng cần mua, điền vào phiếu mua hàng sau đó thanh toán (băng các phương thức trả tín phiếu, check, chuyên khoản, v.v.) thì sẽ nhận được các mặt hàng theo yêu cầu. Như vậy, các thông tin chi tiết về khách hàng phải được lưu trữ trong CSDL ờ máy dịch vụ để thực hiện được các dịch vụ thưcmg mại điện từ. Trong nhưng kịch bản như thế, các Website phải được kết nối với các CSDL khác.

Servlet và JDBC [ 1 ] là hai công cụ rất hiệu quả cho người lập trinh ứng dụng Web kết nối Web với CSDL.

1. Vai trò của Servlet trong mô hình kết nôi CSDL

Các chương trinh img dụng trên mạng hiện nay đang chuyền từ mô hình Client/Server sang mô hình ba lồng, hoặc n-tầng. Trong mô hình ba tầng, Client không thực hiện truy vấn trực tiếp các CSDL mà thông qua tầng trung gian ở Server để truy vấn vào các CSDL.

MÔ hình ba tầng có ưu điểm là nó tách riêng phần biểu diền ảo (ờ phía Client) ra khỏi phần logic nghiệp vụ (tầng trung gian) và dữ liệu thô ờ Server. Do vậy, nó cho phép nhiều Client có thể truy cập vào cùng một dữ liệu, cùng một nghiệp vụ và nhiều loại chương trình Java thực hiện như chương trình ứng dụng độc lập, chương trình applet hay chương trình Web. Servlet có một vị trí quan trọng trong việc truy cập vào CSDL ờ tầng trung gian. Ví dụ, hãy tường tượng có một chương trình đặt mua hàng trên mạng. Nếu không có tầng trung gian thì chương trình này phải kết nối trực tiếp với CSDL trên máy chủ và máy chủ phải ghi lại đơn hàng, cập nhật lại các trường dừ liệu trong CSDL (trừ đi những mặt hàng đã bán theo đơn đặt mua). Chương ữình của khách có thể bị ngẳt nếu Server cùa CSDL bị thay đổi theo một cách nào đó. Hoặc có thể một ai đó can thiệp vàc chương trinh cùa khách, Server nhận được đơn đặt hàng nhưng không nhận được sự thanh toán của khách, mặc dù khách hàng đã thực hiện thanh toán theo đơn đặt hàng, v.v.

Tầng trung gian sử dụng logic nghiệp vụ để trừu tượng hoá quá trình xử lý đặt hàng. Nó nhận thòng tin từ đơn đặt hàng, kiểm tra tính xác thực cùa thẻ tín dụng, tài khoản, v.v, và chuyển những thông tin đỏ cho hệ CSDL. Khi hệ CSDL thay đổi thì tầng trung gian sẽ được cập nhật mà không làm ảnh hường đến chương trình của khách. Ngoài ra, tầng trung gian còn giúp ta tăng hiệu quả xử lý công việc vì nó hỗ trợ để kết nối chéo VỚI nhiều hệ CSDL khác nhau.

2. Xử lý giao dịch với JDBC

Sự truyền thông giữa Client và tầng trung gian thường sử dụng HTTP (khi người sừ dụng dùng Web Browser), RMI (khi người sử dụng dùng phần mềm ứng dụng hay Applet hiệu gọi từ xa như đã đề cập ờ chương II). Bộ điều khiển kết nối JDBC được sử dụng để quản lý sự trao đổi thông tin giữa tầng trung gian và CSDL.

JDBC là giao diện với SQL, một giao diện với hầu như tất cả các CSDL mô hình dữ liệu quan hệ hiện đại.

Ta hãy xét tiếp chương trinh đặt mua hàng trực tuyến. Khách hàng điền vào đơn đặt mua và gửi đến cho Cửa hàng (hệ thống bán hàng trực tuyến). CSDL của hệ thống phải được cập nhật và chèn thêm bản ghi thông tin vể khách hàng đó. Tương tư, sau khi giao dịch mua/bán kết thúc thì một số bảng trong hệ CSDL cũng sẽ phải được cập nhật.

Những vấn đề trên được các câu lệnh của SQL thực hiện. Đối tượng cùa lóp Connection được sừ dụng để quàn lý các giao dịch với JDBC.

Ví dụ 6.8. Ta hãy xây dụng một chương trinh ứng dụng thời gian thực có sử dụng Servlet. Để thực hiện ví dụ này, mặc định là ta đã biết sừ dụng HTML và Microsoft Frontpage để tạo lập các trang Web.

Chúng ta hãy xét bài toán như sau: Sao Mai là công ty kinh doanh và cho thuê ô tô. Họ bán, cho thuê các ô tô gia đình và các ô tô chờ khách cho các tua du lịch. Công ty muốn thành lập một câu lạc bộ cùng với một Website: CarSadMai.com để thực hiện các dịch vụ trực tuyến nêu trên.

Để tham gia được vào CarSaoMai.com thì bạn phải điền vào một thẻ đăng ký gia nhập câu lạc bộ và chi những người đã đăng ký mới được cung cấp các dịch vụ trực tuyến để mua và sử dụng ô tô. Những người chưa đăng ký thì chi được quyền truy cập đế biết được những thông tin về Công ty và những thông tin tóm tắt về các dịch vụ mà Công ty cung cấp.

Trước tiên, ta hãy thiết kế quá trình đăng ký như sau.

  • Tạo ra trang HTML chứa mẫu đăng ký.
  • Cập nhật lại CSDL về các Servlet làm việc ỡ tầng trung gian khi có một người mới đãng ký.
  • Tạo ra một CSDL chính để lưu trữ thông tín về các thành viên của câu lạc bộ.
  • Tạo ra Servlet khác để cho phép tất cà các thành viên câu lạc bộ kết nối được vào Website và được phục vụ.
  1. Thiết lập CSDL

Đầu tiên, ta có thể sử dụng Microsoft Access để tạo ra một CSD1 nhỏ, ví dụ carsSaoMai.mdb. Để sử dụng CSDL này, ta sử dụng 32-bit ODBC (chọn trong Control PanelVAdministrative ToolsVData Sources (ODBC) ). Sau khi mờ được hộp thoại ODBC Data Sources Administrator, hãy chọn System DSN và nhấn vào nút Add để đua thêm CSDL mới vào nguồn dữ liệu. Nhập tên CSDL carsSaoMai vào trường Data Source Name và nhấn vào Selection để thiết lập đường dẫn tới thư mục chứa tệp carsSaoMai.mdb.

carsSaoMai .mdb có hai bảng được thiết kế như sau.

  1. Tạo lập trang chủ và mẫu đăng ký câu lạc bộ

Ta có thể tạo ra các trang HTML cho trang chủ và các mẫu đăng ký đã được thiết kế

Lưu lại trang Web trên vào tệp carsSacMaì_HomePage. shtm. Tệp này có thêm dòng lệnh:

<servlet code = http://l28.28.10.1:8080/servlet/papeValidator.class>

</servlet>

Servlet pageValidator. class cùng với một phần mã HTML sẽ tạo ra Servlet ờ phía máy chủ. Lưu ý là cần phải thay đổi địa chỉ URL tỏi URL của Web Server của bạn.

Tệp carsSaoMai_HomePage. shtro có các điểm liên kểt tới các trang HTML bao gồm:

  • SaoMai . html: trang chứa các thông tin về câu lạc bộ.
  • html : ghi nhận các thành viên đãng ký vào câu lạc bộ
  • getRegisteredNow. html và régi St rat ionContD. html: cho phép các thành viên mới đãng kỷ vào câu lạc bộ.
  1. Viết các Servlet cho tầng trung gian

carsSaoMai.com sử dụng các Servlet để nhận được các thông tin từ Client Browser, thẩm định thông tin này, tương tác vói CSDL để chèn các bàn ghi mới, tìm trong CSDL nhũng thành viên đã đăng ký và thực hiện các dịch vụ mà các thành viên câu lạc bộ yêu cầu. Đó là các Servlet:

  • NewRegistry vàMamberDetailEnt ry: ghi nhận những thành viên mới.
  • Régis ter edMemeber: tìm trong CSDL những thành viên đã đăng ký và truy cập để xác định những thông tin cần thiết.
  1. Dịch và thực hiện chương trình ứng dụng

Tóm lại, việc tạo lập một trang Web (diễn đàn) đáp ứng các yêu cầu trên, được thực hiện các bước như sau:

  • Tạo ra một CSDL carsSaoMai.mdb, và để truy cập được vào nó thì phải cho biết tên và mật khẩu của người đã đăng ký tham gia Câu lạc bộ. CSDL này có hai bảng Login và Memebers
  • Chuyển tẩt cả các tệp HTML mà Website yêu cầu vào thư mục, ví dụ pưblic_html của Đồng thời chuyển các tệp ảnh vào thư mực này. Nhớ là phải thay đổi URL cho thích hợp như đã nêu ở trên.
  • Tiếp theo, chuyến các tệp lớp đã được dịch (.class) của các chương trình Servlet để nạp vào thư mục Servlet của Ờ đầy cũng cần nhớ là phải thay đổi URL đã chỉ ra trong các tệp . j ava trước khi dịch và chuyển chúng về thư mục \JavaWebServer2.0\servlets.
  • Khởi động Java Web Server bằng cách thực hiện exe ờ thư mục Web server\bin.
  • Khi Web Server đã hoạt động, hãy mở trình duyệt cùa bạn và gõ vào

http://localhost:8080/SaoMai homepage.shtml

  • Nếu trang Web này chưa được nạp về thì thay localhost trong URL ớ trên bằng địa chỉ IP của máy bạn, vi dụ:

http://128.28.10.1:8080/SaoMai homepaee.html Tương tự như trên nếu ta muốn thực hiện trên Web Server.