LUẬN VĂN: STRUTS 2 VÀ ỨNG DỤNG QUẢN LÝ CHẤT LƯỢNG DỊCH VỤ HOME PHONE
lượt xem 89
download
Khóa luận với đề tài "Xây dựng ứng dụng quản lý chất lượng dịch vụ Home Phone sử dụng Struts 2 và Hibernate" sẽ đưa ra những cái nhìn tổng quát về công nghệ JSP/ Servlet chạy trên máy chủ ứng dụng J2EE, những ưu nhược điểm của công nghệ này và cách khắc phục với điểm mạnh của framework Struts 2. Ngoài ra, sự kết hợp giữa Struts 2 với Hibernate - một framework hỗ trợ ánh xạ từ cở sở dữ liệu thành các đối tượng phục vụ tốt nhất cho việc phát triển ứng dụng. Cuối cùng,...
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: LUẬN VĂN: STRUTS 2 VÀ ỨNG DỤNG QUẢN LÝ CHẤT LƯỢNG DỊCH VỤ HOME PHONE
- ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Thái Sơn STRUTS 2 VÀ ỨNG DỤNG QUẢN LÝ CHẤT LƯỢNG DỊCH VỤ HOME PHONE KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin HÀ NỘI - 2010
- ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Thái Sơn STRUTS 2 VÀ ỨNG DỤNG QUẢN LÝ CHẤT LƯỢNG DỊCH VỤ HOME PHONE KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin Cán bộ hướng dẫn: ThS. Lê Hồng Hải HÀ NỘI - 2010
- LỜI CẢM ƠN Trước tiên, tôi xin gửi lời cảm ơn và lòng biết ơn sâu sắc đến Ths. Lê Hồng Hải, người đã tận tình chỉ bảo hướng dẫn tôi trong suốt quá trình thực hiện khoá luận tốt nghiệp. Tôi xin gửi lời cảm ơn anh Vũ Hoàng Chiến – người hướng dẫn và chỉ bảo tôi trong suốt thời gian thực hiện dự án. Tôi xin gửi lời cảm đến các thầy cô giáo đã giảng dạy tôi trong suốt bốn năm học qua, đã cho tôi nhiều kiến thức quý báu để tôi vững b ước trên con đường học tập của mình. Tôi xin gửi lời cảm ơn tới các bạn trong lớp K51CC, và K51CHTTT đã ủng hộ khuyến khích tôi trong suốt quá trình học tập tại trường. Và cuối cùng, tôi xin bày tỏ niềm biết ơn vô hạn tới bố mẹ, chị tôi, và những người bạn thân luôn bên cạnh, động viên tôi trong suốt quá trình thực hiện khoá luận tốt nghiệp. Hà Nội, ngày 18 tháng 5 năm 2010 Sinh viên Nguyễn Thái Sơn
- TÓM TẮT NỘI DUNG Khóa luận với đề tài "Xây dựng ứng dụng quản lý chất lượng dịch vụ Home Phone s ử dụng Struts 2 và Hibernate " sẽ đưa ra những cái nhìn tổng quát về công nghệ JSP/ Servlet chạy trên máy chủ ứng dụng J2EE, những ưu nhược điểm của công nghệ này và cách khắc phục với điểm mạnh của framework Struts 2. Ngoài ra, sự kết hợp giữa Struts 2 với Hibernate - một framework hỗ trợ ánh xạ từ cở sở dữ liệu thành các đối tượng phục vụ tốt nhất cho việc phát triển ứng dụng. Cuối cùng, khóa luận nêu những vận dụng của công nghệ trong việc xây dựng ứng dụng quản lý chất lượng dịch vụ Home Phone với các module và chức năng cụ thể sử dụng dữ liệu của ứng dụng được lấy từ trực tiếp từ cơ sở dữ liệu của Viettel Technologies.
- MỤC LỤC Chương 1: MÔ TẢ HỆ THỐNG......................................................................................................... 7 Module Agent:................................................................................................................................... 8 Module Core: phần nhân của hệ thống, xử lý các yêu cầu nhận được từ agent. ........................... 8 Module Web: (nhiệm vụ chính của khóa luận thực hiện) .............................................................. 8 Chương 2: CÔNG NGHỆ STRUTS 2 VÀ HIBERNATE ............................................................... 11 2 .1. Giới thiệu................................................................................................................................. 11 2 .2. Servlet/JSP: ............................................................................................................................. 11 2 .3. Struts ........................................................................................................................................ 12 2 .4. Struts 2 ..................................................................................................................................... 16 2.4.1. Vòng đời của các yêu cầu trong Struts 2 ..................................................................... 16 2.4.2. Kiến trúc Struts 2............................................................................................................ 17 2.4.3. Ứng dụng đ ơn giản với Struts 2: ................................................................................... 18 2 .5. Truy cập, sử dụng dữ liệu trong database. ............................................................................ 23 2 .6. Hibernate và những ưu việt. ................................................................................................... 23 2.6.1. Hibernate framework ...................................................................................................... 23 2.6.2 Một ví dụ về kết hợp giữa Struts 2 và Hibernate: .......................................................... 27 Chương 3: GIẢI QUYẾT BÀI TOÁN .............................................................................................. 35 3 .1. Yêu cầu luồng công việc ........................................................................................................ 35 Quản lý người dùng ................................................................................................................... 35 Thông tin thuê bao ..................................................................................................................... 35 Các cảnh báo .............................................................................................................................. 36 Cấu hình tham số ....................................................................................................................... 36 Quản lý Agent: ........................................................................................................................... 36 3 .1 Sơ lược về cơ sở dữ liệu của hệ thống................................................................................... 37 3 .3 Quá trình thực hiện dự án ....................................................................................................... 40 3.3.1 Module đăng nhập,quản lý người dùng và phân quyền. ................................................ 41 3.3.2 Module thông tin thuê bao: .............................................................................................. 44 3.3.3 Module: Các cảnh báo ...................................................................................................... 47 3.3.4 Module: Cấu hình tham số ............................................................................................... 48 3.3.5 Module: Quản lý Agent.................................................................................................... 49 Chương 4: Kết luận ............................................................................................................................. 53 Tài liệu tham khảo ............................................................................................................................... 54
- MỞ ĐẦU Hiện nay, ở Việt Nam, các dịch vụ viễn thông đang trong giai đoạn phát triển nhanh và mạnh. Điều này làm tăng tính cạnh tranh của mạng viễn thông trong nước. Điển hình nh ư về mạng di động có VinaPhone, MobiFone, Viettel, HaNoi Telecome, Beeline… Mạng cố định có VNPT, HomePhone, EVNTelecome, .. Các mạng cố định hiện nay đã d ần chuyển từ hệ thống có dây sang hệ thống không dây. Điển hình là dịch vụ điện thoại không dây Home Phone của Viettel Telecom. Để có thể phát triển và cạnh tranh, các mạng viễn thông phải không ngừng nâng cấp dịch vụ, giảm giá c ước và chăm sóc khách hàng. Để làm đ ược điều này, Viettel đã xây dựng một hệ thống có tên là “Hệ thống quản lý chất lượng dịch vụ Home Phone” (Home Phone service quality management system) để có thể tìm ra những nguyên nhân, khuyết điểm, trục trặc kỹ thuật trong quá trình triến khai hệ thống, xem xét khách hàng tin dùng để có những sửa chữa nâng cấp kịp thời cho hệ thống và có những biện pháp chăm sóc khách hàng hợp lý. Trong quá trình phát triển hệ thống, rất may mắn cho tôi là được tham gia xây dựng một bộ phận của hệ thống. Trong khóa luận của tôi, tôi sẽ trình bày kỹ hơn về các vấn đề này.
- Chương 1: MÔ TẢ HỆ THỐNG Dịch vụ Home Phone (dịch vụ đ iện thoại cố định không dây) là một dịch vụ tiềm năng và quan trọng trong sự phát triển viễn thông của tập toàn Viettel. Để phát triển tốt dịch vụ, cần có một hệ thống đánh giá chất lượng dịch vụ cập nhật thường xuyên các thông số để có những đánh giá chủ quan về cơ cấu hệ thống (chất lượng cuộc gọi, tiềm năng phát triển thuê bao và chất lượng sóng…) Hệ thống quản lý chất lượng dịch vụ Home Phone (Home Phone service quality management system) đã giải quyết vấn đề này. Mô hình dưới đây mô tả quá trình hoạt động của hệ thống. Hình 1.1: Mô hình hệ thống Home Phone. Trên mỗi máy điện thoại cố đ ịnh không dây Home Phone đều được gắn thêm một con chip để tương tác với các tín hiệu nhận được từ hệ thống. Agent được định nghĩa như là phần nhân trong mỗi máy đ iện thoại cố định, đặc trưng riêng cho mỗi máy.
- Các trạm BTS trải rộng từ các vùng, đến các tỉnh thành phố. Ở phía đầu cuối, các máy điện thoại (agent) được thiết lập cấu hình trong từng cell của trạm. Khi hệ thống tác động yêu cầu về các máy Home Phone, yêu cầu sẽ thông qua các cell đ ể tương tác. Yêu cầu xây dựng ứng dụng web với các module sau: Module Agent: Chức năng hệ thống tương tác v ới agent: Thu thập thông tin về các cuộc gọi đi(do người thực hiện thực hiện c uộc gọi cuối cùng), định dạng các trường thông tin theo chuẩn GSM. Thu thập thông tin về chất lượng mạng. Cấu hình agent từ xa qua SMS-Class 2 Quản lý và giám sát Module Core: phần nhân của hệ thống, xử lý các yêu cầu nhận được từ agent. Giao tiếp với SMSC/SMS Gateway để gửi/nhận tin nhắn. Giải mã thông tin về các cuộc gọi đi. Giải mã thông tin về chất lượng mạng. Giao tiếp với database để lưu trữ thông tin về các cuộc gọi và chất lượng mạng. Tương tác với agent qua SMS-Class 2. Module Web: (nhiệm vụ chính của khóa luận thực hiện) Quản trị người dùng, nhóm ng ười dùng. Đăng nhập, đăng xuất. Hỗ trợ nhóm người dùng(mỗi người dùng phải thuộc một nhóm nào đó) Phân quyền phạm vi(quản lý Agent) theo nhóm người dùng. Thêm/xóa người dùng, nhóm người dùng. Hiển thị/chỉnh sửa danh sách người dùng, nhóm . Báo cáo đồ thị: Cường độ sóng (max,min, trung bình của ngày) theo thời gian (của 1 agent), chọn khoảng thời gian. Chất lượng sóng (max, min, trung bình của ngày) theo thời gian( của 1 agent), chọn khoảng thời gian.
- Đồ thị phân bố số mẫu theo giá trị của cường độ sóng (áp dụng cho 1 agent, 1 c ell, 1 tỉnh,/thành, 1 khu vực hoặc toàn mạng) chọn 1 hoặc nhiều khoảng thời gian. Đồ thị phân bố số mẫu theo giá trị của chất lượng sóng (áp dụng cho 1 agent, 1 cell, 1 tỉnh/thành, 1 khu vực hoặc toàn mạng) chọn 1 hoặc nhiều khoảng thời gian. Đồ thị phân bố % số mẫu cường độ sóng tốt/ tổng số mẫu trong ngày (áp dụng cho 1 agent, 1 cell, 1 tỉnh/ thành, 1 khu vực hoặc toàn mạng) theo thời gian, chọn khoảng thời gian( config: ngưỡng tốt) Đồ thị phân bố % số mẫu chất lượng sóng tốt/ tổng số mẫu trong ngày (áp dụng cho 1 agent, 1 cell, 1 tỉnh/thành, 1 khu vực, hoặc toàn mạng) theo thời gian, chọn khoảng thời gian (config: ngưỡng tốt) Đồ thị giá trị CSR (tỷ lệ cuộc gọi thành công/ tổng số cuộc gọi) trong ngày (áp dụng cho 1 agent, 1 cell, 1 tỉnh/thành, 1 khu vực hoặc toàn mạng) theo thời gian, chọn khoảng thời gian. Đồ thị phân bố % agent đang hoạt động, agent phát sinh nhiều cuộc gọi (config: số cuộc gọi), % agent thay đổi serving cell, % agent activated mới, % agent activated mới phát sinh cuộc gọi trong ngày theo thời gian (1 tỉnh/thành, 1 khu vực hoặc toàn mạng); chọn khoảng thời gian. Báo cáo thống kê: (các báo cáo hàng ngày) dạng bảng (gửi qua email hàng ngày, thống kê cho ngày hôm qua, cho phép list agent-> xem chi tiết agent) % agent đang hoạt động % agent phát sinh cuộc gọi. % agent phát sinh nhiều cuộc gọi. % agent thay đổi serving cell. % agent activated mới % agent mới activated phát sinh cuộc gọi. % số mẫu có cường độ sóng tốt. % số mẫu có chất lượng sóng tốt. % CSR. Cảnh báo: (là các dạng báo cáo hàng ngày, gửi qua mail hàng ngày) (nếu có dữ liệu) (config: max, sort: giảm dần) Danh sách các agent không hoạt động (config: số ngày liên tục không có thông tin thu th ập về hoặc không có mẫu tin nào.)
- Danh sách các agent đang hoạt động nhưng không phát sinh cuộc gọi (config: số ngày liên tục không phát sinh cuộc gọi) Danh sách các agent thay đổi serving cell. Danh sách các agent sử dụng sóng yếu (config: số mẫu sóng dưới ngưỡng trong một số ngày liên tục, config: ngưỡng tốt, config: số ngày.) Danh sách các agent s ử dụng sóng có chất lượng tồi. Danh sách các agent có tỉ lệ CSR thấp (cf:ngưỡng thấp.) Quản lý Agent: Configure & activate/ deactivate (cấu hình, kích hoạt/ tắt) một agent. Reset (thiết lập lại) a gent. Query agent status (Truy vấn trạng thái agent). Query agent current configuration information (Truy vấn thông tin cấu hình hiện tại của agent) Manual measure activation (Kích hoạt độ đ o) Add/ delete (Thêm/Xóa) Search/View/Modify agen t information (Tìm kiếm/Hiển thị/Tùy chỉnh thông tin Agent ) Tìm kiếm và xem thông tin chi tiết các mẫu đo thuộc về agent (theo thời gian) Danh sách các agent không hoạt động( config: số ngày liên tục ) Hệ thống quản lý chất lượng dịch vụ Home Phone với cơ sở dữ liệu đồ sộ, yêu cầu thực hiện thành phần web phải đ ược xây dựng bằng một công nghệ mới, có độ an toàn và bảo mật cao, đồng thời phải dễ dàng tương tác với các thành phần khác của hệ thống. Theo những yêu cầu trên, tôi và nhóm thiết kế đã lựa chọn công nghệ Struts 2 – một framework trên nền Java, sử dụng Hibernate để làm việc với c ơ s ở dữ liệu. Với những đặc tính ưu việt của Struts 2 sẽ được trình bày ở chương 2, tôi tin mọi người sẽ nắm được những tính ưu việt của công nghệ này.
- Chương 2: CÔNG NGHỆ STRUTS 2 VÀ HIBERNATE 2.1. Giới thiệu Java là một nền tảng phát triển các ứng dụng phần mềm có vị trí rất lớn trong những năm cuối thế kỉ 20, đầu thế kỉ 21. Đánh dấu sự trưởng thành của mô hình lập trình hướng đối tượng, nó được coi là một nền tảng mang tính cách mạng trong nghành phần mềm. Mô hình máy ảo Virtual Machine đã cho phép các ứng dụng viết bằng Ja va có thể chạy trên nhiều hệ điều hành khác nhau. Vì thế Java là ngôn ngữ vẫn được rất nhiều các nhà thiết kế lựa chọn làm ngôn ngữ phát triển chính cho hệ thống của mình. 2.2. Servlet/JSP: Servlet/JSP là một bộ phận của công nghệ J2EE (Java 2 Platform, Enterprise Edition) phiên bản của Java chạy trên các máy chủ ứng dụng. Servlet: Servlet API được phát triển dựa trên những đ iểm mạnh của Java platform nhằm giải quyết vấn đề của CGI và trình chủ server API. Nó là một API đơn giản hỗ trợ tất cả các Web server và thậm chí các ứng dụng máy chủ dùng để kiểm tra và quản lý các công việc trên server (load –balancing). Nó giải quyết vấn đề thực thi bằng việc thực hiện tất cả các yêu cầu như những dòng trong một xử lý, hoặc trên một hệ thống load- balancing sẽ là mỗi xử lý trên một server trong kết chùm cluster. Các servlet dễ dàng chia sẽ tài nguyên. Bạn có thể sử dụng JavaMail để đọc và gửi mail, Java DataBase Connect (JDBC) để truy cập các database, lớp File và những lớp quan hệ để truy cập hệ thống file, RMI, CORBA, Enterprise Java Beans (EJB) để truy cập các hệ thống kế thừa… JSP: (viết tắt của tiếng Anh JavaServer Pages) còn được biết đến với một cái tên khác là Java Scripting Preprocessor – tạm dịch là “Bộ tiền xử lý v ăn lệnh Java” – là một công nghệ Java cho phép các nhà phát triển tạo nội dung HTML, XML hay một số định dạng khác của trang web một cách năng động, trong khi hồi âm yêu cầu của trình khách. Công nghệ này cho phép người ta nhúng mã Java và một số hành động xử lý đã được định trước (pre -defined actions ) vào trong nội dung tĩnh của trang. Trước khi hiển thị ra trình duyệt, tập tin JSP phải được biên dịch thành Servlet, dùng bộ biên dịch JSP (JSP compiler). Bộ biên dịch JSP có thể tạo servle t thành mã nguồn Java trước, rồi biên dịch mã nguồn ra tập tin .class dùng bộ biên dịch Java, hoặc có thể trực tiếp tạo mã b yte code cho servlet từ trang JSP . Hệ thống quản lý chất lượng dịch vụ Home Phone phát triển dựa trên công nghệ Servlet/JSP, sử dụng framework: Struts 2, cơ sở dữ liệu Oracle.
- Câu hỏi đặt ra là: Mô hình JSP/Servlet có đủ khả đáp ứng được yêu cầu của hệ thống hay không? Tôi đã tìm hiểu và đ ưa ra một số những nhược điểm của nó khiến nó không được ứng dụng trong việc xây dựng các hệ thống lớn: - Kiến trúc của JSP/servlet khá đơn giản, việc gộp các action (các hàm xử lý thông tin) là điều rất không nên. Bởi khi thiết kế hệ thống, các module của chương trình c ần phải được sắp xếp hợp lý, các action được chỉnh sửa mà không ảnh hưởng tới giao diện hiển thị. - Ngoài ra, việc phân chia các thành phần hợp lý dựa theo mẫu thiết kế chuẩn của một hệ thống được người dùng đánh giá rất cao. Sau khi hoàn thiện, nếu bản thân người dùng muốn phát triển tiếp ứng dụng của mình, họ cần có một h ướng dẫn chi tiết cách sửa các thành phần trong các gói (package). Trong quá trình thiết kế một hệ thống lớn, yêu cầu phải đòi hỏi làm việc theo nhóm, để quá trình phân công công việc hợp lý, việc phân tách các thành phần của hệ thống là cần thiết. Nếu không, quá trình làm việc sẽ thường xuyên bị gián đoạn. Công nghệ Struts đã thành công trong việc tối ưu các khuyết đ iểm vốn có của JSP/Servlet. Tính năng của nó sẽ được đề cập nhiều hơn qua nội dung sẽ trình bày sắp tới. 2.3. Struts Struts là một framework phục vụ việc phát triển các ứng dụng Web trên Java. Sử dụng mẫu thiết kế Model-View-Controller (MVC), Struts giải quyết rất nhiều các vấn đề liên quan đến các ứng dụng Web h ướng business đòi hỏi hiệu năng cao sử dụng Java servlet và JSP. Ứng dụng chạy trực tiếp trên JSP/Servlet chưa đáp ứng hết được yêu cầu bảo mật và chuyên nghiệp cho một hệ thống lớn. Struts cơ bản đ ịnh hình lại cách các Web programmer nghĩ về và cấu trúc một ứng dụng Web. 2.3.1 . Kiến trúc 3 tầng MVC Hình 2.1: Kiến trúc 3 tầng MVC
- Kiến trúc MVC là việc chia tất cả mục của một ứng dụng ra làm ba thành phần (component) khác nhau Model (Mô hình), View (Giao diện) và Controller (Bộ điều khiển). Các thành phần của kiến trúc MVC có một trách nhiệm duy nhất và không phụ thuộc vào các thành phần khác. - Model (Mô hình) : Model được giao nhiệm vụ cung cấp dữ liệu cho cơ sở dữ liệu và lưu dữ liệu vào các kho chứa dữ liệu. Tất cả các nghiệp vụ logic được thực thi ở Model. Dữ liệu vào từ người dùng sẽ thông qua View được kiểm tra ở Model trước khi lưu vào cơ sở dữ liệu. Việc truy xuất, xác nhận, và lưu dữ liệu là một phần của Model . - View (Giao diện): View hiển thị các thông tin cho người dùng của ứng dụng và được giao nhiệm vụ cho việc nhận các dữ liệu vào từ người dùng, gửi đi các yêu cầu đến bộ điều khiển, sau đó là nhận lại các phản hồi từ bộ đ iều khiển và hiển kết quả cho người dùng. Các trang HTML, JSP, các thư viện thẻ và các file nguồn là một phần của thành phần View - Controller (bộ điều khiển): Controller là tầng trung gian giữa Model và View. Controller được giao nhiệm vụ nhận các yêu cầu từ phía máy khách. Một yêu cầu được nhận từ máy khách được thực hiện bởi một chức năng lo gic thích hợp từ thành phần Model và sau đó sinh ra các kết quả cho người dùng và được thành phần View hiển thị. ActionServlet, Action, ActionForm và struts -config.xml là các phần của Controller. 2.3.2 . Các thành phần c ơ bản của Struts Struts là tập hợp các thư viện Java có thể phân thành 4 nhóm : +Framework cơ sở +Thư viện thẻ JSP +Tiles Plugin +Validator plugin Framework cơ sở: Framework cơ sở cung cấp các tính năng MVC cốt lõi. Nền tảng của framework cơ sở là Controller servlet: Action servlet. Các phần còn lại bao gồm các lớp cơ sở mà ứng dụng của bạn sẽ kế thừa và các class tiện ích. Nổi bật nhất trong các lớp là lớp Action và lớp ActionForm:
- Lớp Action: được sử dụng bởi ActionServlet để xử lý các request xác định. Lớp ActionForm: bắt dữ liệu từ các HTML form và được sử dụng để chuyển dữ liệu trở lại View để sinh ra các trả lời (response). Thư viện thẻ JSP: Struts đưa ra các thư viện thẻ hỗ trợ việc lập trình View Logic trong JSP. Các thư viện thẻ JSP cho phép người lập trình JSP sử dụng các thẻ giống HTML. Tiles Plugin Tiles là một JSP template framework giúp thuận tiện cho việc tái sử dụng mã HTML. Validator plugin Validator là một framework với khả năng thực hiện xác nhận tính hợp lệ của dữ liệu ở cả phía server và client. 2.3.3 . Các phiên bản của struts. Hiện nay struts đã phát triển 2 phiên bản là struts 1x và struts 2x. Có một số khác biệt trong cấu trúc của 2 phiên bản. Dưới đây là một số khác biệt cơ bản: Tính năng Struts 1 Struts 2 - Sử dụng lớp abstract (lớp - Action có thể là bất kỳ lớp Action classes trừu tượng), không sử Java nào. (Lớp hoạt dụng interface (lớp giao động) - Cung cấp sẵn 1 interface diện). chung cho các action là - Action yêu cầu bắt buộc ActionSupport, tuy nhiên phải kế thừa từ một lớp không bắt buộc thực thi abstract nào đó. action này Các Action là độc nhất vì Trong Struts 2 các đối tượng Threading thế chúng phải được được khởi tạo cho mỗi Model thread-safe bởi vì chỉ có request do đó không có (Mô hình một thể hiện của lớp để thread-safety. lu ồng) giữ lại tất cả request đối Một servlet container sinh ra với Action đó. nhiều đối tượng throw-away cho mỗi request Actions bị phụ thuộc vào Action chỉ là một lớp bình Servlet thư viện servlet API bởi vì thường và chúng ta không Dependency HttpServletRequest và cần truyền đối tượng (Phần phụ HttpServletResponse được HttpServletRequest và thuộc servlet)
- truyền vào phương thức HttpServletResponse cho execute khi Action được phương thức execute. thực thi. Struts 2 không phụ thuộc vào API c ủa servlet bởi chúng tạo các POJO đơn giản. Ứng dụng Struts1 có một Các Action có thể test các Testability vấn đề chính trong việc kh ởi tạo Action.Các Action là (Khả n ăng kiểm testing bởi vì phương thức một POJO đơn giản và không tra) execute phụ thuộc vào phụ thuộc framework,vì thế Servlet API. Struts việc test trở lên đơn giản hơn TestCase cung cấp một tập hợp các đối tượng Mock cho Struts 1 Struts1 sử dụng một đối Struts2 sử dụng các thuộc Harvesting tượng ActionForm để giữ tính Action để giới hạn sự Input các input.Giống như các cần thiết cho các đôi tượng (Kết quả đầu Action, tất cả các input thứ 2. Từ đó giảm sự dư vào) ActionForms cần được thừa. thừa kế lớp ActionForm cơ bản . Struts 1 ràng buộc đối Struts 2 sử dụng công nghệ Binding values tượng bên trong ngữ cảnh ValueStack để đảm bảo việc into views của trang bằng cách sử truy c ập giá trị bằng taglib (Ràng buộc giá dụng cơ chế JSP chuẩn. không thông qua coupling trị trong việc (kết nối) hoặc rendering (biểu h iển thị) diễn). Trong Struts 1 các thuộc Struts 2 sử dụng OGNL đối Type tính của ActionForm hầu với việc chuyển kiểu dữ liệu. Conversion hết định dạng là (Thay đổi kiểu) String.Việc chuyển đổi dựa trên từng lớp, không được cấu hình dựa trên thể hiện của lớp.
- Mỗi module trong Struts 1 Trong Struts 2 các vòng đời Control Of có sự tách rời Request khác nhau được tạo ra dựa Action Processors (vòng trên nền tảng Action thông Execution đời),trong khi tất cả các qua ngăn xếp chặn (Kiểm soát thực Action trong module cần (Interceptor Stacks).Các stack thi) phải chia sẻ cùng vòng tùy biến được tạo ra và sử đời. dụng với Action khác nhau. Sự khác nhau như trên, với những ưu điểm của Struts 2 so với Struts 1 làm Struts 2 trở thành công cụ hữu ích cho các nhà thiết kế phần mềm Web hiện tại và tương lai. 2.4. Struts 2 2.4.1. Vòng đời của các yêu cầu trong Struts 2 Hình 2 .2 : Dòng xử lý trong Struts 2 - Người sử dụng gửi yêu cầu đến server để yêu cầu một số tài nguyên của ứng dụng - Bộ đ iều khiển lọc (FilterDispatcher) xem xét yêu cầu và sau đó xác định một Action thích hợp - Các bộ chặn (Interceptors) được ứng dụng: các cấu hình bộ chặn áp dụng cho các chức năng chung như: luồng công việc, thẩm định, tải file … được tự động ứng dụng vào yêu cầu - Thực thi Action: sau khi phương thức action được thực thi để thực hiện các hoạt động liên quan đến c ơ sở dữ liệu như sắp xếp hoặc nhận dữ liệu từ cơ sở dữ liệu
- - Sinh kết quả - Sau đó kết quả yêu cầu được trả về thông qua bộ chặn theo chiều ngược lại. Kết quả trả về cho phép chúng ta thực hiện thu dọn hoặc thêm quá trình xử lý - Hiển thị kết quả cho người sử dụng: việc điều khiển cuối cùng được trả về cho trình chứa servlet, nó sẽ gửi kết quả trả về cho trình duyệt của người sử dụng. 2.4.2 . Kiến trúc Struts 2 Hình 2.3: Kiến trúc của 1 ứng dụng struts 2. - Action ContextCleanUp filter: là một tùy chọn và nó được sử dụng khi tích hợp với các công nghệ khác như SiteMash Plugin
- - FilterDispatcher: tiếp đến, FilterDispatcher (bộ đ iều khiển lọc) được gọi, nó quay lại sử dụng ActionMapper để xác đ ịnh Action nào được triệu gọi. Nếu action được yêu cầu được triệu gọi thì FilterDispatcher ủy nhiệm việc đ iều khiển lại cho ActionProxy. - ActionProxy:ActionProxy nhận sự giúp đỡ từ bộ quản lý cấu hình file (Configuration Files manager), được khởi tạo từ file struts.xml. Sau đó ActionProxy tạo ra một ActionInvocation, thực thi (implement) từ mẫu lệnh. ActionInvocation xử lý triệu gọi bộ chặn (Interceptors) nếu nó đ ược cấu hình và sau đó triệu gọi Action. ActionInvocation tìm kiếm kết quả thích hợp, sau đó kết quả được thực thi, nó triệu gọi việc sinh ra trang các JSP hoặc các mẫu. Sau đó, các Interceptor được thực thi một lần nữa theo thứ tự ngược lại. Việc trả về kết quả cuối cùng thông qua các bộ lọc được cấu hình trong file web.xml. Nếu bộ lọc ActionContextCleanUp được cấu hình, thì FilterDispatcher không d ọn dẹp ThreadLocal ActionContext. Nếu bộ lọc ActionContextCleanUp không có thì FilterDispatcher sẽ dọn dẹp tất cả các ThreadLocal tồn tại. 2.4.3. Ứng dụng đơn giản với Struts 2: Hiển thị thông điệp “Hello world” Sử dụng Eclipse Java EE IDE for Web Developers. o Tạo 1 project mới: Tải gói struts 2 tại trang chủ của struts: http://struts.apache.org/2.1.8.1/index.html Copy các file sau từ thư mục \struts-2.0.1 1-all\struts-2.0.11\lib vào thư mục WEB_INF/lib của ứng dụng ta mới tạo: struts2 -core.jar, xwork.jar, ognl.jar, freemarker.jar, commons-logging.jar o Sử dụng Server: Apache TomCat 6.0.20 download tại địa chỉ: http://tomcat.apache.org/ Với Eclipse, chọn New ->Project-> Dynamic Web Project. Sau đó đặt tên cho project, mặc định để chạy trên server Tom Cat 6.0 . Các bước thiết lập cấu hình cho hệ thống như dưới đây:
- Hình 2 .4: Tạo web project trên eclipse Bước 1: Xâ y dựng Action tương tác với thành phần “Model”. - Tạo lớp Struts2HelloWorld.java trong struts2tutorial \WEB-INF\src\java\exam package java.exam; import com.opensymphony.xwork2.ActionSupport; import java.util.Date; public class Struts2HelloWorld extends ActionSupport { public static final String MESSAGE = "Struts 2 Hello World !"; public String execute() throws Exception { setMessage(MESSAGE); return SUCCESS; } private String message; public void setMessage(String message){ this.message = message; } public String getMessage() { return message; } public String getCurrentTime(){ return new Date().toString(); } }
- Bước 2: Thành phần “Controller”. - Tạo file cấu hình đ iều khiển struts.xml trong thư mục: struts2tutorial\WEB-INF\src với nội dung: /pages/HelloWorld.jsp File struts.xml s ẽ có mặt trong classpath của ứng dụng, ta có thể đặt file này trong jar và trong thư mục lib của ứng dụng hoặc cũng có thể đặt nó trong thư mục classes của ứng dụng web . - Cấu hình file web.xml c ủa ứng dụng web struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /*
CÓ THỂ BẠN MUỐN DOWNLOAD
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn