Tìm hiểu về hibernate 4 và struts2 mvc framework và viết ứng dụng xây dựng website bán điện thoại
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỶ THUẬT TP HCM
KHOA ĐÀO TẠO CHẤT LƯỢNG CAO
FRAMEWORK VÀ VIẾT ỨNG DỤNG XÂY DỰNG WEBSITE
BÁN ĐIỆN THOẠI
Giảng viên hướng dẫn : THS Nguyễn Minh Đạo
Tiểu luận chuyên
nghành
Trang 2LỜI CÁM ƠN
Chúng em xin chân thành cám ơn trường đại học Sư Phạm Kỹ Thuật TPHCM, khoađào tạo Chất Lượng Cao đã tạo điều kiện thuận lợi cho chúng em thực hiện khóa luậnnày
Chúng em xin được gửi lời cảm ơn chân thành đặc biệt đến thầy Nguyễn Minh Đạo,người đã tận tình chỉ bảo và hướng dẫn chúng em thực hiện tiểu luận này
Bên cạnh đó, chúng em xin gửi lời cảm ơn đến các thầy cô giáo, những người đã giảngdạy, tạo điều kiện cho em tích lũy được những kiến thức quý báu trong suốt 4 năm họcqua
Dù đã cố gắng hoàn thành đề tài tiểu luận đúng yêu cầu, nhưng do thời gian hạn hẹp
và khả năng còn hạn chế nên chắc chắn sẽ có những thiếu sót không tránh khỏi Chúng
em mọng nhận được sự thông cảm và tận tình chỉ bảo của các thầy cô và các bạn
Em xin chân thành cảm ơn!
Tóm tắt
Công nghệ thông tin là một ngành ngày càng phát triển mạnh mẽ trên thế giới, theo xu
Trang 3triển đó, thì một trong các ngôn ngữ lập trình được sử dụng phổ biến đó là Java, là mộtngôn ngữ lập trình hướng đối tượng mang nhiều ưu thế vượt trội Song đó cùng với sựphát triển thì có rất nhiều công nghệ ra đời hỗ trợ lập trình Java Trong đó Struts 2đang là một framework đang được sử dụng mạnh mẽ, sẽ là tối ưu hơn hẳn nếu sửdụng kết hợp với Hibernate 4.0 Đề tài tập trung nghiên cứu về Struts 2 và Hibernate4.0 framework, qua đó xây dựng website bán điện thoại online để làm nổi bật lên ưuđiểm của các công nghệ này.Với các công nghệ mà chúng em nghiên cứu, báo cáo này
sẽ cung cấp những kiến thức căn bản về:
Còn đối với quản trị viên (administrator) thì có các chức năng sau:
Quản lí tài khoản
Quản lí đơn hàng
Quản lí danh sách sản phẩm
Trang 4 Quản lý nhà sản xuất
Quản lý bình luận
Trang 5Chương 1: Tổng Quan
1.1 Lý do chọn đề tài
Trong lập trình hướng đối tượng, java là một ngôn ngữ phát triển rất mạnh và
có những ưu điểm vượt trội so với C# Vì thế, nhóm em chọn theo hướng ngônngữ java, tìm hiểu những công nghệ mới và xây dựng chương trình ứng dụngtrong tiểu luận chuyên ngành này, mở ra hướng phát triển sau này trong việcthực hiện khóa luận tốt nghiệp
Eclipse JEE 4.0, Netbean IDE 7.1
Những thông tin chi tiết và mở rộng về công nghệ sẽ được nhóm em triển khaitrong chương 2 và chương 3
1.3 Tính khoa học và thực tiễn
Trong lĩnh vực phát triển ứng dụng Web, các công nghệ mới liên tiếp ra đời, cảitiến để hỗ trợ cho các nhà phát triển, các lập trình viên xây dựng Web cáchnhanh chóng và chất lượng và hiệu quả cao, thêm vào đó là sự bảo mật chứngthực người dùng, nâng cao tính tin cậy dễ sử dụng, tính thân thiện cao chongười dùng Struts & Hibernate là những framework được tin dùng và phổ biếntrong lĩnh vực web java hiện nay do đó tin rằng trang Web sẽ được xây dựngnhanh chóng, đẹp mắt và bảo mật rất tốt Hiện nay, được sử dụng phổ biếnnhất là Struts2và Hibernate4 framework
Trang 61.4 Mục tiêu nghiên cứu.
Nghiên cứu và viết báo cáo về kiến thức căn bản Struts2,Hibernate 4
Xây dựng Website Bán Điện Thoại
Trang 7CHƯƠNG 2: NỘI DUNG NGHIÊN CỨU
2.1 Strust 1
Struts nguồn gốc được tạo ra bởi Craig R McClanahan và sau đó được chuyểngiao cho dự án Jakarta của Apache Software Foundation (AFS) vào năm 2000.Vào tháng 6 năm 2001, Struts đã phát hành phiên bản 1.0 Sau đó, có rất nhiềungười đã tham gia đóng góp cả về mã nguồn và tài liệu cho dự án và Strutsngày càng trở nên hoàn thiện hơn Struts là một framework mã nguồn mở đượcphát triển trên nền tảng của ngôn ngữ Java, JSP nhằm mục đích tạo ra mộtthành phần chuẩn trong việc thiết kế ở tầng Web sử dụng MVC dựa trên nềntảng của J2EE Với Struts, người lập trình sẽ không phải quan tâm đến việc xâydựng mô hình MVC như thế nào mà chỉ cần cấu hình và chạy tầng hiển thị của
dự án, điều này cho phép giảm thiểu chi phí đào tạo, thời gian phát triển dự ánnhanh hơn và cho phép hệ thống chạy ổn định trên các nền và hoặc module tíchhợp khác nhau Với Struts ta có thể tách làm 3 tầng làm việc riêng biệt mộtcách dễ dàng, thích hợp cho một dự án lớn, không bị nhập nhằng giữa việc tạogiao diện, xử lý và truy xuất cơ sở dữ liệu Struts 1 xx được công nhận như mộtframework phổ biến nhất trong Java, Struts 1 xx đủ chín muồi và là một giảipháp tốt cho nhóm phát triển để giải quyết các vấn đề chung nhất
Ưu điểm: Struts 1 được thiết kế dựa trên mô hình MVC Dùng để xây dựng cácứng dụng web sử dụng sử dụng Java Servlet và Jsp Ứng dụng Struts chạyđược trên
nhiều nền tảng, dễ học, dễ sử dụng, có kèm các thư viện thẻ cho việc phát triểnứng dụng nhanh chóng hơn Struts cho phép các lập trình viên:
- Phát triển ứng dụng web Jsp/Servlet theo mô hình MVC
- Sử dụng các đối tượng có sẵn của Framework trong file cấu hình Xml
Trang 8- Sử dụng nhiều tính năng nâng cao (Validation, …)
Những thuận lợi khi sử dụng:
- Struts đảm nhiệm những phần phức tạp nhất khi xây dựng ứng dụng MVC
- Dễ học, dễ sử dụng
- Nhiều tính năng được hỗ trợ
- Nhiều công cu hỗ trợ của bên thứ 3
- Hỗ trợ một thư viện thẻ cực kỳ hữu dụng
- Tích hợp với Tiles Framework
Nhược điểm : Khó tìm hiểu, khó chuẩn hóa và đánh giá Struts khó ápdụng các phương pháp khác
Trang 92.2 Strust2.
2.2.1 Giới thiệu về Strust 2
- Vào tháng 12/2005,Struts và webwork framework đã được kết hợp với nhau để phát triển nên Struts 2 Framework Struts 2 Framework rất thích hợp và dễ dàng
mở rộng để phát triển các ứng dụng web với mức độ khác nhau
- Trang chủ: http://struts.apache.org/2.x/
- Struts 2.0x ra đời kế thừa nền tảng của webwork framework, được tổ chức như một nền làm việc chuyên nghiệp với web, nhằm giải quyết các vấn đề phứctạp, mang tính nghiệp vụ cao, khắc phục các nhược điểm của struts 1
Struts 2 Framework đơn giản hóa hơn mô hình Struts 1 Framework và hỗ trợ việc xây dựng ứng dụng Web theo mô hình MVC2 với những tiện ích hơn phiên bản trước như
là rút gọn tập tin cấu hình hay sử dụng Annotation thay thế cho tập tin cấu hình
- Các bạn có thể sử dụng Eclipse hoặc Netbean IDE 8.0 kết hợp Tomcat 8.0 (tốt hơn nên dùng bản mới)
- Apache Struts 2 requires:
Trang 10- Giải quyết hiệu quả vấn đề internationlization và localization trong các ứng dụng web
- Tự động chuyển đổi kiểu dữ liệu chuỗi truyền thống trong tham số request parameter thành các đối tượng lớp dữ liệu java => tiết kiệm được thời gian và công sức cho các lập trình viên
- Cung cấp các thẻ tag,các themes và templates giúp cho việc làm giao diện GUI trở nên dễ dàng,nhanh lẹ và tăng tính tái sử dụng
- Tính mở rộng (Extensibility) cao thông qua việc hỗ trợ các plug-in
- Hỗ trợ portal
- Hỗ trợ AJAX
- Dễ dàng tích hợp với Spring framework và Hibernate
Trang 112.2.3 Kiến trúc của Strust 2 Framework.
Hình 2.2.3-1 Kiến trúc Struts2 Framework.
Action ContextCleanUp filter: sử dụng khi tích hợp với các công nghệ khác như SiteMesh Plugin
FillerDispatcher: sử dụng ActionMapper để xác định Action nào được triệu gọi Nếu Action được yêu cầu triệu gọi thì FilterDispatcher ủy nhiệm việc điều khiển lại cho ActionProxy
ActionProxy: Sử dụng bộ phận 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ựcthi 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 Action thích hợp, thực thi Action, và xác định các View, JavaBeans tương ứng để lấy dữ liệu xử lý Sau đó nó triệu gọi việc sinh ra trang các JSP hoặc các mẫu để kết xuất dữ liệu trả về
Trang 12Cá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.2.4 Luồng xử lý dữ liệu trong Strust2
Hình 2.2.4-1 Luồng xử lý dữ liệu Struts2.
a. 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. 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á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
d. 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
e. Sinh kết quả
f. 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ý
g. 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
Trang 13từ Form và thực hiện xử lý cùng với validation nếu cần
Action bắt buộc implement Action
interface
Action class không cần bắt buộc implement Action interfaceAction là một Singleton pattern
Duy nhất một instance của Action
đón nhận để xử lý mọi request
Một Instance của Action sẽ đón nhận một request khác nhau
Gây khó khăn cho người dùng khi
cung cấp một hệ thống quá nhiều
Trang 14Chia thành module để chuyển đổi
thao tác và đòi hỏi kết hợp của
switchAction để tạo sự kết hợp giữa
các thành phần khi làm việc theo
nhóm
Sử dụng cơ chế interceptor để đảm bảo tích hợp nhiều thành phần và nâng cấp ứng dụng một cách uyển chuyển linh hoạt, đặc biệt là tích hợp
mà không làm ảnh hưởng các thành phần có sẵn khi làm việc theo nhóm
Hình 2.2.5-2 Sự khác nhau giửa Struts2 và Struts1.
Sự khác nhau trên, với những ưu điểm của struts 2 so với struts 1 làm cho 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.3 Hibernate 4 Framework
inheritance, polymorphism, composition và collections Hibernate cho phép thực
Trang 15hiệ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 – Hibernate Query Language (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 che giấu đi sức mạnhcủa ngôn ngữ SQL mà Hibernate còn đảm bảo việc truy vấn cơ sở dữ liệu một cách mạnh mẽ dễ dàng khi thao tác với SQL truyền thống Đặc biệt nó còn cung cấp thêm một ngôn ngữ hổ trợ truy vấn đơn giản và tiện dụng hơn, giúp cho người phát triển ứng dụng có thêm lựa chọn, đó là Hibernate Query Language 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
Các tính năng của Hibernate:
Hibernate cung cấp ba đầy đủ tính năng tiện ích truy vấn: Hibernate Query Language, Hibernate Criteria Query API và các truy vấn tự nhiên
Bộ lọc để làm việc với dữ liệu tạm thời ,vùng dữ liệu hoặc các dữ liệu được phân quyền
Nâng cao khả năng truy vấn với API: với sự hỗ trợ đầy đủ cho các phép chiếu ,phép kết hợp và phép chọn
Kiểm soát được thời gian chạy: thông qua JMX hoặc Java API, bao gồm cả
bộ đệm trình duyệt ở mức thứ cấp
Hỗ trợ IDE Eclipse, bao gồm một bộ Eclipse plug-in để làm việc với
Hibernate , bao gồm biên tập liên kết, tương tác với mẫu truy vấn, công cụ nhận lại cấu trúc cơ sở dữ liệu
Hibernate là miễn phí theo LGPL: Hibernate có thể được dùng để phát triển phân phối các ứng dụng miễn phí
Hibernate có thể mở rộng: Hibernate mang lại hiệu năng cao và kiến trúc 2 lớp của nó có thể được sử dụng trong môi trường tập trung
Trang 16 Giảm thời gian phát triển ứng dụng: Hibernate làm giảm thời gian phát triển các ứng dụng vì nó hỗ trợ thừa kế, đa hình, thành phần và các framework trong java.
Hibernate XML cho phép liên kết dữ liệu được biểu diễn như XML và POJOs thay thế cho nhau
Trang 172.3.3 Kiến Trúc Hibernate.
Bảng 2.2.11-1 Kiến trúc Hibernate
Trang 18Hibernate tạo ra một thể hiện của Entity Class ( Java class ánh xạ với các bảng trong database) để duy trì dữ liệu cho Database, Đối tượng đó được gọi là TransientObject, chưa được kết hợp với session , hoặc chưa tồn tại trong database Để duy trì một đối tượng cho database, phải khởi tạo một thể hiện của Session Factory
interface Session factory là một singleton instance áp dụng Factory design pattern Session factory đọc hibernate.cfg.xml file và dùng Transaction Factory và
ConnectionProvider, nó áp dụng các cài đặt cấu hình trong Database
Mỗi database connection trong hibernate được tạo ra bằng việc khởi tạo một thể hiện của session interface Mỗi session đại diện cho một kết nối đến Database Và một đối tượng session được tạo ra từ một đối tượng Session Factory
Session Factory (org.hibernate.SessionFactory):là khái niệm về việc lưu trữ dữ liệu duy nhất và thread safe Bởi các đặc tính đó, nhiều threads có thể truy cập nó một cách đồng thời và các session sẽ được yêu cầu, và sẽ không thay đổi bảng ánh xạ của một database cụ thể SessionFactory sẽ được built trong khoảng thời gian startup
Session (org.hibernate.Session) : dùng để lấy kết nối vật lý đến một database Đối tượng Session khá gọn nhẹ và được thiết kế để được khở tạo mỗi lần có tương tác với database Persistent objects được lưu và rút trích thông qua đối tượng Session Đối tượng session không nên tồn tại quá lâu vì nó không đảm bảo tính chất thread safe
Persistent objects and collections: các java class có kiến trúc gần giống với các tabletrong databse, và có các đối tượng hoặc thể hiện sẽ được lưu trử vào database được xem là các persistent classes Hibernate sẽ làm việc tốt hơn nếu các lớp đó tuân theomột số quy luật đơn giản được biết đến như là mô hình Plain Old Java Object (POJO) Các Persistent objects sẽ được lưu xuống database thông qua việc
hibernate xác định các bảng tương ứng với các trường được liên kết thông qua file ánh xạ
Trang 19Transient and detached objects and collections: một thể hiện của Persistent class màhiện tại không có liên quan gì đến org.hibernate.Session Nó có thể được khởi tạo bởi ứng dụng và chưa persisted, hoặc nó được khởi tạo bằng việc đóng
org.hibernate.Session
Transaction: là một đối tượng single-thread, vòng đời ngắn, được ứng dụng dùng đểxác định một đơn vị công việc Nó trừu tượng hoá ứng dụng từ các giao dịch nền JDBC, JTA hoặc CORBA
Để tạo nên ứng dụng Hibernate, có ba điều cần phải có, đó là:
Nó là thay thế hướng đối tượng cho bảng ở cơ sở dữ liệu
Các thuộc tính của bảng trở thành những instance variable của persistence class
Kiểu dữ liệu của các instance variable là domain của các thuộc tính
Đối tượng của persistence class thay hế cho hàng của bảng
2 Mapping file:
Mapping file là một file XML chứa ánh xạ chi tiết giữa persistence class và bảng nóthay thế Các thành phần bắt buộc của file XML này là:
Hibernate-mapping : Đây là thành phần gốc bao tất cả các thành phần khác
Class : được sử dụng để ánh xạ tên bản thành persistence class Tên thuộc tính được sử dụng để xác định tên lớp, và thuộc tính bản được sử dụng để xác định bảng mà lớp thay thế Ví dụ để ánh xạ một bản mang tên ORDERS