Bài giảng Lập trình mạng - Chương 8: Lập trình Web chạy ở server bằng công nghệ Microsof

pdf 60 trang ngocly 960
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình mạng - Chương 8: Lập trình Web chạy ở server bằng công nghệ Microsof", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_lap_trinh_mang_chuong_7_lap_trinh_web_chay_o_serve.pdf

Nội dung text: Bài giảng Lập trình mạng - Chương 8: Lập trình Web chạy ở server bằng công nghệ Microsof

  1. Môn học : Lập trình mạng Chương 8 LẬP TRÌNH WEB CHẠY Ở SERVER BẰNG CÔNG NGHỆ MICROSOFT 8.1 Định nghĩa DSN (Data Source Name) 8.2 CGI (Common Gateway Interface) 8.3 ISAPI Extension 8.4 ASP (Active Server Page) Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 299
  2. 8.1 Qui trình ₫ịnh nghĩa 1 DSN Trong các website của chương này, chúng ta sẽ truy xuất database. Để code truy xuất database có tính tổng quát cao, không phụ thuộc vào công nghệ quản lý database và vị trí database, chúng ta sẽ dùng DSN (Data Source Name) ₫ể nhận dạng database cấn truy xuất. Để ₫ịnh nghĩa 1 DSN trên Windows, ta vào Control Panel.Administrative Tools, cửa sổ bên sẽ hiển thị : Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 300
  3. Qui trình ₫ịnh nghĩa 1 DSN Ấn kép chuột vào mục Data Source (ODBC) ₫ể mở cửa sổ của tiện ích tươ ng ứng như hình bên. Chọn tab “System DSN” ₫ể ₫ịnh nghĩa DSN có tầm vực truy xuất cấp hệ thống (bất kỳứng dụng nào cũng truy xuất ₫ược). Chọn button Add ₫ể thêm 1 DSN mới, cửa sổ Add sẽ hiển thị như slide kế. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 301
  4. Qui trình ₫ịnh nghĩa 1 DSN Duyệt tìm driver tương thích với hệ quản trị database và chọn nó. Cuối cùng chọn button Finish, cửa sổ của slide kế sẽ hiển thị. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 302
  5. Qui trình ₫ịnh nghĩa 1 DSN Nhập tên nhận dạng DSN, chọn button Select ₫ể hiển thị cửa sổ Select Database, trên cửa sổ Select, duyệt tìm file database, ấn button OK ₫ể kết thúc qui trình Add DSN. Từ ₫ây, bất kỳứng dụng nào cũng có thể truy xuất database với tên nhận dạng là MyDatabase. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 303
  6. 8.2 Tổng quát về CGI ƒ CGI là 1 phần mềm xử lý hàng lệnh truyền thống cho phép chuyển hướng (redirection) thiết bị nhập/xuất chuẩn. Mỗi lần Web server nhận yêu cầu từ client, nó chuẩn bị dữ liệu trong 1 file nhập, thiết lập file nhập và file xuất thành 2 thiết bị I/O chuẩn của module CGI rồi kích hoạt CGI chạy. Trong quá trình chạy, CGI nhập dữ liệu từ file nhập và xuất dữ liệu ra file xuất do Server thiết lập. Sau khi CGI chạy xong, Web server sẽ lấy dữ liệu từ file xuất và gởi về client. 1. resquest 2. start 3. stdin Browser 5. reply Web CGI Server 4. stdout Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 304
  7. Tổng quát về CGI ƒ Viết1 CGIcũng giống như viết 1 ứng dụng xử lý hàng lệnh, ứng dụng này chỉ ₫ược ₫ọc dữ liệu từ thiết bị stdin và xuất dữ liệu ra stdout. Có nhiều môi trường cho phép bạn viết ứng dụng CGI, trong ₫ó môi trường VC++ là chuyên nghiệp nhất. Bạn có thể dùng loại Project “Win32 Console Application” ₫ể tạo ra ứng dụng CGI. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 305
  8. Thí dụ xây dựng 1 website bằng CGI Yêu cầu : tạo 1 website dùng công nghệ CGI cho phép người dùng tra danh bạ ₫iện thoại bằng Web Browser. Phân tích : cần 2 module chức năng : ƒ module chứa form nhập thông tin về các account cần tra. module này có thể là 1 trang HTML thuần tứy. ƒ và module truy tìm trên database các account thỏa mãn tiêu chuẩn tìm kiếm, module này là 1 ứng dụng CGI. Qui trịnh thực hiện cụ thể : ở ₫ây ta dùng môi trường lập trình VC++ 6.0. Qui trình ₫iển hình c ụ th ể ₫ược liệt kê trong các slide kế tiếp. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 306
  9. Tạo ứng dụng CGI tra ₫iện thoại 1. Chạy VC++ 6.0, chọn menu File.New.Project, chọn loại Project là “Win32 Console Application”, chọn vị trí chứa Project “Location”, nhập tên Project là CGI_TraDienthoai, ấn button Ok. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 307
  10. Tạo ứng dụng CGI tra ₫iện thoại 2. Trong cửa sổ Step 1, chọn mục “An application that supports MFC” ₫ể tạo ứng dụng hỗ trợ vi ệc dùng các class MFC, chọn button Finish ₫ể hoàn tất việc tạo Project ứng dụng. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 308
  11. Tạo ứng dụng CGI tra ₫iện thoại 3. Copy 3 file ₫ặc tả class Parse (parse.h, parse.c, t99_type.h) từ vị trí ban ₫ầu vào th ư mục chứa Project, class này cho phép ta duyệt tìm từng tham số trong chuỗi request do client gởi ₫ến ₫ể xử lý. 4. “Add” 3 file vừa copy vào Project bằng cách chọn menu Project.Add to Project.Files rồi duyệt tìm và chọn 3 file trong thư mục chứa Project. 5. Chọn tab “Files View” trong cửa sổ Project ₫ể hiển thị cây các file cấu thành Project, tìm và mở file CGI_TraDienthoai.cpp rồi viết lại hàm _tmain() và hàm d ịch v ụ Search_Print() với nội dung như các slide kế tiếp. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 309
  12. Tạo ứng dụng CGI tra ₫iện thoại int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { char *query_str; int len; char *meth_str = getenv("REQUEST_METHOD"); int nRetCode = 0; // initialize MFC and print and error on failure if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { // TODO: change error code to suit your needs cerr << _T("Fatal Error: MFC initialization failed") << endl; nRetCode = 1; } else { // TODO: code your application's behavior here. if (strcmp(meth_str,"POST")==0) { // method POST len = atoi(getenv("CONTENT_LENGTH")); if (len) { query_str = (char*)malloc(len+1); fread(query_str,1,len,stdin); query_str[len] = 0; } } else // method GET query_str = getenv("QUERY_STRING"); Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 310
  13. Tạo ứng dụng CGI tra ₫iện thoại //xuất các tag lệnh ở ₫ầu trang Web kết quả printf("Content-Type: text/html\r\n\r\n"); printf(" \n"); printf(" Danh sach cac thue bao tim duoc \n"); printf(" \n"); printf(" Ket qua tra danh ba dien thoai cua ban : \n"); //tìm kiếm và xuất kết quả tìm kiếm if(query_str && strlen(query_str)>0) { //tạo ₫ối tượ ng list ₫ể duy ệt tìm tham số Parse list( query_str ); Search_Print(&cout, list.get_item_n("tentbao"), list.get_item_n("sodthoai"),list.get_item_n("diachi")); } else { printf(" Noi dung goi ve co %d ky tu.\n",len); } //xuất các tag lệnh ở cuối trang Web kết quả printf(" \n"); printf(" \n"); } return nRetCode; } Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 311
  14. Tạo ứng dụng CGI tra ₫iện thoại // Hàm truy xuất database và xuất kết quả dạng *.htm void Search_Print (ostream* pCtxt, LPCTSTR tentbao, LPCTSTR sodthoai, LPCTSTR diachi) { char fsqlstart = 1; // Xây dựng lệnh SQL tìm kiếm CString sql(_T("Select * From danhbadienthoai")); if (tentbao && strlen(tentbao)>0) { sql += _T(" where tenthuebao like '%"); sql += _T(tentbao); sql += _T("%'"); fsqlstart = 0; } if (sodthoai && strlen(sodthoai) > 0) { if (fsqlstart) sql += _T(" where "); else sql += _T(" and "); sql += _T("sodienthoai like '%"); sql += sodthoai; sql += _T("%'"); fsqlstart = 0; } Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 312
  15. Tạo ứng dụng CGI tra ₫iện thoại if (diachi && strlen(diachi) > 0) { if (fsqlstart) sql += _T(" where "); else sql += _T(" and "); sql += _T("diachi like '%"); sql += diachi; sql += _T("%'"); fsqlstart = 0; } _RecordsetPtr Rs; char buf[256]; int nItem = 0; try { ::CoInitialize(NULL); Rs.CreateInstance (__uuidof(Recordset)); Rs->Open (_bstr_t(sql), //_bstr_t("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\Source\\danhbadthoai.mdb"), adOpenForwardOnly, adLockReadOnly, adCmdUnknown); _bstr_t("DSN=MyDatabase"), adOpenForwardOnly, adLockReadOnly, adCmdUnknown); VARIANT vTentbao,vSodthoai,vDiachi; CString m_Tentbao,m_Sodthoai, m_Diachi; Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 313
  16. Tạo ứng dụng CGI tra ₫iện thoại if (VARIANT_FALSE == Rs->GetadoEOF()) { *pCtxt \n"; *pCtxt So thu tu Ten thue bao So dien thoai Dia chi \n"; while (VARIANT_FALSE == Rs->GetadoEOF()) { vTentbao = Rs->Fields->GetItem(_variant_t((long)1))->Value; vSodthoai = Rs->Fields->GetItem(_variant_t((long)2))->Value; vDiachi = Rs->Fields->GetItem(_variant_t((long)3))->Value; m_Tentbao = vTentbao.bstrVal; m_Sodthoai = vSodthoai.bstrVal; m_Diachi = vDiachi.bstrVal; sprintf(buf, " %d %s %s %s \n", ++nItem, m_Tentbao, m_Sodthoai, m_Diachi); *pCtxt MoveNext(); } *pCtxt \n"; } if (nItem==0) *pCtxt Khong co thue bao thoa dieu kien tim kiem cua ban.\n"; } catch(_com_error &e) { // Exception handling. } Rs->Close(); Rs.Release(); } Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 314
  17. Tạo ứng dụng CGI tra ₫iện thoại 6. Thêm lệnh import sau vào ₫ầu file mã nguồn CGI_TraDienthoai.cpp ₫ể có thể dùng các ₫ối tượng ADO truy xuất database : #import "C:\Program Files\Common Files\SYSTEM\ADO\msado15.dll" no_namespace rename( "EOF", "adoEOF" ) 7. Chọn menu Build.Rebuild All ₫ể dịch các file mã nguồn và tạo file khả thi tương ứng. Nếu có lỗi từ vựng và cú pháp thì sửa. Sau khi tạo ₫ược file khả thi, hãy debug ₫ể tìm lỗi run-time nếu có. Sau khi hoàn thành, ta có ₫ược file CGI khả thi tên là CGI_TraDienthoai.exe trong tư mục Debug hay Release tùy thuộc vào chế ₫ộ dịch (chọn menu Build.Set Active Configuration ). File CGI sẽ ₫ược “publish” lên website tra danh bạ mà ta sẽ tạo ra theo ₫ặc tả của các slide kế tiếp. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 315
  18. Tạo website tra ₫iện thoại bằng InterDev 1. Chạy InterDev, khi cửa sổ New Project hiển thị, chọn Location chứa Project, nhập tên Project là TraDienthoai, ấn button Open rồi trả lời các yêu cầu trên các cửa sổ Wizard ₫ể hoàn tất việc tạo Project. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 316
  19. Tạo website tra ₫iện thoại bằng InterDev 2. Dời chuột về cửa sổ Project, ấn phải chu ột vào nút gốc ₫ể hiển thị menu pop-up chứ a các lệnh, chọn mục Add.HTML Page , nhập tên file là CGI_TraDienthoai ₫ể tạo home page cho Website tra danh bạ ₫iện thoại. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 317
  20. Tạo website tra ₫iện thoại bằng InterDev 3. Thực hiện các thao tác thiết kế trực quan ₫ể tạo trang Web có dạng nh ư hình dưới (chứa tiêu ₫ề chính và 1 form. Form có 3 textbox nhập liệu và 1 button “Bắt ₫ầu tra”). Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 318
  21. Mã nguồn HTML của trang CGI_TraDienthoai.htm Demo việc tra ₫iện thoại Tên thuê bao :  Số ₫iện thoại :  Địa chỉ :  Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 319
  22. Tạo website tra ₫iện thoại bằng InterDev 4. Copy file khả thi CGI_TraDienthoai.exe vào thư mục chứa Website. 5. Mở rộng nội dung của cây Project, chọn mục CGI_TraDienthoai.htm, ấn phải chuột trên nó rồi chọn mục “Set As Start Page” 6. thử chạy Website bằng cách chọn menu Debug.Start. Khi trang Web chứa form nhập liệu hiển thị, người dùng sẽ nhập các thông tin về account mà mình muốn tìm kiếm rồi ấn button “Bắt ₫ầu tra”. Kết qu ả tra cứu sẽ có dạng như hình ở slide kế tiếp. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 320
  23. Tạo website tra ₫iện thoại bằng InterDev Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 321
  24. 8.3 Tổng quát về ISAPI Extension ƒ Công nghệ CGI không hiệu quả vì nếu có nhiều khách hàng cùng truy xuất ₫ồng thời thì server sẽ kích hoạt chạy ₫ồng thời nhiều “instance” của ứng dụng CGI, mỗi “instance” là 1 process ₫ộc lập. Chi phí quản lý process của HĐH là khá cao. ƒ Để khắc phục khuyết ₫iểm trên, Microsoft ₫ề nghị công nghệ ISAPI Extension. Ý tưởng chính là thay vì phải viết 1 ứng dụng ₫ộc lập ₫ể xử lý 1 form từ khách hàng, ta sẽ ₫ặt ₫oạn code xử lý 1 form vào trong 1 tác vụ (hàm), ₫ặt hàm này (và nhiều hàm xử lý form khác) vào trong cùng 1 thư viện *.dll (Microsoft dùng thuật ngữ ISAPI Extension ₫ể miêu tả thư viện này). ƒ Mỗi khi có yêu cầu từ client, Web server sẽ liên kết ₫ộng với thư viện và gọi hàm xử lý form thích hợp, như vậy không cần phải tạo thêm process mới. Kết quả là ₫ộ hiệu quả ₫ược nâng cao rất nhiều so với công nghệ CGI. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 322
  25. Tổng quát về ISAPI Extension 1. resquest 2. Call Func1 (parin, parout) Browser Func2 3. reply Web Server Func3 ISAPI Extension ƒ Hiện môi trường VC++ 6.0 hỗ trợ việc xây dựng ISAPI Extension rất tốt. Bạn có thể dùng loại Project “ISAPI Extension Wizard” ₫ể tạo ra 1 ISAPI Extension/ISAPI Filter. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 323
  26. Nhập/xuất thông tin của ISAPI Extension ƒ Mỗi hàm xử lý form trong ISAPI Extension có nhiều tham số hình thức, trong ₫ótham số ₫ầu tiên pCtxt miêu tả ₫ối tượng xuất thông tin, còn các tham số còn lại miêu tả các dữ liệu nhập từ Form. //₫ặc tả hàm TraDthoai() phục vụ việc tra ₫iện thoại ON_PARSE_COMMAND(TraDthoai, CMyISAPIExtension, ITS_PSTR I TS_PSTR I TS_PSTR) ON_PARSE_COMMAND_PARAMS("tentbao sodthoai diachi") ƒ Việc truy xuất dữ liệu nhập luôn thông qua tham số hình thức tương ứng. ƒ Mỗi lần cần xuất kết quả, ta dùng lệnh có dạng : *pCxt << “chuỗi cần xuất”; Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Slide 324
  27. Thí dụ xây dựng 1 webiste bằng ISAPI Yêu cầu : tạo 1 website dùng công nghệ ISAPI Extension cho phép người dùng tra danh bạ ₫iện thoại bằng Web Browser. Phân tích : cần 2 module chức năng : ƒ module chứa form nhập thông tin về các account cần tra, module này có thể là 1 trang HTML thuần tứy. ƒ và module ISAPI Extension, module này chứa ít nhất 1 hàm TraDthoai() có chức năng truy tìm trên database các account thỏa mãn tiêu chuẩn tìm kiếm. Qui trịnh thực hiện cụ thể : ở ₫ây ta dùng môi trường lập trình VC++ 6.0. Qui trình ₫iển hình c ụ th ể ₫ược liệt kê trong các slide kế tiếp. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 325
  28. Tạo ISAPI Extention tra ₫iện thoại 1. Chạy VC++ 6.0, chọn menu File.New.Project, chọn loại Project là “ISAPI Extension Wizard”, chọn vị trí chứa Project “Location”, nhập tên Project là ISAPI_TraDienth oai, ấn button Ok. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 326
  29. Tạo ISAPI Extension tra ₫iện thoại 2. Trong cửa sổ Step 1, chọn mục “Generate a Server Extension object” ₫ể tạo module ISAPI Extension, chọn button Finish ₫ể hoàn tất việc tạo Project. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 327
  30. Tạo ISAPI Extension tra ₫iện thoại 3. Chọn tab Class View trong cửa sổ Project ₫ể hiển thị các class c ấu thành ISAPI, mở rộng cây Project, ấn kép chuột vào mục ISAPI_TraDienthoaiE xtension ₫ể mở cửa sổ soạn code của ISAPI như hình bên. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 328
  31. Tạo ISAPI Extension tra ₫iện thoại 4. ISAPI là 1 thư viện chứa nhiều tác vụ, mỗi tác vụ ₫ược khai báo trong macro BEGIN_PARSE_MAP : BEGIN_PARSE_MAP(CISAPI_TraDienthoaiExtension, CHttpServer) // TODO: insert your ON_PARSE_COMMAND() and // ON_PARSE_COMMAND_PARAMS() here to hook up your commands. // For example: ON_PARSE_COMMAND(Default, CISAPI_TraDienthoaiExtension, ITS_EMPTY) DEFAULT_PARSE_COMMAND(Default, CISAPI_TraDienthoaiExtension) END_PARSE_MAP(CISAPI_TraDienthoaiExtension) //₫ặc tả hàm TraDthoai() phục vụ việc tra ₫iện thoại ON_PARSE_COMMAND(TraDthoai,CISAP I_TraDienthoaiExtension,ITS_PSTR ITS_PSTR ITS_PSTR) ON_PARSE_COMMAND_PARAMS("tentbao sodthoai diachi") END_PARSE_MAP(CISAPI_TraDienthoaiExtensio) Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 329
  32. Tạo ISAPI Extension tra ₫iện thoại 5. Viết code cho từng tác vụ vừa ₫ặc tả : void CISAPI_TraDienthoaiExtension::TraDthoai(CHttpServerContext* pCtxt, LPCTSTR tentbao,LPCTSTR sodthoai,LPCTSTR diachi) { StartContent(pCtxt); WriteTitle(pCtxt); *pCtxt Ket qua tra danh ba dien thoai cua ban : \n"; //gọi hàm Search_Print tìm và xuất kết quả tìm kiếm Search_Print(pCtxt, tentbao, sodthoai, diachi); *pCtxt << " \n"; EndContent(pCtxt); } Thêm lệnh import sau vào ₫ầu file mã nguồn ISAPI_TraDienthoai.cpp ₫ể có thể dùng các ₫ối tượng ADO truy xuất database : #import "C:\Program Files\Common Files\SYSTEM\ADO\msado15.dll" no_namespace rename( "EOF", "adoEOF" ) Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 330
  33. Tạo ISAPI Extension tra ₫iện thoại Viết code cho hàm dịch vụ Search_Print() : // Truy xuat database void CISAPI_TraDienthoaiExtension::Searc h_Print (CHttpServerContext* pCtxt, LPCTSTR tentbao, LPCTSTR sodthoai, LPCTSTR diachi) { //nội dung y như hàm Search_Print() trong ứng dụng CGI ở phần trước. } 6. Mở file ISAPI_TraDienthoai.h, rồi thêm 2 lệnh khai báo hàm vừa viết vào class CISAPI_TraDienthoaiExtension : class CISAPI_TraDienthoaiExtens ion : public CHttpServer { public: CISAPI_TraDienthoaiExtension(); ~CISAPI_TraDienthoaiExtension(); void CISAPI_TraDienthoaiExtension::TraDthoai(CHttpServerContext* pCtxt, LPCTSTR tentbao,LPCTSTR sodthoai,LPCTSTR diachi); void CISAPI_TraDienthoaiExtension::Search_Print (CHttpServerContext* pCtxt, LPCTSTR tentbao, LPCTSTR sodthoai, LPCTSTR diachi); } Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 331
  34. Tạo ISAPI Extension tra ₫iện thoại 7. Chọn menu Build.Rebuild All ₫ể dịch các file mã nguồn và tạo file khả thi tương ứng. Nếu có lỗi từ vựng và cú pháp thì sửa. Sau khi tạo ₫ược file khả thi, hãy debug ₫ể tìm lỗi run-time nếu có. Sau khi hoàn thành, ta có ₫ược file ISAPI khả thi tên là ISAPI_TraDienthoai.dll trong tư mục Debug hay Release tùy thuộc vào chế ₫ộ dịch (chọn menu Build.Set Active Configuration ). File ISAPI sẽ ₫ượ c “publish” lên website tra danh bạ mà ta sẽ tạo ra theo ₫ặc tả của các slide kế ti ếp. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 332
  35. Tạo website tra ₫iện thoại bằng InterDev 1. Chạy InterDev, khi cửa sổ New Project hiển thị, chọn Location chứa Project, nhập tên Project là TraDienthoai, ấn button Open rồi trả lời các yêu cầu trên các cửa sổ Wizard ₫ể hoàn tất việc tạo Project (hoặc mở lại Project ₫ã tạo trong phần CGI). Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 333
  36. Tạo website tra ₫iện thoại bằng InterDev 2. Dời chuột về cửa sổ Project, ấn phải chu ột vào nút gốc ₫ể hiển thị menu pop-up chứ a các lệnh, chọn mục Add.HTML Page , nhập tên file là ISAPI_TraDienthoai ₫ể tạo home page cho Website tra danh bạ ₫iện thoại. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 334
  37. Tạo website tra ₫iện thoại bằng InterDev 3. Thực hiện các thao tác thiết kế trực quan ₫ể tạo trang Web có dạng nh ư hình dưới (chứa tiêu ₫ề chính và 1 form. Form có 3 textbox nhập liệu và 1 button “Bắt ₫ầu tra”). Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 335
  38. Mã nguồn HTML của trang ISAPI_TraDienthoai.htm Demo việc tra ₫iện thoại Tên thuê bao :  Số ₫iện thoại :  Địa chỉ :  Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 336
  39. Tạo website tra ₫iện thoại bằng InterDev 4. Copy module ISAPI_TraDienthoai.dll vào thư mục chứa Website. 5. Mở rộng nội dung của cây Project, chọn mục ISAPI_TraDienthoai.htm, ấn phải chuột trên nó rồi chọn mục “Set As Start Page” 6. thử chạy Website bằng cách chọn menu Debug.Start. Khi trang Web chứa form nhập liệu hiển thị, người dùng sẽ nhập các thông tin về account mà mình muốn tìm kiếm rồi ấn button “Bắt ₫ầu tra”. Kết qu ả tra cứu sẽ có dạng như hình ở slide kế tiếp. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 337
  40. Tạo website tra ₫iện thoại bằng InterDev Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 338
  41. 8.4 Tổng quát về ASP ƒ ASP (Active Server Page) là công nghệ script chạy ở máy server của Microsoft tương tự với JSP của SUN hay PHP. ƒ Hiện ASP có thể chạy trên IIS của Microsoft. ƒ Một trang ASP là trang HTML có tăng cường 1 số ₫oạn script viết bằng VBScript hay JavaScript. ƒ Để server nhận biết ₫ược file nào là ASP, ta luôn dùng extension ₫ã qui ₫ịnh theo cấu hình (mặc ₫ịnh là *.asp). ƒ Đoạn script ASP ₫ược ₫óng trong tag hay tag ƒ ASP thường dùng các ₫ối tượng COM chính quy ₫ể xử lý các giải thuật phức tạp. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 339
  42. Nhập/xuất thông tin của ASP ƒ Đối tượng ₫ịnh sẵn có tên là Request sẽ hỗ trợ việc nhập thông tin từ client gởi về từ URL yêu cầu hay từ Form nhập liệu. Thí dụ tham số client gởi về có tên là txtTenthuebao, muốn ASP ₫ọc giá trị của tham số này, ta viết lệnh như sau : tentbao = Request.Form("txtTenthuebao") ƒ Đối tượng ₫ịnh sẵn có tên là Response sẽ hỗ trợ việc xuất thông tin từ ₫oạn code ASP về client. Thí dụ ₫oạn script ASP sau sẽ xuất hàng chữ “Đây là kết quả thực hiện ₫oạn script ASP” : Đây là kết quả thực hiện ₫oạn script ASP. " %> Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 340
  43. Thí dụ xây dựng 1 webiste bằng ASP Yêu cầu : tạo 1 website dùng công nghệ ASP cho phép người dùng tra danh bạ ₫iện thoại bằng Web Browser. Phân tích : cần 2 module chức năng : ƒ module chứa form nhập thông tin về các account cần tra, module này có thể là 1 trang HTML thuần tứy. ƒ và module truy tìm trên database các account thỏa mãn tiêu chuẩn tìm kiếm, module này là 1 trang ASP theo yêu cầu. Qui trịnh thực hiện cụ thể : ở ₫ây ta dùng môi trường lập trình InterDev của Microsoft. Qui trình ₫iển hình cụ thể ₫ược liệt kê trong các slide kế tiếp. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 341
  44. Tạo website tra ₫iện thoại bằng InterDev 1. Chạy InterDev, khi cửa sổ New Project hiển thị, chọn Location chứa Project, nhập tên Project là TraDienthoai, ấn button Open rồi trả lời các yêu cầu trên các cửa sổ Wizard ₫ể hoàn tất việc tạo Project (hoặc mở lại Project ₫ã tạo trong phần CGI). Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 342
  45. Tạo website tra ₫iện thoại bằng InterDev 2. Dời chuột về cửa sổ Project, ấn phải chuột vào nút gốc ₫ể hiển thị menu pop-up ch ứa các lệnh, chọn mục Add.HTML Page , nhập tên file là ASP_TraDienthoai ₫ể tạo home page cho Website tra danh bạ ₫iện thoại. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 343
  46. Tạo website tra ₫iện thoại bằng InterDev 3. Thực hiện các thao tác thiết kế trực quan ₫ể tạo trang Web có dạng nh ư hình dưới (chứa tiêu ₫ề chính và 1 form. Form có 3 textbox nhập liệu và 1 button “Bắt ₫ầu tra”). Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 344
  47. Mã nguồn HTML của trang ASP_TraDienthoai.htm Demo việc tra ₫iện thoại Tên thuê bao :  Số ₫iện thoại :  Địa chỉ :  Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 345
  48. Tạo website tra ₫iện thoại bằng InterDev 4. Dời chuột về cửa sổ Project, ấn phải chuột vào nút gốc ₫ể hiển thị menu pop-up ch ứa các lệnh, chọn mục Add.Active Server Page , nhập tên file là ASP_TraDienthoai.asp : Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 346
  49. Tạo website tra ₫iện thoại bằng InterDev 5. Soạn nội dung cho trang ASP như hình bên, ₫ể tạo ₫ối tượng Recordset, ta hiển thị cửa sổ ToolBox, chọn và drag phần tử Recordset từ Toolbox vào vị trí thích hợp trong trang ASP, sau ₫ó ấn button Yes trong cửa sổ Warning : Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 347
  50. Tạo website tra ₫iện thoại bằng InterDev 6. Tiếp tục tạo ₫ố i tượng DataGrid ₫ể hiển thị kết quả tìm kiếm, ta hiển thị cửa sổ ToolBox, chọn và drag phần tử Grid từ Toolbox vào vị trí thích hợp trong trang ASP. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 348
  51. Tạo website tra ₫iện thoại bằng InterDev 7. Tạo ₫ối tượng Conenction nối kết với database cấn truy xuất cho Website bằng cách dời chuột về cửa sổ Project, ấn ph ải chuột vào nút gốc ₫ể hiển thị menu pop-up ch ứa các lệnh, chọn mục Add Data Connection. Cửa sổ hình bên sẽ hiển thị, chọ n tab “Machine Data Source”, chọn DSN MyDatabase rồi ấn OK. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 349
  52. Tạo website tra ₫iện thoại bằng InterDev 8. Khi cửa sổ hình bên hiể n thị, hãy tham khảo và hiệu chỉnh các thuộ c tính cần thiết, thí dụ hãy ₫ặt tên nhận dạng cho Connection là MyDatabase rồi ấn button Apply, OK. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 350
  53. Tạo website tra ₫iện thoại bằng InterDev 9. Quay lại trang ASP ₫ang soạn thảo, chọn ₫ối tượng Recordset, chọn menu View.Properties Page ₫ể hiển thị cửa sổ thuộc tính của Recordset. Hãy xem và thay ₫ổi 1 số thuộc tính cần thiết, thí d ụ ₫ặt tên nhận dạ ng là Rs_Danhdadienthoai, chọn chế ₫ộ “SQL statement”, nhập lệnh truy vấn như hình bên. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 351
  54. Tạo website tra ₫iện thoại bằng InterDev 10. Chọn ₫ối tượng DataGrid, chọn menu View.Properties Page ₫ể hiển thị cửa sổ thuộc tính của DataGrid. Hãy xem và thay ₫ổi 1 số thuộc tính cần thiết, thí d ụ ₫ặt tên nhận dạng là DbGrid, chọn Recordset kết hợp, chọn các field cần hiển thị, rồi ấn button Apply, OK. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 352
  55. Tạo website tra ₫iện thoại bằng InterDev 11. Thiết lập lại 1 cách trực quan ₫ộ rộng của từng cột trong datagrid ₫ể hiển thị nội dung của cột ₫ó cho phù hợp (thí dụ cho cột Điachi r ộng càng nhiều càng tốt. Tạo 1 liên kết về trang chủ ở cuố i trang ASP. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 353
  56. Tạo website tra ₫iện thoại bằng InterDev 12. Chọn tab Source ₫ể hiển thị cửa sổ soạn code trang ASP, chọn tab Toolbox ₫ể hiển thị cửa sổ Toolbox. Trong cửa sổ Toolbox, mở rộng, duy ệt tìm trong cây ₫ối tượng và ấn kép chuột vào mục onbeforeopen của ₫ối tượng Rs_Danhbadienthoai ₫ể tạo thủ tục xử lý sự kiện tương ứ ng. Sau ₫óvi ết code cho thủ tục như các slide kế tiếp. Bộ môn : Công ngh ệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 354
  57. Tạo website tra ₫iện thoại bằng InterDev Sub Rs_Danhbadienthoai_onbeforeopen() fsqlstart = 1 tentbao = Request.Form("tentbao") sodthoai = Request.Form("sodthoai") diachi = Request.Form("diachi") newSQL="SELECT * FROM Danhbadienthoai" if tentbao "" then if fsqlstart = 1 then newSQL = newSQL + " where sodienthoai like '%" + sodthoai + "%'" else newSQL = newSQL + " and sodtienhoai like '%" + sodthoai + "%'" end if fsqlstart = 0 end if Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 355
  58. Tạo website tra ₫iện thoại bằng InterDev if diachi <> "" then if fsqlstart = 1 then newSQL = newSQL + " where diachi like '%" + diachi + "%'" else newSQL = newSQL + " and diachi like '%" + diachi + "%'" end if fsqlstart = 0 end if Rs_Danhbadienthoai.setSQLText(newSQL) End Sub Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 356
  59. Tạo website tra ₫iện thoại bằng InterDev 13. Vào cửa sổ Project, chọn mục ASP_TraDienthoai.htm, ấn phải chuột trên nó rồi chọn mục “Set As Start Page” 14. thử chạy Website bằng cách chọn menu Debug.Start. Khi trang Web chứa form nhập liệu hiển thị, người dùng sẽ nhập các thông tin về account mà mình muốn tìm kiếm rồ i ấn button “Bắt ₫ầu tra”. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 357
  60. Tạo website tra ₫iện thoại bằng InterDev 15. Kết quả tra cứu có dạ ng như hình bên. Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Khoa Công nghệ Thông tin Chương 8 : Lập trình Web chạy ở server dùng công nghệ Microsoft Trường ĐH Bách Khoa Tp.HCM Slide 358