I. Bối cảnh
Trong thời đại ngày nay, thông tin là nhu cầu thiết yếu đối với mọi người trên mọi lĩnh vực. Mỗi phút trôi qua hàng triệu triệu trang web được đẩy lên nhằm làm giàu nguồn tài nguyên vô tận này. Mọi lĩnh vực trong đời sống đều cần thông tin nhanh, cần thiết và chính xác. Ngành du lịch cũng vậy, điều cần thiết là phải làm sao đưa thông tin đến cho du khách. Phải tạo ra một nơi để cung cấp đầy đủ các thông tin về địa phương của mình, và quảng bá những nét đặc trưng, những danh lam thắng cảnh đẹp. Qua đó du khách có thể dễ dàng chọn được những nơi mình muốn đi, ăn những món ăn mình thích, và những dịch vụ công cộng thiết yếu để cho du khách không cảm thấy xa lạ và có thể hưởng kì nghỉ vui vẻ của mình.Đó là mục đích chính cho ra đời trang web Trang Vàng Đà Nẵng. Tại đây sẽ cung cấp đầy đủ thông tin về nơi ở, món ăn, đặc sản của thành phố Đà Nẵng. Không chỉ cho du khách ngoài nước mà còn trong nước.
II. Ý nghĩa
Với sự phát triển nhanh chóng của du lịch Đà Nẵng, thì việc có một nơi nào đó để giới thiệu và quảng bá hình ảnh của thành phố, các danh lam thắng cảnh và những địa điểm du lịch trong thành phố là một điều cấp thiết. Điều này sẽ tạo cho du khách đến với Đà Nẵng sẽ có thể thăm quan và vui chơi mà không phải mất nhiều thời gian để tìm kiếm.Các nhà hàng khách sạn trên thành phố cũng cần có một nơi để có thể quảng bá dịch vụ của mình đến với du khách. Điều này sẽ thúc đẩy việc phát triển du lịch ở Đà Nẵng.
75 trang |
Chia sẻ: tuandn | Lượt xem: 2807 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Luận văn Ứng dụng Struts FrameWork xây dựng trang vàng cho du lịch Đà Nẵng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN
Tel. (84-511) 736 949, Fax. (84-511) 842 771
Website: itf.dut.edu.vn, E-mail: cntt@dut.udn.vn
LUẬN VĂN TỐT NGHIỆP KỸ SƯ
NGÀNH CÔNG NGHỆ THÔNG TIN
MÃ NGÀNH : 05115
ĐỀ TÀI :
ỨNG DỤNG STRUTS FRAMEWORK XÂY DỰNG TRANG VÀNG CHO DU LỊCH ĐÀ NẴNG
Mã số : KKLLL-nnn
Ngày bảo vệ : 15/06/2010
SINH VIÊN : PHẠM HỮU HIỀN
LỚP : 05T2
CBHD : Ths LÊ THỊ MỸ HẠNH
ĐÀ NẴNG, 06/2010
LỜI CẢM ƠN
Để hoàn thành tốt được bài báo cáo này là nhờ sự hướng dẫn và chỉ bảo tận tình của cô Lê Thị Mỹ Hạnh. Em xin chân thành cảm ơn sự chỉ bảo của cô.
Em cũng rất cảm ơn các thầy cô trong khoa công nghệ thông tin trường đại học Bách Khoa Đà Nẵng đã tận tình giảng dạy, truyền đạt những kiến thức quý báu và tạo điều kiện cho em hoàn thành báo cáo này.
Xin chân thành cảm ơn sự giúp đỡ, động viên của tất cả các bạn trong quá trình thực hiện báo cáo.
Em cũng muốn cảm ơn những người thân trong gia đình đã động viên giúp đỡ tạo điều kiện để em hoàn thành đồ án này.
Mặc dù đã cố gắng hết sức hoàn thành đồ án với tất cả sự nổ lực của bản thân, nhưng đồ án không tránh khỏi những thiếu sót. Em rất mong nhận được sự thông cảm và chỉ bảo tận tình của các thầy cô và các bạn.
Đà Nẵng, Ngày 4 tháng 6 năm 2010
Sinh viên thực hiện
Phạm Hữu Hiền
LỜI CAM ĐOAN
Tôi xin cam đoan :
Những nội dung trong luận văn này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của cô Lê Thị Mỹ Hạnh
Mọi tham khảo dùng trong luận văn đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố.
Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá,tôi xin chịu hoàn toàn trách nhiệm.
Sinh viên,
Phạm Hữu Hiền
MỤC LỤC
MỤC LỤC HÌNH
Hình 1 : Trình tự biên dịch trang JSP 11
Hình 2 : Cơ chế hoạt động của trang JSP 11
Hình 3 : Mô hình xử lý của Ajax 32
Hình 4 : Mô hình USECASE hệ thống 39
Hình 5 : Sơ đồ tuần tự UseCase đăng nhập 41
Hình 6 : Sơ đồ lớp Usecase đăng nhập 41
Hình 7 : Sơ đồ tuần tự Usecase xem thông tin du lịch phần danh mục 43
Hình 8 : Sơ đồ tuần tự Usecase xem thông tin du lịch phần chi tiết 43
Hình 9 : Sơ đồ lớp Usecase xem thông tin du lịch 44
Hình 10 : Sơ dồ tuần tự Usecase tìm kiếm 45
Hình 11 : Sơ đồ lớp Usecase tìm kiếm 45
Hình 12 : Sơ đồ tuần tự Usecase bình chọn 46
Hình 13 : Sơ đồ lớp Usecase bình chọn 47
Hình 14 : Sơ đồ tuần tự Usecase đăng quảng cáo dịch vụ 48
Hình 15 : Sơ đồ tuần tự Usecase quản lý thông tin phần tìm kiếm 50
Hình 16 : Sơ đồ tuần tự Usecase quản lý thông tin phần chỉnh sửa/thêm mới 50
Hình 17 : Sơ đồ tuần tự Usecase quản lý thông tin phần xóa 50
Hình 18 : Sơ đồ lớp phần quản lý thông tin 51
Hình 19 : Sơ đồ tuần tự Usecase quản lý thành viên phần tìm kiếm 52
Hình 20 : Sơ đồ tuần tự Usecase quản lý thành viên phần chỉnh sửa/thêm mới 53
Hình 21 : Sơ đồ tuần tự Usecase quản lý thành viên phần xóa 53
Hình 22 : Sơ đồ lớp Usecase quản lý thành viên 54
Hình 23 : Các lớp và thuộc tính của chúng 55
Hình 24 : Biểu đồ quan hệ giữa các bảng 56
Hình 25 : Sơ đồ quan hệ giữa các bảng 60
Hình 26 : Sơ đồ phân rã chức năng 61
Hình 27 : Hình ảnh trang chủ 67
Hình 28 : Xem danh mục khách sạn 68
Hình 29 : Chi tiết khách sạn 69
Hình 30 : Ẩm thực Đà Nẵng 70
Hình 31 : Phần quản lý của người dùng 71
Hình 32 : Quản lý khách sạn đăng 72
Hình 33 : Thêm mới một khách sạn 72
CHƯƠNG 1
GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI
Bối cảnh
Trong thời đại ngày nay, thông tin là nhu cầu thiết yếu đối với mọi người trên mọi lĩnh vực. Mỗi phút trôi qua hàng triệu triệu trang web được đẩy lên nhằm làm giàu nguồn tài nguyên vô tận này. Mọi lĩnh vực trong đời sống đều cần thông tin nhanh, cần thiết và chính xác. Ngành du lịch cũng vậy, điều cần thiết là phải làm sao đưa thông tin đến cho du khách. Phải tạo ra một nơi để cung cấp đầy đủ các thông tin về địa phương của mình, và quảng bá những nét đặc trưng, những danh lam thắng cảnh đẹp. Qua đó du khách có thể dễ dàng chọn được những nơi mình muốn đi, ăn những món ăn mình thích, và những dịch vụ công cộng thiết yếu để cho du khách không cảm thấy xa lạ và có thể hưởng kì nghỉ vui vẻ của mình.Đó là mục đích chính cho ra đời trang web Trang Vàng Đà Nẵng. Tại đây sẽ cung cấp đầy đủ thông tin về nơi ở, món ăn, đặc sản của thành phố Đà Nẵng. Không chỉ cho du khách ngoài nước mà còn trong nước.
Ý nghĩa
Với sự phát triển nhanh chóng của du lịch Đà Nẵng, thì việc có một nơi nào đó để giới thiệu và quảng bá hình ảnh của thành phố, các danh lam thắng cảnh và những địa điểm du lịch trong thành phố là một điều cấp thiết. Điều này sẽ tạo cho du khách đến với Đà Nẵng sẽ có thể thăm quan và vui chơi mà không phải mất nhiều thời gian để tìm kiếm.Các nhà hàng khách sạn trên thành phố cũng cần có một nơi để có thể quảng bá dịch vụ của mình đến với du khách. Điều này sẽ thúc đẩy việc phát triển du lịch ở Đà Nẵng.
Phương pháp thực hiện
Với xu hướng phát triển web hiện nay thì có ba loại ngôn ngữ để các lập trình viên lập trình web, đó là PHP, ASP và JSP.
PHP : thích hợp phát triển những trang web nhỏ, miễn phí kết hợp với mySQL.
ASP : với những tính năng mạnh mẽ nhưng phải trả tiền để cài đặt Server.
JSP : miễn phí nhưng vẫn rất mạnh, có thể sánh ngang cùng ASP.
JSP là ngôn ngữ lập trình web được Sun phát triển, nó cung cấp một hướng phát triển và định nghĩa 2 mô hình xây dựng các ứng dụng Web dựa trên JSP. 2 mô hình đó được biết đến với những cái tên Model 1 và Model 2 và chúng quy định các cách tiếp cận khác nhau để thiết kế các ứng dụng Web dựa trên JSP. Model 1, đơn giản hơn, là giải pháp chính khi JSP lần đầu được đưa ra. Tuy nhiên, qua thời gian, Model 2 trở nên được chấp nhận như là cách tốt nhất để xây dựng các ứng dụng Web dựa trên JSP và là nguồn cảm hứng cho các Web framework dựa trên MVC như Struts.
Tổng quan về kiến trúc Model 1
Kiến trúc Model 1 hết sức đơn giản. Tóm lại là tất cả mọi thứ đều được gói gọn trong servlet hoặc JSP từ việc xử lý request, xác nhận tính hợp lệ của dữ liệu, điều quản business logic và generate response. Mặc dù về khái niệm hết sức đơn giản, kiến trúc này không phù hợp cho việc phát triển các ứng dụng quy mô lớn vì chắc chắn một số lượng lớn các tính năng sẽ bị lặp lại trong các trang JSP (lặp lại code). Cũng vậy, kiến trúc Model 1 tạo nên sự ràng buộc không cần thiết giữa business logic và presentation logic của ứng dụng. Ví dụ, ngoài giao diện HTML, bạn có thể muốn thêm một giao diện WML cho truy nhập wireless. Trong trường hợp này, việc sử dụng Model 1 yêu cầu sự lặp lại không cần thiết của business logic trong các trang sử dụng HTML và WML.
Tổng quan kiến trúc Model 2
Model 2, hay cách gọi thông dụng ngày nay, Model-View-Controller (MVC), giải quyết nhiều vấn đề của Model 1 với việc cung cấp một sự phân tách rõ ràng trong ứng dụng. Trong kiến trúc MVC, một serlvet trung tâm, được gọi là Controller, tiếp nhận tất cả các request cho ứng dụng. Sau đó Controller sẽ xử lý request và làm việc với Model để chuẩn bị những dữ liệu cần thiết cho View (thường là JSP) và forward dữ liệu tới trang JSP. Sau đó JSP sử dụng các dữ liệu đã được chuẩn bị bởi Controller để generate một response về cho browser. Trong kiến trúc này, business logic và presentation logic được phân tách nhau. Việc tách business code và presentation code giúp ta có thể sử dụng nhiều giao diện cho ứng dụng, chúng có thể là Web, wireless hay GUI. Thêm vào đó, việc phân tách này còn cung cấp việc tái sử dụng lại code một cách hòan hảo.
Việc phân tách code xử lý và code hiển thị làm cho việc phát triển ứng dụng có thể độc lập với nhau và cho nhiều người tham gia làm. Việc này cũng làm cho những người bảo trì web sau này có thể dễ dàng chỉnh sửa và bảo trì.
Mô hình 2 được Sun phát triển thông qua Struts Framework, 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 lập trình Web nghĩ về và cấu trúc một ứng dụng Web.
Struts có 2 phiên bản là version 1 và version 2. Version 1 là phát triển web theo kiểu truyền thống. Còn version 2 là được Apache Struts tạo ra từ 1 nhánh của webwork.
Vì sự phát triển mạnh mẽ của Struts framework hiện nay nên đề tài sẽ phát triển ứng dụng web dựa trên nền của Struts Framework.
Phạm vi thực hiện của đề tài
Qua tìm hiểu và khảo sát những trang vàng trên Việt Nam thì trang vàng để quảng bá du lịch cần có những chức năng chính sau :
Xem tin tức du lịch
Tìm kiếm thông tin nhà hàng khách sạn
Tìm kiếm các dịch vụ công cộng
Các phương tiện đi lại trên địa bàn thành phố
Thông tin về các công ty lữ hành và các tua du lịch.
Với việc thực hiện luận văn trong vòng ba tháng nên đề tài chỉ giải quyết một số vấn đề chính như sau :
Xem tin tức du lịch
Tìm kiếm thông tin nhà hàng khách sạn
Tìm kiếm các dịch vụ công cộng (Thông tin bưu điện, ngân hàng)
Các phương tiện đi lại trên địa bàn thành phố (Chỉ xe bus)
CHƯƠNG 2
CƠ SỞ LÝ THUYẾT
GIỚI THIỆU JSP
Giới thiệu
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.
Biên dịch trang JSP
Khi người sử dụng gọi trang JSP lần đầu tiên, Web Server triệu gọi trình biên dịch dịch trang JSP (trong trường hợp này là JDK) thành tập tin Java, kế đến tập tin java (Java Servlet) này sẽ biên dịch ra Class . Sau đó, trang class thực thi và trả về kết quả cho người sử dụng như hình dưới
Hình 1 : Trình tự biên dịch trang JSP
Cơ chế hoạt động của trang JSP được minh họa như hình sau :
HTTP Web Service
Trình diễn dịch JSP
Servlet tạm
Web Browser
Trang jsp
Yêu cầu
Kết thúc
Hình 2 : Cơ chế hoạt động của trang JSP
+ Khi bạn yêu cầu một trang JSP, trình chủ sẽ đọc trang JSP từ đĩa cứng,
+ Bộ diễn dịch JSP sẽ diễn dịch mã lệnh Java chứa trong trang JSP thành một servlet.
+ Sau đó trình chủ Java Web Server sẽ triệu gọi servlet trả kết xuất thuần HTML về cho trình khách.
Một trang JSP với phần mở rộng là .jsp như là một trang HTML, có thể chèn thêm các câu lệnh Java bằng cặp
hoặc: ... .
Giữa cặp dấu này là các câu lệnh của ngôn ngữ Java nằm trong phần thân (. . . ) của tài liệu, hoặc phần đầu tiên trớc cả tag của tài liệu.
Mô tả cấu trúc của một trang JSP
<%
- - - - Các câu lệnh Java ở đây - - - -
%>
- - - - Các thành phần định nghĩa khác - - - -
<%
- - - - Các câu lệnh Java ở đây - - - -
%>
- - - - Các định dạng khác của HTML - - - -
Các Đối Tượng Mặc Định Của Trang JSP
Trình diễn dịch JSP cho phép ta sử dụng một số đối tợng đã khai báo trước. Điều này sẽ giúp ta viết mã lệnh trong trang jsp nhanh hơn servlet.
Đối tượng out
Xuất phát từ lớp java.ioPrintWriter. Bạn có thể sử dụng đối tợng này để định dạng kết xuất gửi về máy khách.
Ví dụ 5 : Ví dụ về đối tượng out
Đối tượng Request
Xuất phát từ lớp HttpServletRequest, đối tượng này giúp bạn lấy về các tham số hay dữ liệu do trình khách chuyển lên.
Một trong những ứng dụng thông thờng nhất của đối tợng request là nắm giữ các tham số. Bạn có thể thấy điều này bằng cách gọi phương thức getParametter() của request. Phương thức này kế thừa từ lớp cha là javax.servlet.ServletRequest. Phương thức này nhận tên tham số và trả về giá trị chuỗi tơng ứng với tên của tham số đó.
Ví dụ 6 : Ví dụ đối tượng request lấy thông tin nhập vào
String USERNAME=request.getParameter(“username");
String PASSWORD=request.getParameter(“password");
Đối tượng Session
Xuất phát từ lớp HttpSession. Bạn sử dụng đối tợng session để theo dõi kết nối và lu vết một phiên làm việc giữa trình khách và trình chủ.
Đối tượng session tham chiếu đến đối tượng javax.servlet.http.HttpSession. Đối tợng session đợc khởi tạo bằng cách gọi phơng thức pageContext.getSession() để tạo ra trang servlet.
session = pageContext.getSession();
Khi cần một biến nào đó có giá trị toàn cục từ khi mở cho đến khi kết thúc trình duyệt đó, bạn nên nghĩ đến session. Đối tợng session sẽ thực hiện việc đó giúp bạn. Đối tợng session tạo biến cục bộ cho phép lu một giá trị nào đó từ trang JSP này sang trang JSP khác.
Ví dụ 7 : Ví dụ lưu session trong JSP
session.putValue(“NGAY", NGAY);
session.putValue("THANG", THANG);
session.putValue("NAM", NAM);
Sau khi ghi thông tin vào session, khi cần lấy về giá trị trong session ta thực hiện như sau :
String NGAY=(String) session.getValue(“NGAY");
String THANG=(String) session.getValue("THANG");
String NAM=(String) session.getValue("NAM");
Đối tượng Response
Đối tượng response cho phép phản hồi thông tin xử lý từ trình chủ trở về trình duyệt. Thực ra đối tợng response thờng gọi phương thức response.getWrite() để thực hiện kết xuất. Các phơng thức mà đối tượng response thường được liệt kê như sau :
Liên kết trực tiếp đến trang Bc_td2.jsp
response.sendRedirect(“Bc_td2.jsp”) ;
Định kết xuất ra HTML hay text
response.setContenType(“text/html”) ;
Lấy dữ liệu trong vùng đệm nhờ OutputStream();
response.getOutputStream();
Đối tượng Exception
Đối tượng exception chỉ tồn tại trong trang xử lý lỗi (errorPage). Nó dùng để tham chiếu đến nguyên nhân gây ra lỗi mà trang error có liên quan.
GIỚI THIỆU VỀ STRUTS FRAMEWORD
Giới thiệu
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.
Đi sâu hơn một chút vào kiến trúc MVC
Để 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
Cá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.
Kiến trúc struts
Struts ra đời bằng việc kế thừa và mở rộng các Java Servlet API nhưng theo các hướng đối tượng hơn theo mẫu thiết kế MVC. Struts phân chia việc xử lý theo dạng từng action một và tách biệt phần xử lý và phần hiển thị ra nên việc phát triển tương đối thuận lợi và dễ dàng hơn.
Các thành phần component của 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….
Tính tương thích và kết hợp
Strust có thể tương thích với các framework khác như hibernate, Spring…
Đối với struts2 thì việc phát triển ứng dụng web đặt biệt dễ dàng hơn và kết hợp với các framework khác cũng dễ dàng hơn bằng việc viết thêm các plugin.
Struts hỗ trợ tốt cho các công nghệ view khác nhau như: Jsp, Velocicty, Freemarker, Tile.
Hỗ trợ da ngôn ngữ Struts framework có hỗ trợ việc đa ngôn ngữ rất tốt thông qua việc cấu hình các tại nguyên trong file struts-config.xml.
Hỗ trợ ajax
Struts hỗ trợ ajax bằng cách viết hoàn toàn thuần javascript và json hoặc có thể sử dụng các thư viện ajax như: DWR, Prototypes.js, jQuery…
Hỗ trợ Annotation validate và intercepter đối với Struts2
Struts2 có hỗ trợ việc validation trực tiếp trong source code Java bằng các ký pháp anotation của Java5. Ngoài ra Struts2 còn được thừa hưởng tính năng hỗ trợ intercepter của Webwork giúp người phát triển có thể dễ dàng thực hiện những công việc phức tạp theo hướng lập trình AOP.
Model là gì?
Trong một ứng dụng MVC, Model layer thường là phần lớn nhất và quan trọng nhẩt. Model là ngôi nhà của code bussiness logic và truy nhập dữ liệu; nói cách khác, Model chứa phần nhân của ứng dụng.
Kiến trúc MVC chỉ ra rằng Model layer nên độc lập với các layer View và Controller. Theo cách đó, code nhân ứng dụng có thể được sử dụng lặp lại với nhiều giao diện. Mỗi giao diện (Web, stand-alone, ...) chứa mã riêng nó cho giao diện người dùng (View) nhưng có thể tái sử dụng nhân ứng dụng (Model). Đó là điều cơ bản trong kiến trúc MVC: tạo một sự phân tách rõ ràng và giảm thiểu sự phụ thuộc giữa các layer.
Phân rã Model
Thường thì một Model layer của một ứng dụng MVC được thiết kế tốt được chia làm 3 layer con. Mỗi layer con có thể được xem như một thành phần (component) của Model.
Mỗi layer con không nhất thiết phải được thể hiện trong các class riêng biệt. Bạn có thể gộp tất cả các phần code cho các layer này vào trong một class lớn. Việc lựa chọn cách thể hiện là tùy thuộc vào bạn nhưng cấn chú ý đến độ phức tạp của chương trình và việc bảo trì cũng như mở rộng sau này. Các layer con bao gồm:+ External interface: Chứa các code để cung cấp một giao diện cho phép tương tác với Model+ Bussiness logic: Chứa đựng phần lớn mã Model và cung cấp các tính năng business cho ứng dụng+ Data access: Chứa code để tương tác với nguồn dữ liệu của ứng dụng, chẳng hạn CSDL
Struts và Model
Struts framework không cung cấp bất cứ đặc trưng hay ràng buộc xác định nào trong việc phát triển Model layer trong ứng dụng của bạn. Khi nhìn thoáng qua lần đầu, điều này có vẻ hơi kỳ quặc, vì Struts được thiết kế để xây dựng các ứng dụng MVC. Tuy nhiên, nó lại nắm giữ một đặc trưng thiết kế chính của Struts và là một điểm lợi. Vì không bắt buộc Model layer phải được xây dựng như thế nào, Struts mang lại cho bạn sự mềm dẻo đẻ sử dụng bất cứ cách tiếp cận hay công nghệ nào để xây dựng Model layer, chúng có thể là EJB, JDO hay mẫu DAO.
Vì Model định nghĩa business logic, nó là nơi kết thúc của Struts và code ứng dụng của bạn bắt đầu. Code Model của bạn sẽ được truy nhập bởi các subclass của Action (Action là một phần của Controller của Struts framework). Các subclass của Action tương tác với Model thông qua giao diện của Action và sử dụng Data Transfer Object để chuyển và lấy dữ liệu.
Bạn ko nên đặt bất cứ code business logic hay truy cập dữ liệu nào trong các Action object. Điều này bỏ qua việc phân tách Model và Controller. Tương tự, code Model của bạn không nên tham chiếu tới bất cứ Struts code hay object. Vi phạm luật này, sẽ tạo sự ràng buộc không cần thiết giữa code nhân ứng dụng và Struts.
Cách làm việc của struts