Sau đây chúng em xin trình bày đề tài “Tìm hiểu công nghệ Struts 1.x và xây dựng demo ứng dụng”. I. Mục tiêu Hiểu sâu, hiểu rõ về Struts 1 Framework. Một công nghệ mà hiện đang được sử dụng rất nhiều tại các công ty phát triển phần mềm lớn ở Việt Nam. Hy vọng đây sẽ là 1 nghiên cứu hữu ích, ko chỉ cho những người mới làm quen với lập trình web, mà còn giúp cho những người đang tìm hiểu về Struts, đang phát triển ứng dụng web với Struts tích lũy thêm kiến thức.
TRƯỜNG ĐHSPKT VINH KHOA CNTT BỘ MÔN CÔNG NGHỆ PHẤN MỀM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc Lập-Tự Do-Hạnh Phúc PHIẾU GIAO ĐỒ ÁN MÔN HỌC MÔN HỌC: LẬP TRÌNH JAVA Nhóm Sinh Viên: Stt Họ Và Tên Phan Thị Phượng Nguyễn Quang Đức SĐT 01638775572 01648722799 Email Phanphuong510@gmail.com Quangduc@gmail.com Lớp: ĐH Tin K6 Tên đề tài: Tìm hiểu cơng nghệ struts1.x xây dựng demo ứng dụng Yêu cầu: - Tìm hiểu công nghệ struts1 - Xây dựng demo ứng dụng Báo cáo chương trình: - Báo cáo thuyết minh trình bày theo mẫu - Chương trình ghi vào đĩa CD để nạp TỔ TRƯỞNG BỘ MÔN GIÁO VIÊN HD NHÓM SV THỰC HIỆN Phần theo dõi trình thực đồ án Ngày kiểm tra Tiến độ công việc Nhận xét GVHD Chứ ký GVHD Đồng ý cho bảo vệ hay không đồng ý: ……………………………………………………………………………………… ……………………………………………………………………………………… Nghệ An, Ngày tháng năm 2014 Giáo viên hướng dẫn NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… Vinh, Ngày 18 tháng năm 2015 Giáo viên hướng dẫn (Ký ghi rõ họ tên ) NHẬN XÉT CỦA GIÁO VIÊN CHẤM ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ………………………………………………………………………………………… Vinh, Ngày 04 tháng 04 năm 2015 Giáo viên hướng dẫn (Ký ghi rõ họ tên ) Đồ án Lập Trình Java MỞ ĐẦU Ngày nay, ngành cơng nghệ thông tin phát triển vũ bão vào mặt đời sống, kinh tế, xã hội người Đóng góp vào phát triển đó, vai trò Web ngày trở nên quan trọng công cụ đắc lực dẫn tới thành công nhiều lĩnh vực trọng điểm Với bùng nổ truyền thơng Web phương thức lan truyền thơng tin nhanh chóng, hiệu kinh tế Rất nhiều tập đoàn sản xuất phần mềm lớn IBM, Microsoft, Sun MicroSystem … tham gia vào lĩnh vực xây dựng phát triển ứng dụng Web Tuy nhiên, ứng dụng Web phát triển nhanh mạnh mẽ khơng thể khơng kể đến cộng đồng, cộng đồng mã nguồn mở Sự đóng góp họ vơ lớn lao với mục đích cao phát triển công nghệ phục vụ cộng đồng Rất nhiều dự án lớn đời từ cộng đồng mã nguồn mở, kể đến số framework tiếng như: Struts, Hibernate, Spring, JSF… Ở Việt Nam, phát triển ứng dụng Web hướng đầy tiềm hứa hẹn cho tất u thích cơng nghệ thơng tin nói chung kỹ sư phần mềm nói riêng Sau chúng em xin trình bày đề tài “Tìm hiểu cơng nghệ Struts 1.x xây dựng demo ứng dụng” I Mục tiêu Hiểu sâu, hiểu rõ Struts Framework Một công nghệ mà sử dụng nhiều công ty phát triển phần mềm lớn Việt Nam Hy vọng nghiên cứu hữu ích, ko cho người làm quen với lập trình web, mà giúp cho người tìm hiểu Struts, phát triển ứng dụng web với Struts tích lũy thêm kiến thức II Nội dung nghiên cứu Tìm hiểu chi tiết Struts Framework Từ sở lý thuyết để tạo ví dụ demo ứng dụng Struts Framework III Phương pháp nghiên cứu - Tự tìm hiểu qua sách, báo - Phân tách nhỏ dần thành phần Framework - Giải vấn đề Nhóm SV: Phan Thị Phượng - Nguyễn Quang Đức Page Đồ án Lập Trình Java - Tổng hợp kết lại thành nhìn sâu, rộng Framework MỤC LỤC MỞ ĐẦU I MỤC LỤC II CHƯƠNG I: GIỚI THIỆU TỔNG QUAN I.1 NGƠN NGỮ LẬP TRÌNH JAVA VÀ CƠNG NGHỆ WEB JAVA I.2 TRƯỚC KHI STRUTS RA ĐỜI I.2.1 Java Servlet .8 I.2.2 Java Server Page (JSP) .2 CHƯƠNG II: CÔNG NGHỆ STRUTS 1.X II.1 MƠ HÌNH MVC VÀ MƠ HÌNH JSP II.1.1 Mô hình lập trình MVC II.1.2 Mơ hình JSP .2 II.2 CÔNG NGHỆ STRUTS 17 II.2.1 Lịch sử hình thành 17 II.2.2 Struts 18 II.2.3 Kiến trúc Struts 18 II.2.4 Xây dựng thành phần Model .2 II.2.5 Xây dựng thành phần View .24 II.2.6 Xây dựng thành phần Controller .26 CHƯƠNG III: TRIỂN KHAI ỨNG DỤNG .34 CHƯƠNG IV: KẾT LUẬN 44 IV.1 KẾT QUẢ ĐẠT ĐƯỢC 44 IV.2 HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 44 IV.3 TÀI LIỆU THAM KHẢO 44 Nhóm SV: Phan Thị Phượng - Nguyễn Quang Đức Page Đồ án Lập Trình Java CHƯƠNG I: GIỚI THIỆU TỔNG QUAN I.1 NGÔN NGỮ LẬP TRÌNH JAVA VÀ CƠNG NGHỆ WEB JAVA Java ngơn ngữ lập trình hãng Sun phát triển từ đầu năm 90 trở thành ngôn ngữ lập trình hướng đối tượng ưa chuộng năm gần Java sử dụng phổ biến toàn giới nhằm đáp ứng yêu cầu phát triển ứng dụng mạng phục vụ cho nhiều người dùng với môi trường thực thi phần mềm khác Java ngơn ngữ lập trình hồn chỉnh thiết kế theo hướng đối tượng với đầy đủ tính chất quan trọng ngơn ngữ lập trình hướng đối tượng: - Kế thừa - Đa hình - Đóng gói - Trừu tượng Ngày nay, nhắc đến Java người ta khơng nhắc đến Java ngôn ngữ mà nhắc đến Java công nghệ hay tảng phát triển Java đánh dấu trưởng thành mơ hình lập trình hướng đối tượng, coi tảng mang tính cách mạng ngành phần mềm Java bao gồm phận: - Máy ảo Java: JVM - Bộ công cụ phát triển: J2SDK - Các đặc tả chi tiết kĩ thuật (specifications) - Ngôn ngữ lập trình (programming language) Cơng nghệ Java chia làm ba phận: - J2SE: Gồm đặc tả, công cụ, API nhân Java giúp phát triển ứng dụng desktop định nghĩa phần thuộc nhân Java - J2EE: Gồm đặc tả, công cụ, API mở rộng J2SE để phát triển ứng dụng qui mơ xí nghiệp, chủ yếu để chạy máy chủ (server) Bộ phận hay Nhóm SV: Phan Thị Phượng - Nguyễn Quang Đức Page Đồ án Lập Trình Java nhắc đến công nghệ công nghệ Servlet/JSP: sử dụng Java để làm ứng dụng web - J2ME: Gồm đặc tả, công cụ, API mở rộng để phát triển ứng dụng Java chạy điện thoại di động, thẻ thông minh, thiết bị điện tử cầm tay, robo ứng dụng điện tử khác Như nói đến cơng nghệ Web Java nói đến J2EE J2EE khung ứng dụng Web hoạt động hiệu J2EE hỗ trợ ngơn ngữ lập trình Java tương lai có lẽ khơng có ngơn ngữ lập trình hỗ trợ thêm kiến trúc Nhưng khung ứng dụng J2EE ngơn ngữ Java có tính khả chuyển cao Một chương trình viết Java thực thi máy ảo Java (Java Virtual Machine) thay trực tiếp hệ điều hành cụ thể Do đó, mã chương trình chuyển từ hệ điều hành sang hệ điều hành khác (có hỗ trợ JVM) để thực thi cách dễ dàng Kiến trúc đa tầng ứng dụng J2EE: Các thành phần: - Client-tier chạy máy client Nhóm SV: Phan Thị Phượng - Nguyễn Quang Đức Page Đồ án Lập Trình Java - Web tier, Business tier (là Java Servlet Java Server Pages) chạy J2EE server - EIS (Enterprise information system)-tier chạy EIS server I.2 TRƯỚC KHI STRUTS RA ĐỜI I.2.1 Java Servlet I.2.1.1 Tổng quan Java Servlet Servlet tạo vào năm 1997, Servlet thành phần đối tượng nhúng trình chủ Web server thực xử lý yêu cầu sinh trang Web động trả máy khách Java Servlet công nghệ tảng cho công nghệ khác để tạo ứng dụng Web có tính tương tác cao mà giao diện người dùng sinh phía server Một servlet lớp Java xử lý động yêu cầu xây dựng trả lời Mặc dù servlet dùng để trả lời yêu cầu chúng thường dùng để hỗ trợ cho ứng dụng Web Servlet thành phần ứng dụng Web không phụ thuộc vào hệ Về chất Servlet chương trình Java (chỉ cần nạp lần vào máy ảo) thường sử dụng để chạy máy ảo Java Khi có u cầu từ trình duyệt (Browser), máy chủ (server) phát lệnh thực Servlet tương ứng, kết trả Servlet máy chủ xử lý trả cho trình duyệt dạng trang HTML Nhóm SV: Phan Thị Phượng - Nguyễn Quang Đức Page Đồ án Lập Trình Java Hình 2: Java Servlet kiến trúc J2EE I.2.1.2 Mơ hình Servlet Response and Request Hình 3: Mơ hình Servlet Response and Request Nhiệm vụ Servlet: - Nhận Client Request (hầu hết dạng HTTP Request) - Trích xuất thơng tin từ Request - Xử lý nghiệp vụ (Truy cập sở liệu, …) - Tạo gửi trả Response cho Client (hầu hết dạng HTTP Response) Forward cho Servlet trang web khác - Request thông tin gửi từ Client đến Server - Response thông tin gửi từ Server đến Client I.2.1.3 Vòng đời Servlet Nhóm SV: Phan Thị Phượng - Nguyễn Quang Đức Page Đồ án Lập Trình Java Hình 4: Vòng đời Servlet I.2.2 Java Server Page (JSP) Công nghệ JSP kế thừa tất kỹ thuật động công nghệ Java Servlet, lại cung cấp cách tiếp cận tự nhiên việc tạo thành phần Web tĩnh, JSP kết hợp cơng nghệ sinh trang HTML tĩnh với công nghệ động sinh trang HTML JSP cơng nghệ lập trình Web phía máy chủ Java, JSP cho phép truy xuất, xử lý đơn giản, giúp cho lập trình viên xử lý dễ dàng Đặc trưng công nghệ JSP: - Cho phép trộn mã Java thẻ HTML - Xây dựng đối tượng phía máy chủ - JSP sử dụng truy xuất xử lý đơn giản : trình bày giao diện, định dạng trang HTML, triệu gọi Javabean, servlet khác … Nguyên tắc: - JSP script viết lồng vào trang HTML - Khi có yêu cầu client, JSP Engine dịch JSP script thành mã Java - Java Compiler dịch Java code thành bytecode - Bytecode chạy máy ảo Java Nhóm SV: Phan Thị Phượng - Nguyễn Quang Đức Page 10 Đồ án Lập Trình Java Nói đến ứng dụng web, lúc hay lúc khác, hầu hết nhà phát triển web xây dựng form thẻ chuẩn Html () Người sử dụng mong đợi tương tác với ứng dụng web để có hành vi định Một kỳ vọng người dùng điều khiển lỗi Khi người dùng gây lỗi đó, ứng dụng cần cho họ sửa chữa lại sửa lại thông tin bị sai mà khơng cần phải nhập lại thơng tin lại form hay trang Để thực điều chuẩn Html Jsp thông thường cồng kềnh khó chịu (phải nhúng thẻ Jsp vào mã Html) Bởi nhà thiết kế giao diện khơng biết tới lập trình, khơng biết tới Framework, vấn đề trở nên khó khăn Vì Struts đưa thư viện thẻ riêng Struts dựa Custom Tag Library Jsp Các thư viện thẻ giải vấn đề nhà phát triển nhà thiết kế nêu cách tự động hoàn toàn II.2.5.3 Form tự động validate Ngoài tương tác động form bean mô tả trên, Framework cung cấp chế cho phép xác nhận thông tin đầu vào người dùng cung cấp Để sử dụng tính này, ActionForm cần phải Override phương thức validate(ActionMapping mapping, HttpServletRequest request); Phương thức gọi Controller Servlet sau tương tác form bean hoàn thành, trước phương thức execute() Action gọi Phương thức validate gồm tùy chọn sau: - Thực kiểm chứng cách phù hợp để tìm vấn đề người dùng nhập thông tin Trả null thể ActionErrors chứa chuỗi số Controller điều khiển để gọi execute() Action cách phù hợp - Thực kiểm chứng cách phù hợp để tìm vấn đề người dùng nhập thông tin Trả thể ActionErrors chứa ActionMessages (đó lớp có chứa thơng báo lỗi lưu tập tin tài nguyên ứng dụng) Servlet điều khiển lưu trữ mảng thuộc tính Request sử dụng thẻ sau chuyển tiếp đến form nhập thông tin người dùng Nhóm SV: Phan Thị Phượng - Nguyễn Quang Đức Page 26 Đồ án Lập Trình Java Việc sử dụng tính hồn tồn tùy chọn, mặc định Controller hiểu phương thức validate trả giá trị null Và Controller coi tất công việc validate liệu nhập vào người dùng thực Action II.2.5.4 The Struts Validator Ngoài cách validate javascript hay validate ActionForm, Action, Struts cung cấp cách khác để validate cách nhanh chóng thuận lợi Đó phương pháp cấu hình Validator Việc cấu hình có quy tắc cần phải tuân thủ sau: - ActionForm Bean phải kế thừa lớp ValidatorForm - Html form phải bao gồm thẻ để validate phía client - Lập trình viên phải định nghĩa quy tắc validate file xml - Cuối cùng, lập trình viên phải kích hoạt ValidatorPlugin file cấu hình hệ thống struts-config.xml Chú ý thuộc tính form mà đối tượng đại diện cho kiểu liệu nguyên thủy (chẳng hạn: int) lập trình viên cần phải thiết lập ActionServlet chuyển đổi giá trị null khởi tạo Nếu không validate trường khơng thực ln có giá trị mặc định (chẳng hạn với kiểu int, giá trị mặc định : 0) II.2.5.5 Bố cục trang với Tiles Tiles thư viện có sẵn hỗ trợ mạnh mẽ cho việc phát triển thành phần View ứng dụng Struts Tiles cho phép nhà phát triển xây dựng View cách kết hợp nhiều tiles với Tiles Framework mã nguồn mở cho phép tạo trang trình diễn liệu đến người dùng cách đơn giản tiện lợi Nó giúp giảm thiểu cơng việc cho lập trình viên, tránh tình trạng phải viết đoạn mã lặp lặp lại nhiều lần Tiles thực hữu ích cho việc xây dựng trang với giao diện “Look and feel” Giúp dễ dàng sửa đổi trì giao diện trang web Tiles xây dựng dựa tính “Include” cung cấp Java Server Pages Như dễ dàng xây dựng trang sử dụng lại Nó cung cấp đầy đủ tính mạnh mẽ để lắp ghép thành trang trình bày liệu từ thành phần riêng lẻ Mỗi phần (Tiles) tái sử dụng tùy ý theo cần thiết thành phần suốt ứng dụng Struts Điều làm giảm số lượng thẻ Html cần phải trì làm cho trang web dễ dàng thay đổi giao diện Nhóm SV: Phan Thị Phượng - Nguyễn Quang Đức Page 27 Đồ án Lập Trình Java Một bố cục tiles trang Jsp mà cho phép tiles đặt vào Bố cục tiles xác định rõ nơi mà tiles đặt vào Tiles Framework sử dụng tập tin cấu hình xml để tổ chức tiles II.2.5.6 Bộ thư viện thẻ xây dựng sẵn Bộ thư viện chia thành ba loại chính: - Các thẻ với tiếp đầu ngữ Html: html:form html:img html:image html:errors html:link html:multibox html:radio html:checkbox html:text html:select html:options … - Các thẻ với tiếp đầu ngữ Bean: bean:write bean:define … - Các thẻ với tiếp đầu ngữ Logic logic:iterator logic:match logic:equal logic:notEqual … II.2.6 Xây dựng thành phần Controller Nhóm SV: Phan Thị Phượng - Nguyễn Quang Đức Page 28 Đồ án Lập Trình Java II.2.6.1 Tổng quan Thành phần Controller Servlet thực chức việc ánh xạ yêu cầu qua URL với Action tương ứng Nhiệm vụ lập trình viên liên quan đến thành phần Controller là: - Viết lớp ActionForm làm trung gian Model View - Viết lớp Action cho yêu cầu xử lý - Cấu hình AcionMapping (trong file cấu hình ứng dụng struts-config.xml) cho u cầu nhận - Cập nhật tập tin web.xml Tập tin mô tả triển khai ứng dụng II.2.6.2 ActionServlet ActionServlet thành phần quan trọng Controller Nó đóng vai trò điều khiển Cơng việc ActionServlet sau: Nhiệm vụ ActionServlet là: - Thực vai trò Controller như: xử lý user request, xác nhận xem user cần thơng qua request nhận được, lấy liệu từ Model cần thiết lấy View phù hợp trả cho người dùng - Thực tế ActionServlet ủy nhiệm hầu hết công việc cho Action - Ngồi ActionServlet chịu trách nhiệm khởi tạo dọn dẹp tài nguyên: load cấu hình ứng dụng file web.xml, duyệt danh sách initparam, đánh dấu modun … II.2.6.3 Request Processor Là nơi xảy hầu hết xử lý cốt lõi cho Request Để xử lý Request gửi tới cho Controller, Request phải qua bước gọi chuỗi xử lý (chain) Mỗi bước tương ứng với lệnh áp dụng lên Request Các lệnh phương thức lớp thuộc gói org.apache.struts.chain.commands org.apache.struts.chain.commands.servlet Xem xét lệnh chuỗi xử lý đó: - SelectLocale: Chọn Locale cho request Locale chưa có đặt vào Request Nhóm SV: Phan Thị Phượng - Nguyễn Quang Đức Page 29 Đồ án Lập Trình Java - SetOriginalURI: Lưu trữ URI Request vào Request - RequestNoCache: Thiết lập tiêu đề cho phản hồi (giao thức HTTP): "Pragma", "Cache-Control", and "Expires" - RemoveCachedMessages: Loại bỏ đối tượng ActionMessages lưu trữ Session Globals.MESSAGE_KEY Globals.ERROR_KEY phương thức isAccessed Messages trả true - SetContentType: Thiết lập kiểu nội dung mặc định cho Response Request - SelectAction: Xác định ActionMapping đường dẫn - AuthorizeAction: Nếu mapping có vai trò liên kết đến nó, phương thức đảm bảo Request Client có vai trò Nếu khơng, đưa thơng báo lỗi dừng q trình xử lý Request - CreateActionForm: Khởi tạo (nếu cần thiết) ActionForm liên kết đến Mapping (nếu có) đặt vào phạm vi thích hợp - PopulateActionForm: Thực tương tác form ActionForm có - ValidateActionForm: Thực validate (nếu yêu cầu) ActionForm liên kết đến Request (nếu có) - SelectInput: Nếu validate khơng thành cơng, chọn liên kết ForwardConfig thích hợp để trở lại trang đầu vào - ExecuteCommand: Tra cứu thực thi chuỗi lệnh ActionConfig cấu hình - SelectForward: Nếu mapping đại diện cho Forward, forward đến đường dẫn định mapping - SelectInclude: Chọn URI thêm (nếu có) cho ActionMapping - PerformInclude: Thêm vào kết việc gọi đường dẫn Request - CreateAction: Khởi tạo thể lơp định ActionMapping (nếu cần thiết) - ExecuteAction: Đây điểm mà phương thức execute Action thực thi Nhóm SV: Phan Thị Phượng - Nguyễn Quang Đức Page 30 Đồ án Lập Trình Java - ExecuteForwardCommand: Tra cứu thực thi chuỗi lệnh ForwardConfig cấu hình - PerformForward: Cuối cùng, phương thức RequetsProcessor lấy ActionForward trả phương thức execute lớp Action sử dụng để chọn tài nguyên (nếu có) II.2.6.4 Các lớp ActionForm Một ActionForm đại diện cho form Html mà người dùng tương tác với nhiều trang Lập trình viên cần cung cấp cho ActionForm thuộc tính để lưu trữ lại trạng thái trang với phương thức setter getter chúng ActionForm lưu trữ phạm vi session (mặc định) hay request Nếu chúng session cần thiết phải ghi đè phương thức reset để khởi tạo lại form lần sử dụng Framework thiết lập thuộc tính ActionForm từ thơng tin request sau gửi form validate tới phương thức execute Action phù hợp liên kết với ActionMapping Các nguyên tắc cần tuân thủ tạo ActionForm Bean: - Lớp ActionForm không yêu cầu phải tạo phương thức thực thi cho ActionForm bean bao gồm phương thức setter getter, mà khơng liên quan đến q trình xử lý logic - Các đối tượng ActionForm cung cấp chế validate chuẩn, ghi đè phương thức có sẵn Framework cung cấp tin nhắn báo lỗi tài nguyên chuẩn ứng dụng Khi Framework tự động validate thơng tin đầu vào form cách sử dụng phương thức Và tất nhiên bỏ qua cách xác nhận cung cấp cách cách thức khác như: dùng Javascript hay sử dụng lớp Action - ActionForm định nghĩa thuộc tính liên kết đến phương thức setter getter cho trường đại diện form Tên trường tên thuộc tính phải phù hợp với quy tắc JavaBean thông thường - Các nút điều khiển khác định nghĩa thuộc tính Điều giúp xác định nút điều khiển form lựa chọn form submit - Có thể coi ActionForm tường lửa HTTP Action Tại tường lửa cần sử dụng phương thức validate để chắn tất Nhóm SV: Phan Thị Phượng - Nguyễn Quang Đức Page 31 Đồ án Lập Trình Java thuộc tính u cầu tồn giá trị chúng hợp lý Một ActionForm phát lỗi trình validate không tiếp tục gửi tới Action - Chúng ta đặt ActionForm bean form sau sử dụng tham chiếu thuộc tính lồng Để làm điều phải sử dụng thư viện thẻ Struts II.2.6.4.1 DynaActionForm Việc trì ActionForm riêng biệt cụ thể cho form tốn thời gian Ngoài chương trình ngày phức tạp, cồng kềnh, khó kiểm sốt q nhiều ActionForm tạo Struts cung cấp cho giải pháp khác để tạo ActionForm mà không cần phải tạo lớp kế thừa từ ActionForm phương thức setter, getter rườm rà mà cần cấu hình file cấu hình ứng dụng struts-config.xml Danh sách kiểu liệu hỗ trợ cho DynaActionForm - java.math.BigDecimal - java.math.BigInteger - boolean java.lang.Boolean - byte java.lang.Byte - char java.lang.Character - java.lang.Class - double java.lang.Double - float java.lang.Float - int java.lang.Integer - long java.lang.Long - short java.lang.Short - java.lang.String - java.sql.Date - java.sql.Time - java.sql.Timestamp Nhóm SV: Phan Thị Phượng - Nguyễn Quang Đức Page 32 Đồ án Lập Trình Java Ngồi kiểu liệu liệt kê trên, sử dụng kiểu liệu mảng định inplements interface Map java.util.HashMap inplements List java.util.ArrayList Nếu không cung cấp giá trị khởi tạo cho thuộc tính này, mặc định giá trị khởi tạo kiểu số 0, kiểu đối tượng null Ở trang Jsp cách sử dụng thư viên thẻ Struts, thuộc tính DynaActionForm tham chiếu tới ActionForm thông thường Ở nơi thẻ struts với thuộc tính “property” tự động sử dụng thuộc tính DynaActionForm Thậm chí sử dụng thẻ để xác định thuộc tính DynaActionForm cách trực quan Các thuộc tính map thuộc tính DynaActionForm mà đại diện cho HashMap có chứa thuộc tính DynaActionForm DynaActionForm có ý nghĩa giải pháp dễ dàng cho vấn đề chung: ActionForm chứa thuộc tính phương pháp để validate liệu chuẩn DynaActionForm thay cho ActionForm Nếu muốn truy cập đến thuộc tính DynaActionForm cần sử dụng map-style accessor Nếu muốn sử dụng thuộc tính cách chủ động phải sử dụng ActionForm thơng thường Chúng ta mở rộng thêm phương thức validate reset cần thiết Để sử dụng DynaActionForm với Validator Struts, phải org.apache.struts.validator.ValidatorActionForm lớp form-bean định Ngoài loại ActionForm trên, Framework cung cấp số loại ActionForm khác như: LazyActionForm, ListBackActionForm, MapBackActionForm nhiên thực tế loại ActionForm sử dụng II.2.6.5 Các lớp Action Lớp Action định nghĩa hai phương thức quan trọng, hai phương thức nạp chồng: public ActionForward execute(ActionMapping mapping, ActionForm form, ServletRequest request, ServletResponse response) throws Exception; Nhóm SV: Phan Thị Phượng - Nguyễn Quang Đức Page 33 Đồ án Lập Trình Java public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception; Nhưng hầu hết dự án sử dụng phiên HttpServletRequest Phương thức non-HTTP sử dụng cho ứng dụng không sử dụng giao thức Http Mục đích lớp Action để xử lý Request thơng qua phương thức execute trả đối tượng ActionForward mà định danh nơi điều khiển chuyển đến, cung cấp phản hồi phù hợp Một lớp Action thông thường thực công việc sau phương thức execute nó: - Xác nhận trạng thái phiên làm việc Ví dụ: kiểm tra người dùng đăng nhập thành cơng chưa Nếu lớp Action tìm thấy tài khoản đăng nhập khơng tồn tại, u cầu chuyển tiếp đến trang trình bày hiển thị yêu cầu nhập lại tên đăng nhập mật Điều xảy người dùng chưa đăng nhập hệ thống mà cố gắng truy nhập vào trang ứng dụng mà trang yêu cầu người dùng phải đăng nhập vào được, session người dùng hết hạn Servlet container tạo session - Thực xử lý cần thiết để đáp ứng cho yêu cầu người dùng Điều thực cách nhúng mã xử lý logic vào phương thức execute Action Tuy nhiên, nhận thấy rằng, mã xử lý logic thuộc phần Model lớp Action thuộc phần Controller vậy, không nên nhúng trực tiếp mã xử lý logic mà đặt lời gọi tới xử lý logic Model vào phương thức execute lớp Action - Cập nhật lại đối tượng phía Server sử dụng để tạo nên giao diện người dùng cho trang hiển thị tới người dùng Thường đối tượng Request hay Session Tùy thuộc vào thời gian mà người lập trình viên muốn giữ đối tượng sẵn sàng - Trả đối tượng ActionForward thích hợp xác định trang trình bày liệu đến người dùng, dựa bean cập nhật Thơng thường ta có tham chiếu đến đối tượng cách gọi phương Nhóm SV: Phan Thị Phượng - Nguyễn Quang Đức Page 34 Đồ án Lập Trình Java thức findForward đối tượng ActionMapping mà nhận trước ta sử dụng tên cục mapping Controller Servlet ta sử dụng tên toàn cục tồn ứng dụng II.2.6.5.1 ActionMapping Để hoạt động thành công, Controller Servlet cần phải biết làm Request người dùng ánh xạ đến lớp Action thích hợp Do Struts đóng gói thơng tin cần thiết lớp java có tên ActionMapping thuộc tính quan trọng lớp sau: - Type: Tên đầy đủ lớp java kế thừa từ lớp Action Framework mà sử dụng ActionMapping - Name: Tên form bean định nghĩa file config mà Action sử dụng - Path: đường dẫn Request URI mà khớp với mapping - Unknown: Thiết lập true Action nên cấu hình mặc định cho ứng dụng này, để điều khiển Request không điều khiển Action khác Chỉ Action cấu hình làm Action mặc định cho ứng dụng - Validate: Thiết lập true phương thức validate Action liên kết với mapping nên gọi - Forward: đường dẫn Request URI mà điều khiển chuyển đến mapping gọi II.2.6.5.2 Cấu trúc ActionMapping Nhiệm vụ nhà phát triển tạo file cấu hình ứng dụng struts-config.xml đặt vào thư mục WEB-INF ứng dụng Các phần tử file xml bao gồm: - Phần tử : phần tử lớn bao gồm tất phần tử khác bên (ba phần tử quan trọng cấu hình nên ứng dụng web với công nghệ Struts) - Phần tử - Phần tử - Phần tử Nhóm SV: Phan Thị Phượng - Nguyễn Quang Đức Page 35 Đồ án Lập Trình Java Nhóm SV: Phan Thị Phượng - Nguyễn Quang Đức Page 36 Đồ án Lập Trình Java CHƯƠNG III: TRIỂN KHAI DEMO ỨNG DỤNG Cấu trúc ứng dụng tương ứng với cấu trúc ứng dụng web sử dụng mơ hình MVC Nhóm SV: Phan Thị Phượng - Nguyễn Quang Đức Page 37 Đồ án Lập Trình Java Code tạo Source Packages để lưu trữ thông tin tạm thời Trong WEB-INF tạo form để click đến trang càn hiển thị Nhóm SV: Phan Thị Phượng - Nguyễn Quang Đức Page 38 Đồ án Lập Trình Java Code trang hành động Nhóm SV: Phan Thị Phượng - Nguyễn Quang Đức Page 39 Đồ án Lập Trình Java CHƯƠNG IV: KẾT LUẬN IV.1 KẾT QUẢ ĐẠT ĐƯỢC - Hiểu rõ công nghệ struts 1.x - Tạo ứng dụng đơn giản IV.2 HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI - Nghiên cứu sâu để tác động tới thành phần xử lý khó mà Struts thực thay cho lập trình viên - Nghiên cứu, triển khai ứng dụng mơi trường điện tốn đám mây IV.3 TÀI LIỆU THAM KHẢO Các sách tham khảo: [1] Herbert Schildt, Java - The Complete Reference 7th Edition, The McGraw-Hill, 2007 [2] Barry Burd, Java For Dummies 5th Edition, Wiley Publishing, 2011 [3] Bruce W Perry, Java Servlet and Jsp cookbook, O'Reilly Media, 2004 [4] Bill Siggelkow, Jakarta Struts cookbook, O'Reilly Media, 2005 Nhóm SV: Phan Thị Phượng - Nguyễn Quang Đức Page 40 ... Phan Thị Phượng - Nguyễn Quang Đức Page Đồ án Lập Trình Java CHƯƠNG I: GIỚI THIỆU TỔNG QUAN I.1 NGƠN NGỮ LẬP TRÌNH JAVA VÀ CƠNG NGHỆ WEB JAVA Java ngơn ngữ lập trình hãng Sun phát triển từ đầu năm... Đa hình - Đóng gói - Trừu tượng Ngày nay, nhắc đến Java người ta khơng nhắc đến Java ngôn ngữ mà nhắc đến Java công nghệ hay tảng phát triển Java đánh dấu trưởng thành mơ hình lập trình hướng... hỗ trợ thêm kiến trúc Nhưng khung ứng dụng J2EE ngôn ngữ Java có tính khả chuyển cao Một chương trình viết Java thực thi máy ảo Java (Java Virtual Machine) thay trực tiếp hệ điều hành cụ thể