Do dự án AB hiện chưa có một kho lưu trữ trung tâm cho các dịch vụ mà họ cung cấp cho các tổ chức. Chính vì vậy, Service Directory được ra đời, nó là một phần của dự án, dùng để cung cấp một cho dự án một kho lưu trữ trung tâm. - Yêu cầu bài toán đặt ra. + Ứng dụng cho phép xem, sửa và tạo mới thông tin lưu trữ các dịch vụ và các tổ chức được cung cấp dịch vụ. + Hiển thị các thông báo cần thiết tương ứng với từng hành động được đặc tả trong tài liệu phân tích yêu cầu người sử dụng. + Tổ chức lưu trữ trên thông tin theo dạng các bảng trong một hệ quản trị cơ sở dữ liệu bất kỳ. + Ứng dụng công nghệ Struts2 vào trong quá trình xây dựng web động của ứng dụng. + Áp dụng một số công nghệ mới khác vào trong quá trình xây dựng như Hibernate, Spring …
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
-BÁO CÁO THỰC TẬP NGÀNH: CÔNG NGHỆ THÔNG TIN
ĐỀ TÀI:
ỨNG DỤNG FRAMEWORK STRUTS2 XÂY DỰNG
WEBSITE SERVICE DIRECTORY.
Cán bộ hướng dẫn: Đàm Anh Tuấn.
Giảng viên đánh giá:
Sinh viên: Nguyễn Văn Nội
Mã sinh viên: 10020249 Lớp: K55C-CLC
Hà Nội, 08/2013.
Trang 2MỤC LỤC
LỜI CẢM ƠN 3
I Giới thiệu chung 4
I.1 Giới thiệu công ty 4
I.2 Giới thiệu công việc 6
I.2.1 Các ngôn ngữ và công nghệ đã nghiên cứu 6
I.2.1.1 Java core 6
I.2.1.2 HTML&CSS 6
I.2.1.3 JavaScript 6
I.2.1.4 JSP 7
I.2.1.5 Servlet 7
I.2.1.6 Unit Testing 7
I.2.1.7 Struts Framework 8
I.2.1.8 SQL Server 9
I.2.1.9 Ajax 9
I.2.1.10 Hibernate 10
I.2.1.11 Spring 10
I.3 Giới thiệu qua bài toán 11
II Yêu cầu bài toán 11
II.1 Giới thiệu chi tiết 11
II.2 Yêu cầu 11
II.3 Công việc 12
III Tóm tắt lý thuyết, giải pháp, thuật toán 12
III.1 Các lý thuyết, giải pháp, thuật toán liên quan 12
III.2 Cách giải quyết của sinh viên 13
III.3 Liên hệ & so sánh với các cách đã có 13
IV Kết quả đạt được, hướng phát triển 14
IV.1 Kết quả đạt được 14
Trang 3IV.2 Kỹ năng & kiến thức thu thập được 14
IV.2.1 Về kỹ năng 14
IV.2.2 Về kiến thức 14
IV.3 Hướng phát triển tiếp theo để hoàn thiện giải pháp 14
TÀI LIỆU THAM KHẢO 15
Trang 4LỜI CẢM ƠN
Trong đợt thực tập vừa qua, em đã nhận được sự hướng dẫn và giúp đỡ và động viên tận tình từ nhiều phía Tất cả những điều đó đã trở thành nguồn động lực to lớn giúp em
có thể hoàn thành tốt mọi công việc được giao Với tất cả sự cảm kích và trân trọng, em xin được gửi lời cảm ơn đến tất cả mọi người
Trước tiên em xin gửi lời cảm ơn đến Ban lãnh đạo Công ty FPT Software đã tạo điều kiện cho em được tham gia thực tập tại quý công ty cũng như cung cấp tất cả các cơ
sở vật chất và trang thiết bị có thể cho em trong thời gian vừa qua Xin cảm ơn anh Hoàng Việt Thắng, chị Trần Thị Thanh Huyền, anh Đàm Anh Tuấn cùng toàn thể các anh chị khác trong công ty đã tận tình hướng dẫn và giúp đỡ em trong suốt thời gian em tham gia thực tập
Em cũng xin được gửi lời cảm ơn đến Ban lãnh đạo trường Đại học Công nghệ - Đại học Quốc gia Hà Nội, lãnh đạo khoa Công nghệ thông tin đã tổ chức chương trình liên kết giữa nhà trường và công ty FPT Software thật sự bổ ích, giúp em có cơ hội tham gia một đơn vị thực tập tốt
Em xin chân thành cảm ơn các thầy cô giáo của trường Đại học Công nghệ - Đại học Quốc gia Hà Nội, xin cảm ơn quý thầy cô đã tận tình dạy bảo, giúp đỡ em trong suốt thời gian em học tại trường cũng như trong thời gian thực tập vừa qua
Xin được cảm ơn tất cả các sinh viên tham gia thực tập tại FPT Software trong đợt thực tập vừa qua, những người đã luôn sát cánh bên mình, chia sẻ, ủng hộ và giúp đỡ mình trong thời gian thực tập vừa qua
Xin trân trọng cảm ơn!
Trang 5I Giới thiệu chung
I.1.Giới thiệu công ty
Tên đơn vị thực tập:
Công ty FPT Software
Địa chỉ:
Tầng 4, Tòa nhà Toyota Mỹ Đình (đối diện Bến xe Mỹ Đình), số 15 đường Phạm Hùng, Quận Cầu Giấy, TP Hà Nội, Việt Nam
Lịch sử phát triển:
Được thành lập năm 1988 bởi một nhóm các nhà khoa học trẻ trong các lĩnh vực Vật lý, Toán, Cơ, Tin học, chỉ sau một năm, FPT đã thành lập một bộ phận tin học mang tên ISC (Informatic Service Center)
Đến tháng 12 năm 1994, khi đã đủ lớn, ISC được tách thành các bộ phận chuyên sâu về dự án, phân phối, phần mềm… Bộ phận phần mềm lúc đó có tên là FSS (FPT Software Solutions - tên tiếng Việt là Xí nghiệp Giải pháp Phần mềm FPT)
Từ 1994 đến 1998, FSS tiếp tục phát triển và cung cấp các giải pháp phần mềm cho các lĩnh vực Ngân hàng, Kế toán, Thuế, Hải quan, Công an
Cuối năm 1998 đầu 1999, sau khi chiến lược xuất khẩu phần mềm được định hình, một nhóm chuyên gia được tách ra từ FSS để thành lập FSU1 (FPT Strategic Unit #1) như bộ phận chịu trách nhiệm mũi nhọn trong sứ mệnh Toàn Cầu Hoá FSU1 chính là tiền thân của FSOFT ngày nay
Năm 2001 được đánh dấu bằng các hợp đồng OSDC với Mỹ và đặc biệt là OSDC với NTT-IT - khách hàng Nhật bản đầu tiên của FSOFT Năm 2001 cũng là năm FSOFT bắt đầu dự án CMM-4, với mục tiêu đạt chứng chỉ CMM mức 4 trong vòng một năm FSOFT đạt CMM mức 4 vào tháng 3/2002, trở thành công ty đầu tiên
ở khu vực Đông Nam Á đạt chứng chỉ này Năm 2002 cũng là năm FSOFT củng cố lại sơ đồ tổ chức, bằng việc thành lập các Trung tâm sản xuất và các Phòng chức năng Cuối 2002, lần đầu tiên doanh số FSOFT vượt ngưỡng 1 triệu USD
Năm 2003 đem về cho FSOFT nhiều khách hàng mới, đặc biệt là các khách hàng lớn của Nhật như Hitachi, Sanyo, Nissen, IBM Japan FSOFT thành lập Văn phòng tại thành phố Hồ Chí Minh
Đầu năm 2004, FSOFT trở thành Công ty cổ phần phần mềm FPT Trụ sở tại Tp
Hồ Chí Minh được chuyển về toà nhà e-town FSOFT đạt CMM mức 5 (mức cao nhất) vào tháng 3 Để phục vụ tốt hơn các khách hàng Nhật, Văn phòng đại diện của
Trang 6FSOFT được mở tại Tokyo Năm 2004 cũng là năm gặt hái nhiều thành công của Công ty Phần mềm FPT, với doanh số xuất khẩu năm 2004 tăng trưởng hơn 200% so với năm 2003
Năm 2005 là năm đánh dấu bước phát triển của công ty về mọi mặt, giúp FSOFT khẳng định vị trí công ty phần mềm hàng đầu Việt Nam Tháng 8/2005 thành lập Chi nhánh Đà Nẵng, tháng 11 thành lập Công ty FSOFT JAPAN tại Tokyo, tháng 12 khai trương Trung tâm Tuyển dụng và Đào tạo tại toà nhà Simco, Hà nội Hết năm 2005, FSOFT tăng trưởng 114% doanh số, trở thành công ty phần mềm đầu tiên của Việt Nam có 1000 nhân viên
Tháng 10, năm 2007, các Trung tâm sản xuất phần mềm được chuyển đến làm việc tập trung tại Tòa nhà FPT tại Phạm Hùng (Hà Nội) Cuối năm 2007, doanh số của Fsoft đạt 29,6 triệu USD, tăng 79% so với doanh thu năm 2006; số nhân viên chính thức là 2,287 người
Năm 2008 diễn ra với việc thành lập 4 Công ty chi nhánh tại Pháp, Malaysia,
Mỹ, Australia; doanh số đạt 42 triệu USD với 2600 nhân viên
FSOFT có hệ thống khách hàng rộng lớn trên toàn thế giới ở Mỹ, Châu Âu, Nhật Bản, và các nước Châu Á Thái Bình Dương (Malaysia, Singapore, Thailand, Australia) Trong chiến lược gia nhập hàng ngũ những nhà cung cấp dịch vụ phần mềm hàng đầu thế giới, Công ty tập trung phát triển nguồn nhân lực chất lượng cao – giá trị cốt lõi đóng góp vào tăng trưởng của công ty Với 80% nhân viên FSOFT thuần thục về tiếng Anh và hơn 200 người sử dụng tiếng Nhật, FPT Sofware không ngừng tìm kiếm và tạo cơ hội cho những tài năng trẻ Mục tiêu trong năm 2008, Fsoft
sẽ đạt doanh thu 48,5 triệu USD, lợi nhuận ước tính sẽ đạt 14,7 triệu USD với số nhân viên sẽ là 3400 người
Các lĩnh vực hoạt động chính:
FPT Software là công ty xuất khẩu phần mềm hàng đầu Việt Nam, cung cấp các dịch vụ về gia công phần mềm, triển khai ERP và hệ thống phần mềm nhúng Thịtrường xuất khẩu chủ yếu của công ty là Nhật Bản, Anh, Pháp, Mỹ, Thái Lan, Malaysia và Singapore
Công ty Cổ phần Phần mềm FPT là công ty chuyên về lĩnh vực gia công phần mềm, chính vì thế nên công ty cung cấp tất cả dịch vụ liên quan như:
+ Xuất khẩu phần mềm + Giải pháp phần mềm + Phânphối các sản phẩm công nghệ thông tin + Tích hợp hệ thống
+ Cung cấp các giải pháp, dịch vụ viễn thông và internet
Trang 7+ Triển khai và Tư vấn dịch vụ ERP + Phát triển hệ thống nhúng
+ Các dịch vụ khác
I.2.Giới thiệu công việc
I.2.1 Các ngôn ngữ và công nghệ đã nghiên cứu.
I.2.1.1 Java core.
Java core là các kiến thức cơ bản về lập trình Java như cú pháp lệnh, các câu lệnh lặp, câu lệnh rẽ nhánh, các biến và phạm vi của từng biến, các Interface, cấu trúc đơn kế thừa…
I.2.1.2 HTML&CSS.
HTML là viết tắt của Hyper Text Markup Language, là ngôn ngữ đánh dấu siêu văn bản Siêu văn bản là một văn bản thuần text sử dụng các thẻ điều khiển hiển thị
CSS là từ viết tắt của Cascading Style Sheets : Công dụng dùng để trang trí trang web của bạn, và thông thường được gắn với các ngôn ngữ như là HTML, PHP, dùng làm nổi bậc trang web và hình ảnh trang web của bạn
I.2.1.3 JavaScript.
Script có thể xem như một công cụ nhỏ nhằm hỗ trợ ngời lập trình tạo ra các ứng dụng nhanh chóng, đơn giản chứ không mang tính chuyên nghiệp như một ngôn ngữ lập trình thật sự
JavaScript là một loại Script cho phép phát triển các ứng dụng trên Internet ở cả phía Client và Server bằng cách viết các chơng trình với cú pháp hoàn toàn giống Java
Theo phiên bản hiện hành, là một ngôn ngữ lập trình kịch bản dựa trên đối tượng được phát triển từ các ý niệm nguyên mẫu Ngôn ngữ này được dùng rộng rãi cho các trang web, nhưng cũng được dùng để tạo khả năng viết script sử dụng các đối tượng nằm sẵn trong các ứng dụng Nó vốn được phát triển bởi Brendan Eich tại Hãng truyền thông Netscape với cái tên đầu tiên Mocha, rồi sau đó đổi tên thành LiveScript, và cuối cùng thành JavaScript Giống Java, JavaScript có cú pháp tương tự C, nhưng nó gần với Self
hơn Java .js là phần mở rộng thường được dùng cho tập tin mã nguồn JavaScript [1]
Trang 8+ JavaScript là một ngôn ngữ script, dùng để phát triển các ứng dụng Internet ở Client
và Server
+ JavaScript có thể viết kèm trong file HTML để xây dựng một trang Web chặt chẽ, phong phú về nội dung và hình thức, như kiểm tra tính tơng thích và thông báo lỗi trong quá trình nhập liệu
I.2.1.4 JSP.
JSP là kịch bản trình chủ (Server Script) được chạy trên nền JDK 1.3 trở về sau, cùng với ứng dụng Web Server để quản lý chúng Web Server thường sử dụng là Tomcate, Java Web Server, JRUN, WebLogic và Apache,
Tiền thân của JSP là xuất phát từ Java Servlet, khi làm việc với Java Servlet thì hầu hết các lập trình viwên gặp khó khăn khi xuất nhập dữ liệu, cụ thể là giao diện với người
sử dụng Chính vì vậy SUN Microsystem cung cấp kịch bản JSP là phần mở rộng của Java Servlet để cho phép quá trình lập trình ứng dụng Web trở nên đơn giản hơn Tuy nhiên, những trang JSP này khi biên dịch đề thông qua trang trung gian là Java Sevrlet
I.2.1.5 Servlet.
Java Servlet API cho phép nhà phát triển phần mềm thêm những nội dung động vào Web server sử dụng Java platform Nó phát sinh nội dung thông thường là HTML, đôi khi cũng có thể là các ngôn ngữ khác như XML Servlets là bản sao Java của các kỹ thuật trình bày nội dung Web động khác như là PHP, CGI và ASP.NET Servlets có thể duy trì tình trạng thông qua các giao dịch của máy chủ bằng việc sử dụng HTTP cookies, các giá trị session hoặc URL rewriting [2]
I.2.1.6 Unit Testing.
Unit Test (UT) là một kỹ thuật quan trọng góp phần nâng cao chất lượng phần mềm (PM), nhưng có nhiều quan điểm trái ngược nhau về việc đưa UT vào quy trình phát triển PM Bài viết này giới thiệu một cái nhìn tổng quan về UT và mô hình phát triển phần mềm hiện đại TDD (Test-Driven Development).
UT là kỹ thuật kiểm nghiệm các hoạt động của mọi chi tiết mã (code) với một quy trình tách biệt với quy trình phát triển PM, giúp phát hiện sai sót kịp thời UT còn có thể giúp phát hiện các vấn đề tiềm ẩn và các lỗi thời gian thực ngay cả trước khi chuyên viên kiểm định chất lượng (QA - Quality Assurance) tìm ra, thậm chí có thể sửa lỗi ngay từ ý tưởng thiết kế.
Trang 9UT là các đoạn mã có cấu trúc giống như các đối tượng được xây dựng để kiểm tra từng bộ phận trong hệ thống Mỗi UT sẽ gửi đi một thông điệp và kiểm tra câu trả lời nhận được đúng hay không, bao gồm:
+ Các kết quả trả về mong muốn
+ Các lỗi ngoại lệ mong muốn
Các đoạn mã UT hoạt động liên tục hoặc định kỳ để thăm dò và phát hiện các lỗi
kỹ thuật trong suốt quá trình phát triển, do đó UT còn được gọi là kỹ thuật kiểm nghiệm
tự động.
UT có các đặc điểm sau:
+ Đóng vai trò như những người sử dụng đầu tiên của hệ thống.
+ Chỉ có giá trị khi chúng có thể phát hiện các vấn đề tiềm ẩn hoặc lỗi kỹ thuật [3]
I.2.1.7 Struts Framework.
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 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
Để hiểu Struts, việc hiểu rõ kiến trúc MVC là một điều quan trọng (có thể mang tính bắt buộc) Phần này sẽ đi sâu hơn một chút vào từng phần của kiến trúc MVC
Model component
Trong kiến trúc MVC, các model component cung cấp một giao diện với dữ liệu và/hoặc các dịch vụ được sử dụng bởi ứng dụng Theo cách này, các controller component không cần phải chứa code để thao tác với dữ liệu của ứng dụng Thay vào đó, chúng giao tiếp với các model component để thực hiện truy cập và thao tác dữ liệu Như vậy, các model component cung cấp business logic Các model component có thể ở nhiều dạng từ các Java bean đến các EJB hay các Web service
View component
Trang 10Các view component được sử dụng trong kiến trúc MVC để generate response về browser Như vậy một view component cung cấp những gì mà user nhìn thấy Thường thì các view component là các trang JSP hay HTMLđơn giản Tuy nhiên, các view component cũng có thể sử dụng WML hay các công nghệ khác Đây là một ưu điểm thiết
kế chính của MVC Bạn có thể sử dụng bất kỳ công nghệ hiển thị nào mà không sợ tác động đến lớp Model của ứng dụng
Controller component
Ở trung tâm của kiến trúc MVC là các controller component Controller thường là một serlvet tiếp nhận các request cho ứng dụng và quản lý luồng dữ liệu giữa lớp Model
và lớp View Như vậy, nó điều khiển cách mà các lớp Model và View tương tác Controller thường sử dụng các helper class để chuyển điều khiển qua các request hay tiến trình xác định
Các thành phần component tương ứng trong Struts
Struts Controller Components: đóng vai trò nhận các giá trị input từ client, gọi những phương thức để thực thi nghiệp vụ bussiness, trả dữ liệu về và chọn phần view phù hợp để hiển thị
Struts Model Components: bao gồm các lớp cần thiết để xử lý những phương thức bussiness, ngoài ra còn có các lớp DTOs (Data Transfer Objects), các lớp truy xuất cơ sở
dữ liệu…
Struts View Components: đây là phần hiển thị của ứng dụng web bao gồm các file HTML, các phần data transfer object, JSP, custom tabs, quản lý các tài nguyên…
I.2.1.8 SQL Server.
SQL Server là một hệ thống quản lý cơ sở dữ liệu (Relational Database Management System (RDBMS)) sử dụng Transact-SQL để trao đổi dữ liệu giữa Client computer và SQL Server computer Một RDBMS bao gồm databases, database engine và các ứng dụng dùng để quản lý dữ liệu và các bộ phận khác nhau trong RDBMS
SQL Server được tối ưu để có thể chạy trên môi trường cơ sở dữ liệu rất lớn (Very Large Database Environment) lên đến Tera-Byte và có thể phục vụ cùng lúc cho hàng ngàn user SQL Server 2000 có thể kết hợp được với các server khác như Microsoft Internet Information Server (IIS), E-Commerce Server, Proxy Server
Trang 11I.2.1.9 Ajax.
- “Công nghệ Ajax” chỉ mới xuất hiện vào khoảng tháng 2 năm 2005
- Ajax – Asynchronous JavaScript and XML (JavaScript và XML không đồng bộ)
là bộ công cụ cho phép tăng tốc độ ứng dụng Web bằng cách cắt nhỏ dữ liệu và chỉ hiển thị những gì cần thiết thay vì phải tải đi tải lại toàn bộ trang Web
- Ajax không phải là một công nghệ đơn lẻ mà nó là tập hợp của nhiều công nghệ AsynchronousJavaScript + CSS + DOM + XMLHttpRequest
- Ajax bao gồm:
+ Thể hiện Web theo tiêu chuẩn XHTML và CSS
+ Nâng cao tinh năng động và phản hồi bằng DOM (Document Object Model) + Trao đổi và truy cập/tác động lên thông tin, dữ liệu bằng XSL và XSLT
+ Nhận thông tin không đồng bộ (Synchronous) dùng XMLHttpRequest
+ Và tất cả các kỹ thuật trên được liên kết lại với nhau bằng JavaScript
I.2.1.10 Hibernate.
Hibernate là một framework cho persistence layer, là một dịch vụ lưu trữ và truy vấn dữ liệu quan hệ mạnh mẽ và nhanh chóng Hibernate giúp người phát triển các class dùng để lưu trữ dữ liệu theo cách thức hướng đối tượng: association, inheritance, polymorphism, composition và collections Hibernate cho phép thực hiện các câu truy vấn dữ liệu bằng cách sử dụng ngôn ngữ SQL mở rộng của Hibernate (HQL) hoặc là ngôn ngữ SQL nguyên thuỷ cũng như là sử dụng các API
Không giống như các persistence layer khác, Hibernate không ẩn đi sức mạnh của ngôn ngữ SQL thuần túy mà Hibernate còn đảm bảo cho người phát triển đầu tư vào công nghệ và tri thức cơ sở dữ liệu quan hệ là luôn luôn chính xác Và điều quan trọng hơn nữa
là Hibernate được license theo LGPL (Lesser GNU Public License) Theo đó, bạn có thể thoải mái sử dụng Hibernate trong các dự án open source hoặc các dự án thương mại (commercial)
I.2.1.11 Spring.
Spring là một application framework mã nguồn mở, được giới thiệu vào năm
2002 Rod Johnson đã đưa ra ý tưởng này từ kinh nghiệm làm việc với kiến trúc J2EE
Như Hibernate chống lại CMP về nguyên lý cơ bản của kỹ thuật ORM, Spring chống lại EJB vì sự phức tạp và không phù hợp cho các unit test Thay vì EJB, Spring sử dụng Java bean, với một vài sự thay đổi để thu được tất cả các thuận lợi mà môi trường EJB đưa ra Do đó Spring là một sự lựa chọn khác so với EJB