Báo cáo tìm hiểu Spring MVC Framwork Version 3.0
ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN CQ – HK1 – 2k9 – 2k10 ĐỐ ÁN TÌM HIỂU Mơn Cơng nghệ Java cho hệ thống phân tán Báo cáo tìm hiểu Spring MVC Framwork Version 3.0 Sinh viên thực hiện: 0612089 – Nguyễn Đức Linh Giang 0612119 – Nguyễn Đức Hoàng Phiên bản: 3.0 Ngày: 15/05/2010 Spring MVC Framwork Báo cáo tìm hiểu Mục lục Giới thiệu Spring MVC Framework : 1.1 Spring Framework : 1.2 Spring MVC Framework : 1.2.1 1.2.2 Các thành phần quan trọng chức Spring MVC framework: Luồng xử lý request Spring MVC Framework : Ứng dụng minh hoạ (Hello world): 2.1 Môi trường triển khai ứng dụng : 2.2 Các bước thực : 2.2.1 2.2.2 Phân tích thành phần Project : 2.2.3 Tạo Project Spring Web MVC NetBeans : Phát triển ứng dụng đơn giản : 11 Ứng dụng minh hoạ nâng cao : 22 3.1 Phát biểu toán 22 3.2 Các bước xây dựng: 22 3.2.1 Tạo CSDL liên kết khoá ngoại 22 3.2.2 Tạo Project áp dụng Spring Framework Hibernate 28 3.2.3 Phát sinh mapping file pojos tương ứng cho Hibernate 32 3.2.4 Tao lớp DAO BUS 39 3.2.5 Tạo Controller cho chức thêm sản phẩm : 42 3.2.6 Tạo Views : 46 3.2.7 Config Controller : 49 3.2.8 Tạo Validation : 52 Các ưu điểm khuyết điểm Spring MVC Web Framework : 56 Tài liệu tham khảo : 56 FIT-HCMUS Trang Spring MVC Framwork Báo cáo tìm hiểu Phiên bản: 3.0 Ngày: 15/05/2010 Giới thiệu Spring MVC Framework : 1.1 Spring Framework : Spring Framework mã nguồn mở có phiên dùng cho Java Platform NET Platform Phiên viết Rod Johnson đưa sách Expert One-on-One J2EE Design and Development xuất tháng 10 năm 2002 Spring Framework dùng cho tất ứng dụng viết Java, thành cơng lĩnh vực ứng dụng web Java EE Spring Framework gồm module sau : Inversion of Control container: hiệu chỉnh components chương trình quản lý vịng đời (lifecycle) đối tượng Java Aspect-oriented programming: kỹ thuật lập trình cho phép đóng gói hành vi có liên quan đến nhiều lớp Data access: làm việc với relational database management systems (hệ thống quản lý sở liệu quan hệ) Java platform sử dụng JDBC công cụ object-relational mapping Transaction management: thống hàm APIs quản lý transaction điều phối transactions cho đối tượng Java Model-View-Controller (MVC) framework dựa HTTP Servlet cung cấp khả mở rộng tùy biến nhiều Remote Access framework: hiệu chỉnh RPC-style việc import export đối tượng java thông qua mạng lưới hỗ trợ phương thức RMI, CORBA HTTP bao gồm SOAP Convention-over-configuration: chương trình nhanh mạnh việc phát triển hướng giải cho chương trình sủ dụng Spring enterprise Batch processing: framework tốt cho việc xử lý lương lớn thông tin hàm logging/tracing, transaction management, job processing statistics, job restart, skip, and resource management Authentication and authorization: hiệu chỉnh chế độ an tòan bảo mật, cung cấp phương thức, chương trình mức cho chương trình sử dụng Spring Remote Management: hiệu chỉnh cách thị quản lý đối tượng java mức local remote qua JMX Messaging: hiệu chỉnh việc xử lý thong tin trao đổi đối tượng dựa chuẩn JMS APIs Testing: cung cấp lớp hỗ trợ việc viết unit kiểm tra phân tích lỗi Trong đề tài tìm hiểu Chỉ quan tâm đề cập đến module Model-View-Controller (MVC) Spring Framework Ta gọi Spring MVC Framework FIT-HCMUS Trang Spring MVC Framwork Báo cáo tìm hiểu Phiên bản: 3.0 Ngày: 15/05/2010 1.2 Spring MVC Framework : Tương tự Struts, Spring MVC request-based framework Họ định nghĩa phương pháp chung cho tất các response phải giải request-based framework Mục đích họ đơn giản dễ dàng cho developer viết bổ sung cải tiến riêng họ Spring MVC giúp cho việc xây dựng ứng dụng web cách chặt chẽ linh động Mẫu thiết kế ModelView-Controller giúp phân chia rạch rịi cơng việc business logic, presentation logic, navigation logic Models chịu trách nhiệm đóng gói liệu ứng dụng Views có nhiệm vụ hiển thị thông tin cung cấp đối tượng Model trả cho người dùng Controllers chịu trách nhiệm nhận request từ người dùng gọi dịch vụ bên để xử lý 1.2.1 Các thành phần quan trọng chức Spring MVC framework: DispatcherServlet lớp đứng quản lý toàn hành động framework (front controller) suốt q trình thực thi lệnh thơng qua HTTP request HandlerMapping: chọn đối tượng xử lý request dựa thuộc tính điều kiện request HandlerAdapter: thực thi handler chọn Controller: đứng Model View để quản lý request gửi tới chuyển response xác View: chịu trách nhiệm trả respone cho client ViewResolver: chọn phương pháp view dựa logical name có sẵn View HandlerInterceptor: ngăn chặn (lọc) request từ user Nó coi Servlet filter (ko bắt buộc ko bị quản lý DispatcherServlet) LocaleResolver: xử lý lưu phần thông tin user MultipartResolver: làm cho việc upload file dễ dàng cách gói request lại FIT-HCMUS Trang Phiên bản: 3.0 Ngày: 15/05/2010 Spring MVC Framwork Báo cáo tìm hiểu 1.2.2 Luồng xử lý request Spring MVC Framework : Trích từ http://www.vaannila.com/spring/spring-mvc-tutorial-1.html Việc xử lý request response Spring MVC Framework mô tả sau : - - - - Bước : o DispatcherServlet nhận Request o DispatcherServlet tra HandlerMapping gọi Controller kết hợp với Request Bước : o Controller xử lý Request cách gọi phương thức dịch vụ thích hợp sau trả đối tượng ModelAndView cho DispatcherServlet Đối tượng ModelAndView chứa liệu đối tượng Model tên View Bước : o DispatcherServlet gửi tên View đến cho ViewResolver ViewResolver tìm View thực cần dùng Bước : o DispatcherServlet truyền đối tượng Model đến cho View xác định để hiển thị kết o View lấy liệu đối tượng Model hiển thị kết cho người dùng FIT-HCMUS Trang Spring MVC Framwork Báo cáo tìm hiểu Phiên bản: 3.0 Ngày: 15/05/2010 Ứng dụng minh hoạ (Hello world): Sau ví dụ HelloWorld đơn giản áp dụng Spring MVC Framework 2.1 Môi trường triển khai ứng dụng : - IDE : NetBeans IDE 6.8 - Web Server : Apache Tomcat 6.0.20 FIT-HCMUS Trang Phiên bản: 3.0 Ngày: 15/05/2010 Spring MVC Framwork Báo cáo tìm hiểu 2.2 Các bước thực : 2.2.1 Tạo Project Spring Web MVC NetBeans : Click “File” Click “New Project…” Click “Java Web” Select “Web Application” Click “Next” FIT-HCMUS Trang Phiên bản: 3.0 Ngày: 15/05/2010 Spring MVC Framwork Báo cáo tìm hiểu Nhập Project Name Chọn nơi lưu trữ Click “Next” Chọn Server “Apache Tomcat 6.0.20” 10 Click “Next” FIT-HCMUS Trang Phiên bản: 3.0 Ngày: 15/05/2010 Spring MVC Framwork Báo cáo tìm hiểu 11 Check chọn “Spring Web MVC 2.5” 12 Click “Finish” Kết ta có Project SpringMVCHelloWorld với cấu trúc thư mục sau : FIT-HCMUS Trang Phiên bản: 3.0 Ngày: 15/05/2010 Spring MVC Framwork Báo cáo tìm hiểu Run ứng dụng ta có kết sau : 2.2.2 Phân tích thành phần Project : - Trong file web.xml, ta thấy có dịng thiết lập trang chủ ứng dụng redirect.jsp file : - Trong file redirect.jsp làm việc redirect tất request gởi đến tới index.htm : - Cũng file web.xml ta thấy dòng khai báo ánh xạ sau : Servlet dispatcher lớp kế thừa từ “org.springframework.web.servlet.DispatcherServlet” Ánh xạ tất requests có mẫu URL khớp *.htm cho lớp DispatcherServlet Spring FIT-HCMUS Trang Phiên bản: 3.0 Ngày: 15/05/2010 Spring MVC Framwork Báo cáo tìm hiểu Lớp DanhmucBUS sau : 3.2.5 Tạo Controller cho chức thêm sản phẩm : Right Click Select Other… FIT-HCMUS Trang 42 Phiên bản: 3.0 Ngày: 15/05/2010 Spring MVC Framwork Báo cáo tìm hiểu Select Simple Form Controller Select Spring Framework Click Next Nhập Class Name Nhập Package Click Finish FIT-HCMUS Trang 43 Spring MVC Framwork Báo cáo tìm hiểu Phiên bản: 3.0 Ngày: 15/05/2010 Edit lại constructor class sau : Khai báo lớp dùng để lấy command từ FormView để xử lý submit Tên command, tên dùng để kết buộc thuộc tính CommandClass với control input để lấy liệu Đặt tên View hiển thị trước submit Đặt tên View hiển thị submit thành cơng Thêm thuộc tính kiểu DanhmucBUS SanphamBUS đóng vai trị services để lớp Controller sử dụng để xử lý nghiệp vụ trình xử lý : FIT-HCMUS Trang 44 Phiên bản: 3.0 Ngày: 15/05/2010 Spring MVC Framwork Báo cáo tìm hiểu Override lại phương thức showForm để add danh sách Danh mục cho người dùng chọn nhập loại sản phẩm Phương thức gọi form hiển thị ban đầu Lưu lại đối tượng ModelAndView trả từ lớp cha Lấy danh sách danh mục Add thêm đối tượng danh sách danh mục vào ModelAndView kết Trả Xoá phương thức doSubmitAction cài đặt sẵn Bỏ comment edit lại phương thức onSubmit sau : Tạo ModelAndView trả submit thành công Lưu sản phẩm vào CSDL Ép kiểu command thành Sanpham để lấy kết commit Trả Đưa đối tượng sản phẩm nhập thành công cho viewSuccess hiển thị FIT-HCMUS Lấy mã Danh mục chọn, sau tạo set thuộc tính danh mục cho sản phẩm nhập Tại lại phải lấy riêng giải thích phần sau Trang 45 Phiên bản: 3.0 Ngày: 15/05/2010 Spring MVC Framwork Báo cáo tìm hiểu 3.2.6 Tạo Views : Ta tạo Views sau : - View để nhập thông tin sản phẩm : Danh sách danh mục có CSDL - View để hiển thị thơng tin sản phẩm nhập nhập thành công : Nhận vào đối tượng sanpham hiển thị giá trị thuộc tính Ta tạo file sau : FIT-HCMUS Trang 46 Phiên bản: 3.0 Ngày: 15/05/2010 Spring MVC Framwork Báo cáo tìm hiểu - File include.jsp để load thư viện tag cần dùng - File ThemSanPham_SuccessView.jsp để hiển thị kết commit thành công sanpham object truyền vào câu lệnh mv.AddObject(“sanpham”, sp); phương thức onSubmit ThemSanPhamController - File ThemSanPham_InputView.jsp Hàm javascript xử lý textbox nhập số FIT-HCMUS Trang 47 Spring MVC Framwork Báo cáo tìm hiểu Phiên bản: 3.0 Ngày: 15/05/2010 Chỉ định commandName object lưu liệu commit Tag hỗ trợ Spring Form Bind thuộc tính lớp Command với giá trị nhập vào input ID control select form Vòng lặp add phần tử danh sách danh mục có CSDL vào select control lstDM object truyền vào câu lệnh mv.AddObject(“lstDM”, lst); phương thức showForm ThemSanPhamController Ghi : Trả lời câu hỏi phải gọi phương thức request.getParameter phương thức onSubmit để lấy giá trị mã danh mục chọn người dùng để tạo gán thuộc tính Sanpham.danhmuc không lấy sẵn Object command Do tag select cung cấp Spring Form trả trả giá trị kiểu String mục chọn, nên ta kết buộc giá trị control với thuộc tính Sanpham.danhmuc kiểu class Danhmuc Do ta phải submit riêng lẻ giá trị mã danh mục chọn người dùng xử lý request để lấy, sau tạo set thuộc tính Sanpham.danhmuc kiểu Danhmuc hàm onSubmit FIT-HCMUS Trang 48 Phiên bản: 3.0 Ngày: 15/05/2010 Spring MVC Framwork Báo cáo tìm hiểu 3.2.7 Config Controller : Đầu tiên ta khai báo service sử dụng file applicationContext.xml Thêm dòng sau vào file : Khai báo Bean có id sanphamService FIT-HCMUS Khai báo Bean thuộc class bus.SanphamBUS Trang 49 Spring MVC Framwork Báo cáo tìm hiểu Phiên bản: 3.0 Ngày: 15/05/2010 Trong file dispatcher-servlet.xml Thêm bean vào thân bean gốc Đây bean khai báo cho ThemSanPhamController Gán services khai báo cho thuộc tính class ThemSanPhamContrroler sanphamBUS danhmucBUS Ta thêm dòng mapping sau để map ThemSanPhamController với url “ThemSanPham.htm” : Map với name Bean khai báo cho Controller Cuối ta vào file redirect.jsp sửa index.htm thành ThemSanPham.htm FIT-HCMUS Trang 50 Spring MVC Framwork Báo cáo tìm hiểu Phiên bản: 3.0 Ngày: 15/05/2010 Vậy ta cấu hình xong cho phần Spring MVC Framework để xứ lý phần giao diện Bậy ta build run chương trình Nếu thành công kết sau : Nhập thông tin : Click OK ta kết sau : Để ý có điểm đặc biệt sử dụng Spring MVC Framework chỗ url Cho dù thật ứng dụng ta có file jsp Nhưng url url mà map với controller tương ứng : Điều giúp che dấu nên cơng nghệ bên tính an ninh framework hỗ trợ quản lý trang thánh việc truy cập trực tiếp vào url trang trái phép Đây ưu điểm Spring MVC Framework Phần ta bàn việc Validation liệu nhập người dùng sử dụng Spring MVC Framework FIT-HCMUS Trang 51 Phiên bản: 3.0 Ngày: 15/05/2010 Spring MVC Framwork Báo cáo tìm hiểu 3.2.8 Tạo Validation : Validator dùng để kiểm tra tính hợp lệ input từ người dùng Để cài đặt input ta làm sau : Right Click Select Other… Nhập File Name Nhập Folder classes Click Next FIT-HCMUS Trang 52 Phiên bản: 3.0 Ngày: 15/05/2010 Spring MVC Framwork Báo cáo tìm hiểu Trong file tạo properties sau : Trong file dispatcher-servlet.xml khai báo thêm bean sau : Tạo class : Nhập Class Name 10 Nhập Package 11 Click Finish FIT-HCMUS Trang 53 Phiên bản: 3.0 Ngày: 15/05/2010 Spring MVC Framwork Báo cáo tìm hiểu Nội dung class ThemSanPhamValidator sau : Implement Validator Override lại phương thức supports Nếu type class Sanpham support Override lại phương thức validate để xử lý việc input validate Nếu có khoảng trống khơng nhập báo lỗi Xuất lỗi tag form:errors với path = “tenSp” xuất chuỗi thơng báo lưu thuộc tính TenSP.required messages.properties Đây phương thức yêu cầu loại bỏ kết thông báo lỗi Các tham số mô tả Trong file ThemSanPham_InputView.jsp : - Thêm định nghịa css sau : FIT-HCMUS Trang 54 Spring MVC Framwork Báo cáo tìm hiểu - Phiên bản: 3.0 Ngày: 15/05/2010 Add tag form:errors : Tag dùng để hiển thị thông báo lỗi có Trong file applicationContext.xml thêm dịng khai báo cho validator cài đặt Trong file dispatcher-servlet.xml gán thêm thuộc tính validator cho controller : Vậy xong Giờ build run ứng dụng để kết không hợp lệ nhấn OK Ta kết sau FIT-HCMUS Trang 55 Spring MVC Framwork Báo cáo tìm hiểu Phiên bản: 3.0 Ngày: 15/05/2010 Các ưu điểm khuyết điểm Spring MVC Web Framework : 4.1 Ưu điểm : Spring framework Java mạnh mẽ sử dụng ứng dụng Java có phạm vi lớn Nó cung cấp dịch vụ Enterprise đến Plain Old Java Objects (POJOs) Cơ chế IoC giúp ứng dụng đạt đơn giản hoá tăng khả kiểm tra lỗi Spring MVC cung cấp phân chia rõ ràng, rành mạch Controller, Java Bean models Views Spring MVC linh hoạt, toàn Spring MVC xây dựng dựa interfaces Mọi phần Spring MVC framework cấu hình thơng qua việc lắp ghép interface, class tiện ích sẵn có, chí tạo người dùng Spring không sử dụng công nghệ JSP mà cịn dễ dàng tích hợp cơng nghệ view khác Velocity, XSLT, FreeMarker, XL, … Cung cấp chế che dấu công nghệ bên dưới, trang web hiển thị có extension htm, biết bên ta sử dụng công nghệ, kỹ thuật gì, JSP hay Velocity, XLST, … chí là cơng nghệ view custom người dùng Spring Controller cấu hình thơng qua IoC đối tượng khác Điều làm chúng dễ dàng test, tích hợp dễ dàng với đối tượng khác quản lý Spring Kết buộc trực tiếp input từ view với đối tượng domains 4.2 Khuyết điểm : Cấu hình phức tạp cồng kềnh => không phát huy sức mạnh áp dụng cho ứng dụng quy mô nhỏ mà ngược lại cịn làm cho ứng dụng phức tạp Tài liệu tham khảo : http://www.vaannila.com/spring/spring-tutorial/spring-tutorial.html http://en.wikipedia.org/wiki/Spring_Framework http://netbeans.org/kb/docs/web/quickstart-webapps-spring.html http://sites.google.com/site/springmvcnetbeans/step-by-step/ http://forum.springsource.org/showthread.php?t=16553 FIT-HCMUS Trang 56 ... dụng : FIT-HCMUS Trang 20 Spring MVC Framwork Báo cáo tìm hiểu Phiên bản: 3.0 Ngày: 15/05/2010 Click OK : FIT-HCMUS Trang 21 Spring MVC Framwork Báo cáo tìm hiểu Phiên bản: 3.0 Ngày: 15/05/2010 Ứng... Trang 40 Spring MVC Framwork Báo cáo tìm hiểu Phiên bản: 3.0 Ngày: 15/05/2010 Lớp SanphamBUS sau : FIT-HCMUS Trang 41 Phiên bản: 3.0 Ngày: 15/05/2010 Spring MVC Framwork Báo cáo tìm hiểu Lớp... Spring MVC Framwork Báo cáo tìm hiểu Select Tables muốn phát sinh tự động 10 Click Add 11 Click Finish FIT-HCMUS Trang 34 Phiên bản: 3.0 Ngày: 15/05/2010 Spring MVC Framwork Báo cáo tìm hiểu Phát