Bài giảng Lập trình mạng - Chương 10: Lập trình web chạy ở server bằng Java

pdf 57 trang ngocly 1760
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 10: Lập trình web chạy ở server bằng Java", để 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_10_lap_trinh_web_chay_o_serv.pdf

Nội dung text: Bài giảng Lập trình mạng - Chương 10: Lập trình web chạy ở server bằng Java

  1. Môn học : Lập trình mạng Chương 10 LẬP TRÌNH WEB CHẠY Ở SERVER BẰNG JAVA 10.1 Servlet Java 10.2 JSP 10.3 JSP & JavaBean 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 10 : Lập trình Web chạy ở server dùng công nghệ Java Trường ĐH Bách Khoa Tp.HCM Slide 378
  2. 10.1 Tổng quát về Servlet Java ƒ Servlet là ₫ối tượng Java (giống như Applet), nhưng không có giao diện người dùng, nó chạy trên máy server, giao tiếp với client của nó thông qua việc gởi nhận request/response. ƒ Viết 1 servlet cũng giống như 1 class Java bình thường khác, nhưng Servlet phải là class con của class HttpServlet và thường phải override 1 hay cả 2 method doGet() và doPost(). Template của 1 servlet : public class MyServlet extends HttpServlet { // tác vụ xử lý HTTP Get request public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } // tác vụ xử lý HTTP Post request public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } } 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 379
  3. Nhập/xuất thông tin của Servlet Java ƒ tham số request của 2 tác vụ doGet() & doPost() cho phép Servlet truy xuất thông tin ₫ược gởi về từ URL yêu cầu hay từ Form nhập liệu. Cách thức truy xuất tham số như sau : String tentbao = request.getParameter("txtTenthuebao"); ƒ tham số response của 2 tác vụ doGet() & doPost() cho phép Servlet xuất thông tin gởi vềứng dụng client. Cách thức xuất kết quả như sau : 'tìm ₫ối tượng xuất PrintWriter out = response.getWriter(); 'xuất kết quả out.println("chuỗi kết quả"); 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 380
  4. Thí dụ xây dựng 1 website bằng Servlet Yêu cầu : tạ o 1 website dùng công nghệ Servlet Java 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 Servlet 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 JBuilder 2005. 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 Trường ĐH Bách Khoa Tp.HCM Slide 381
  5. Tạo website tra ₫iện thoại bằng Servlet trên JBuilder 1. Chạy JBuilder 2005, chọn menu File.New Project rồi trả lời các cửa sổ Wizard ₫ể tạo 1 project mới quản lý Website. Lưu ý trong cửa sổ Step 1, chọn thư mục và nhập tên Project quản lý Website là ServletDBDT. 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 382
  6. Tạo website tra ₫iện thoại bằng Servlet trên JBuilder 2. chọn menu File.New ₫ể hiển thị cửa sổ Object Gallery như hình bên. chọn nhóm Web, chọn icon Web Module ₫ể tạo Website. 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 383
  7. Tạo website tra ₫iện thoại bằng Servlet trên JBuilder 2.1 khi cửa sổ "Select Server " hiển thị nh ư hình bên, bạn ấn dấu chọn vào checkbox "Single server ", chọn server "Tomcat 5.0" rồi ấ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 Trường ĐH Bách Khoa Tp.HCM Slide 384
  8. Tạo website tra ₫iện thoại bằng Servlet trên JBuilder 3. chọn menu File.New ₫ể hiển thị cửa sổ Object Gallery như hình bên. Chọn nhóm Web, chọn icon Standard Servlet ₫ể tạo Servlet tra account danh bạ ₫iện thoại, rồi ấ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 Trường ĐH Bách Khoa Tp.HCM Slide 385
  9. Tạo website tra ₫iện thoại bằng Servlet trên JBuilder 3.1 trong cửa sổ Step 1 của qui trình Wizard tạo Servlet, bạn nhập tên servlet là ServletDBDT, rồi ấn button Next ₫ể tiếp tục Step 2. 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 386
  10. Tạo website tra ₫iện thoại bằng Servlet trên JBuilder 3.2 trong cửa sổ Step 2 của qui trình Wizard tạo Servlet, bạn ấn dấu chọn vào 2 checkbox doGet() và doPost() ₫ể tạo 2 tác vụ xử lý tương ứng, rồi ấn button Finish ₫ể hoàn tất việc tạo Servlet. 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 387
  11. Viết code cho 2 tác vụ doGet() & doPost() của Servlet //code ₫ầy ₫ủ của servlet package servlettradbdt; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; import java.sql.*; public class ServletTraDBDT extends HttpServlet { public ServletTraDBDT() { try { jbInit(); } catch (Exception ex) { ex.printStackTrace(); } } //₫ịnh nghĩa các thuộc tính cần dùng cho Servlet private static final String CONTENT_TYPE = "text/html; charset=UTF-8"; private Connection con; 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 388
  12. Viết code cho 2 tác vụ doGet() & doPost() của Servlet //tác vụ khởi ₫ộng các thuộc tính public void init() throws ServletException { } //tác vụ xử lý yêu cầu HTTP Post public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //gọi tác vụ doGet() tực hiện doGet(request,response); } //tác vụ dọn dẹp các thuộc tính trước khi servlet bị xóa public void destroy() { } //tác vụ khởi ₫ộng ₫ược gọi từ init() private void jbInit() throws Exception { } 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 389
  13. Viết code cho 2 tác vụ doGet() & doPost() của Servlet //tác vụ xử lý yêu cầu HTTP Get public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); PrintWriter out = response.getWriter(); //tạo các tag HTML ở ₫ầu trang web kết quả out.println(" "); out.println(" SearchAccount "); out.println(" "); out.println(" Kết quả tra ₫iện thoại theo yêu cầu của bạn : "); //tìm nội dung các tham số ₫ược truyền qua Servlet String tentbao = request.getParameter("txtTenthuebao"); String sodthoai = request.getParameter("txtSodienthoai"); String diachi = request.getParameter("txtDiachi"); // xây dựng lệnh SQL tìm kiếm boolean fsqlstart = true; String newSQL = "SELECT * FROM danhbadienthoai"; 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 390
  14. Viết code cho 2 tác vụ doGet() & doPost() của Servlet if (tentbao != null) { if (tentbao.length() != 0) { newSQL = newSQL + " where tenthuebao like '%" + tentbao + "%'"; fsqlstart = false; } } if (sodthoai != null) { if (sodthoai.length() != 0) { if (fsqlstart) { newSQL = newSQL + " where sodienthoai like '%" + sodthoai + "%'"; } else { newSQL = newSQL + " and sodienthoai like '%" + sodthoai + "%'"; } fsqlstart = false; } } 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 391
  15. Viết code cho 2 tác vụ doGet() & doPost() của Servlet if (diachi != null) { if (diachi.length() != 0) { if (fsqlstart) { newSQL = newSQL + " where diachi like '%" + diachi + "%'"; } else { newSQL = newSQL + " and diachi like '%" + diachi + "%'"; } fsqlstart = false; } } //xây dựng chuỗi ConnectionString truy xuất database dùng DSN String conStr = "jdbc:odbc:MyDatabase"; //₫ịnh nghĩa các biến cần dùng Statement stmt = null; ResultSet rs = null; 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 392
  16. Viết code cho 2 tác vụ doGet() & doPost() của Servlet try { //kết nối database, thực thi lệnh SQL, kết quả chứa trong rs Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection(conStr, "", ""); stmt = con.createStatement(); rs = stmt.executeQuery(newSQL); int i = 1; if (rs != null && rs.next()) { //nếu có ít nhất 1 account, tạo bảng dữ liệu, hàng tiêu ₫ề và hàng dữ liệu ₫ầu tiên out.println(" "); out.println(" Số thự tự Tên thuê bao Số ₫iện thoại Địa chỉ \n"); out.println(" " + i++ +" " + rs.getString(2) + " " + rs.getString(3) + " " + rs.getString("diachi") + " \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 Trường ĐH Bách Khoa Tp.HCM Slide 393
  17. Viết code cho 2 tác vụ doGet() & doPost() của Servlet while (rs.next()) { //lập xu ất từng hàng kết quả còn lại out.println(" " + i++ +" " + rs.getString(2) + " " + rs.getString(3) + " " + rs.getString("diachi") + " \n"); } out.println(" "); } else out.println(" Khong tim duoc account nao thoa yeu cau cua ban "); } catch (Exception e) { System.out.println("Error : " + e); } 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 394
  18. Viết code cho 2 tác vụ doGet() & doPost() của Servlet //₫óng các ₫ối tượng ₫ã dùng lại finally { if (rs != null) { try { rs.close(); } catch (Exception _ex) { System.out.println("Exception: " + _ex); } } if (stmt != null) { try { stmt.close(); } catch (Exception _ex) { System.out.println("Exception: " + _ex); } } } //xuất tag liên kết về trang chủ chứa form nhập liệu out.println(" "); out.println(" "); } 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 395
  19. Tạo trang chủ chứa form nhập liệu cần tra 4. chọn menu File.New File ₫ể hiển thị cửa sổ "Create New File" như hình dướ i ₫ây. Chọn thư mục chứa file (lưu ý ₫ể server Tomcat quản lý ₫úng Website, bạn phải chọn thư mục có chứa thư mục con là WEB-INF), nhập tên file HTML là "InputForm", duyệt tìm và chọn Type file là html. 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 396
  20. Viết code cho trang chủ chứa form Trang Web demo việc tra danh bạ ₫iện thoại   Nhập thông tin về tên thuê bao : Nhập thông tin về số ₫iện thoại : Nhập thông tin về ₫ị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 Trường ĐH Bách Khoa Tp.HCM Slide 397
  21. Kết quả chạy Servlet ServletDBDT (chọn menu Run.Run 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 1: Lập trình Web chạy ở server dùng Servlet java Trường ĐH Bách Khoa Tp.HCM Slide 398
  22. Kết quả chạy file InputForm (chọn "Quay ve trang chu") 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 1: Lập trình Web chạy ở server dùng Servlet java Trường ĐH Bách Khoa Tp.HCM Slide 399
  23. 10.2 Tổng quát về JSP ƒ JSP là công nghệ script chạy ở máy server củ a SUN tương tự với ASP của Microsoft hay PHP. ƒ Hiện JSP có thể chạy trên nhiều Web server khác nhau từ Tomcat, Apache, Jrun, JavaWebServer, ƒ Một trang JSP là trang HTML có tăng cường 1 số ₫oạn script viết bằng Java. ƒ Để server nhận biết ₫ược file nào là JSP, ta luôn dùng extension ₫ã qui ₫ịnh theo cấu hình (mặc ₫ịnh là *.jsp). ƒ Đoạn script JSP ₫ược ₫óng trong tag . ƒ JSP thường dùng các ₫ối tượng Java chính quy ₫ể xử lý các giải thuật phức tạp. Các ₫ối tượng java này sẽ ₫ược ₫óng gói trong module JavaBean. 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 400
  24. Cách viết trang JSP Trước hết cần lưu ý rằng trang JSP sẽ ₫ược dịch ra thành 1 Servlet Java trước khi ₫ược thực thi. Trang JSP là trang HTML có tăng cường 1 số ₫oạn mã Java, mỗi ₫oạn mã java thuộc 1 trong 3 loại sau : 1. Biểu thức có dạng , khi chạy biểu thức ₫ược tính và kết qu ả sẽ ₫ược thay thế vào vị trí của mã nguồn. 2. Đoạn script có dạng , sẽ ₫ượ c thêm vào tác vụ _jspService của Servlet kết quả, tác vụ này sẽ ₫ược gọi bởi tác vụ service (là tác vụ ₫óng vai trò như tác vụ doGet hay doPut)._ 3. Khai báo có d ạng , sẽ ₫ược thêm vào thân của Servlet nhưng nằm ngoài bất kỳ tác vụ nào. 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 401
  25. Nhập/xuất thông tin của Servlet Java ƒ tham số request của 2 tác vụ doGet() & doPost() cho phép Servlet truy xuất thông tin ₫ược gởi về từ URL yêu cầu hay từ Form nhập liệu. Cách thức truy xuất tham số như sau : String tentbao = request.getParameter("txtTenthuebao"); ƒ tham số response của 2 tác vụ doGet() & doPost() cho phép Servlet xuất thông tin gởi vềứng dụng client. Cách thức xuất kết quả như sau : 'tìm ₫ối tượng xuất PrintWriter out = response.getWriter(); 'xuất kết quả out.println("chuỗi kết quả"); 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 402
  26. Thí dụ xây dựng 1 webiste bằng JSP Yêu cầu : tạo 1 website dùng công nghệ JSP 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 JSP 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 JBuilder 2005. 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 1: Lập trình Web chạy ở server dùng PHP Trường ĐH Bách Khoa Tp.HCM Slide 403
  27. Tạo website tra ₫iện thoại bằng JSP trên JBuilder 1. Chạy JBuilder 2005, chọn menu File.New Project rồi trả lời các cửa sổ Wizard ₫ể tạo 1 project mới quản lý Website. Lưu ý trong cửa sổ Step 1, chọn thư mục và nhập tên Project quản lý Website là JSPDBDT. 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 1: Lập trình Web chạy ở server dùng Servlet java Trường ĐH Bách Khoa Tp.HCM Slide 404
  28. Tạo website tra ₫iện thoại bằng JSP trên JBuilder 2. chọn menu File.New ₫ể hiển thị cửa sổ Object Gallery như hình bên. chọn nhóm Web, chọn icon Web Module ₫ể tạo Website. 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 1: Lập trình Web chạy ở server dùng Servlet java Trường ĐH Bách Khoa Tp.HCM Slide 405
  29. Tạo website tra ₫iện thoại bằng JSP trên JBuilder 2.1 khi cửa sổ "Select Server " hiển thị nh ư hình bên, bạn ấn dấu chọn vào checkbox "Single server ", chọn server "Tomcat 5.0" rồi ấ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 Trường ĐH Bách Khoa Tp.HCM Slide 406
  30. Tạo website tra ₫iện thoại bằng JSP trên JBuilder 3. chọn menu File.New ₫ể hiển thị cửa sổ Object Gallery như hình bên. Chọn nhóm Web, chọn icon JSP ₫ể tạo 1 trang JSP tra account danh bạ ₫iện thoại, rồi ấ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 Trường ĐH Bách Khoa Tp.HCM Slide 407
  31. Tạo website tra ₫iện thoại bằng JSP trên JBuilder 3.1 trong cửa sổ Step 1 của qui trình JSP Wizard, bạn nhập tên cho trang JSP là JSPTraDBDT, rồi ấn button Next ₫ể tiếp tục Step 2 (hay button Finish ₫ể chấp nhận các thông số mặc ₫ịnh cho các b ước còn lạ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 Trường ĐH Bách Khoa Tp.HCM Slide 408
  32. Viết code cho trang JSP như sau <%! public String SearchAccount (String tentbao, String sodthoai, String diachi) { StringBuffer table = new StringBuffer(); Connection con; // xây dựng lệnh SQL tìm kiếm theo yêu cầu người dùng boolean fsqlstart = true; String newSQL = "SELECT * FROM danhbadienthoai"; if (tentbao != null) if (tentbao.length() != 0) { newSQL = newSQL + " where tenthuebao like '%" + tentbao + "%'"; fsqlstart = false; } 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 409
  33. Code của trang JSP (tt) if (sodthoai != null) if (sodthoai.length() != 0) { if (fsqlstart) newSQL = newSQL + " where sodienthoai like '%" + sodthoai + "%'"; else newSQL = newSQL + " and sodienthoai like '%" + sodthoai + "%'"; fsqlstart = false; } if (diachi != null)if (diachi.length() != 0) { if (fsqlstart) newSQL = newSQL + " where diachi like '%" + diachi + "%'"; else newSQL = newSQL + " and diachi like '%" + diachi + "%'"; fsqlstart = false; } //xây dựng chuỗi ConnectionString truy xuất database dùng DSN String conStr = "jdbc:odbc: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 Trường ĐH Bách Khoa Tp.HCM Slide 410
  34. Code của trang JSP (tt) try { // tạo connection ₫ến database, // thực hiện lệnh SQL, kết quả trả về trong recordset rs Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection(conStr,"",""); Statement stmt = con.createStatement(); ResultSet rs =stmt.executeQuery(newSQL); int i = 1; if (rs != null && rs.next()) { //nếu có ít nhất 1 account, tạo bảng, tạo tiêu ₫ề và hàng miêu tả account ₫ầu tiên table.append(" "); table.append(" So thu tu Ten thue bao So dien thoai Dia chi \n"); table.append(" " + i++ +" " + rs.getString(2) + " " + rs.getString(3) + " " + rs.getString("diachi") + " \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 Trường ĐH Bách Khoa Tp.HCM Slide 411
  35. Code của trang JSP (tt) //lặp xuất từng hàng thông tin account còn lại while (rs.next()) { table.append(" " + i++ +" " + rs.getString(2) + " " + rs.getString(3) + " " + rs.getString("diachi") + " \n"); } table.append(" "); } else table.append(" Không có account nào thỏa yêu cầu tìm kiếm! \n"); //₫óng các ₫ối tượng ₫ã dùng lại rs.close(); stmt.close(); con.close(); } catch(Exception e){System.out.println("Error : "+e);} return table.toString(); } %> 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 412
  36. Code của trang JSP (tt) JSPTraDBDT Kết quả tra danh bạ theo yêu cầu của 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 Trường ĐH Bách Khoa Tp.HCM Slide 413
  37. Tạo trang chủ chứa form nhập liệu cần tra 4. chọn menu File.New File ₫ể hiển thị cửa sổ "Create New File" như hình dướ i ₫ây. Chọn thư mục chứa file (lưu ý ₫ể server Tomcat quản lý ₫úng Website, bạn phải chọn thư mục có chứa thư mục con là WEB-INF), nhập tên file HTML là "JSPInputForm", duyệ t tìm và chọn Type file là html. 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 414
  38. Viết code cho trang chủ chứa form Trang Web demo việc tra danh bạ ₫iện thoại Nhập thông tin về tên thuê bao : Nhập thông tin về số ₫iện thoại : Nhập thông tin về ₫ị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 Trường ĐH Bách Khoa Tp.HCM Slide 415
  39. Kết quả chạy trang JSP (chọn menu Run.Run 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 1: Lập trình Web chạy ở server dùng Servlet java Trường ĐH Bách Khoa Tp.HCM Slide 416
  40. Kết quả chạy file JSPInputForm (chọn "Quay ve trang chu") 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 1: Lập trình Web chạy ở server dùng Servlet java Trường ĐH Bách Khoa Tp.HCM Slide 417
  41. Thí dụ xây dựng 1 webiste bằng JSP Yêu cầu : tạo 1 website dùng công nghệ JSP 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 JSP 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 JBuilder 2005. 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 1: Lập trình Web chạy ở server dùng PHP Trường ĐH Bách Khoa Tp.HCM Slide 418
  42. Tạo website tra ₫iện thoại bằng JSP trên JBuilder 1. Chạy JBuilder 2005, chọn menu File.New Project rồi trả lời các cửa sổ Wizard ₫ể tạo 1 project mới quản lý Website. Lưu ý trong cửa sổ Step 1, chọn thư mục và nhập tên Project quản lý Website là JSPDBDT. 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 1: Lập trình Web chạy ở server dùng Servlet java Trường ĐH Bách Khoa Tp.HCM Slide 419
  43. Tạo website tra ₫iện thoại bằng JSP trên JBuilder 2. chọn menu File.New ₫ể hiển thị cửa sổ Object Gallery như hình bên. chọn nhóm Web, chọn icon Web Module ₫ể tạo Website. 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 1: Lập trình Web chạy ở server dùng Servlet java Trường ĐH Bách Khoa Tp.HCM Slide 420
  44. Tạo website tra ₫iện thoại bằng JSP trên JBuilder 2.1 khi cửa sổ "Select Server " hiển thị nh ư hình bên, bạn ấn dấu chọn vào checkbox "Single server ", chọn server "Tomcat 5.0" rồi ấ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 Trường ĐH Bách Khoa Tp.HCM Slide 421
  45. 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 422
  46. Tạo website tra ₫iện thoại bằng JSP trên JBuilder 3. chọn menu File.New ₫ể hiển thị cửa sổ Object Gallery như hình bên. Chọn nhóm Web, chọn icon JSP ₫ể tạo 1 trang JSP tra account danh bạ ₫iện thoại, rồi ấ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 Trường ĐH Bách Khoa Tp.HCM Slide 423
  47. Tạo website tra ₫iện thoại bằng JSP trên JBuilder 3.1 trong cửa sổ Step 1 của qui trình JSP Wizard, bạn nhập tên cho trang JSP là JSPTraDBDT, rồi ấn button Next ₫ể tiếp tục Step 2 (hay button Finish ₫ể chấp nhận các thông số mặc ₫ịnh cho các b ước còn lạ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 Trường ĐH Bách Khoa Tp.HCM Slide 424
  48. Viết code cho trang JSP như sau JSPBeanDBDT Kết quả tra danh bạ theo yêu cầu của 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 Trường ĐH Bách Khoa Tp.HCM Slide 425
  49. Viết code JavaBean phục vụ trang JSP Dời chuột về cửa sổ Project, tìm mục JSPBeanDBDTBean .java, ấn kép chuột vào nó ₫ể hiển thị cửa sổ soạ n code của JavaBean, rồi soạn code cho nó theo nội dung các slide tiếp theo. 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 426
  50. Viết code JavaBean phục vụ trang JSP (tt) package jspbeandbdt; import java.sql.*; //class ₫ặc tả JavaBean public class JSPBeanDBDTBean { public String SearchAccount (String tentbao, String sodthoai, String diachi) { StringBuffer table = new StringBuffer(); Connection con; boolean fsqlstart = true; // xây dựng lệnh SQL tìm kiếm theo yêu cầu người dùng String newSQL = "SELECT * FROM danhbadienthoai"; if (tentbao != null) if (tentbao.length() != 0) { newSQL = newSQL + " where tenthuebao like '%" + tentbao + "%'"; fsqlstart = false; } 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 427
  51. Code JavaBean phục vụ trang JSP (tt) if (sodthoai != null) if (sodthoai.length() != 0) { if (fsqlstart) newSQL = newSQL + " where sodienthoai like '%" + sodthoai + "%'"; else newSQL = newSQL + " and sodienthoai like '%" + sodthoai + "%'"; fsqlstart = false; } if (diachi != null)if (diachi.length() != 0) { if (fsqlstart) newSQL = newSQL + " where diachi like '%" + diachi + "%'"; else newSQL = newSQL + " and diachi like '%" + diachi + "%'"; fsqlstart = false; } //xây dựng chuỗi ConnectionString truy xuất database dùng DSN String conStr = "jdbc:odbc: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 Trường ĐH Bách Khoa Tp.HCM Slide 428
  52. Code JavaBean phục vụ trang JSP (tt) try { // tạo connection ₫ến database, // thực hiện lệnh SQL, kết quả trả về trong recordset rs Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection(conStr,"",""); Statement stmt = con.createStatement(); ResultSet rs =stmt.executeQuery(newSQL); int i = 1; if (rs != null && rs.next()) { //nếu có ít nhất 1 account, tạo bảng, tạo tiêu ₫ề và hàng miêu tả account ₫ầu tiên table.append(" "); table.append(" So thu tu Ten thue bao So dien thoai Dia chi \n"); table.append(" " + i++ +" " + rs.getString(2) + " " + rs.getString(3) + " " + rs.getString("diachi") + " \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 Trường ĐH Bách Khoa Tp.HCM Slide 429
  53. Code JavaBean phục vụ trang JSP (tt) //lặp xuất từng hàng thông tin account còn lại while (rs.next()) { table.append(" " + i++ +" " + rs.getString(2) + " " + rs.getString(3) + " " + rs.getString("diachi") + " \n"); } table.append(" "); } else table.append(" Không có account nào thỏa yêu cầu tìm kiếm! \n"); //₫óng các ₫ối tượng ₫ã dùng lại rs.close(); stmt.close(); con.close(); } catch(Exception e){System.out.println("Error : "+e);} return table.toString(); }//end of SearchAccount }//end of JavaBean 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 430
  54. Tạo trang chủ chứa form nhập liệu cần tra 4. chọn menu File.New File ₫ể hiển thị cửa sổ "Create New File" như hình dưới ₫ây. Chọn thư mục chứa file (lưu ý ₫ể server Tomcat quản lý ₫úng Website, bạn phải chọn thư mục có chứa thư mục con là WEB-INF), nhập tên file HTML là "JSPInputForm", duyệt tìm và chọn Bộ môn : Công nghệ phần mềm Môn : Lập trình Mạng Type fileKhoa là Cônghtml. nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Slide 431
  55. Viết code cho trang chủ chứa form Trang Web demo việc tra danh bạ ₫iện thoại Nhập thông tin về tên thuê bao : Nhập thông tin về số ₫iện thoại : Nhập thông tin về ₫ị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 Trường ĐH Bách Khoa Tp.HCM Slide 432
  56. Kết quả chạy trang JSP (chọn menu Run.Run 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 1: Lập trình Web chạy ở server dùng Servlet java Trường ĐH Bách Khoa Tp.HCM Slide 433
  57. Kết quả chạy file JSPInputForm (chọn "Quay ve trang chu") 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 1: Lập trình Web chạy ở server dùng Servlet java Trường ĐH Bách Khoa Tp.HCM Slide 434