LỜI NÓI ĐẦU:
Hầu hết chúng ta đều biết Struts là ứng dụng web mã nguồn mở được phát triển theo khuôn khổ giống như dự án Apache Jakarta. Bây giờ Struts là một dự án độc lập, là một bộ khung(framework) mã nguồn mở cho việc phát triển ứng dụng web bằng J2EE(Java 2 Enterprise Edition). Nó sử dụng và mở rộng Java Servlet API để giúp cho các nhà phát triển áp dụng kiến trúc MVC(Model-view-controller).
Mục tiêu của đề tài này giúp chúng ta hiểu struts là gì, tại sao sử dụng struts, khi nào thì sử dụng struts và struts có những ứng dụng gì, hỗ trợ như thế nào trong mô hình MVC. Và để hiểu được struts, chúng ta cần hiểu thế nào là J2EE, mô hình kiến trúc MVC...
Phần I: Giới thiệu về J2EE và các thành phần liên quan
1. J2EE là gì?
J2EE(Java 2 Enterprise Edition) là một môi trường phát triển và triển khai các ứng dụng được phát triển bởi Sun, là cái nền cung cấp các dịch vụ, các hàm giao tiếp(API) và các giao thức để triển khai các ứng dụng đa tầng. Là 1 thành phần rất quan trọng và rộng lớn trong lĩnh vực java, J2EE được dùng để phát triển các ứng dụng lớn mang tính chất phân tán rộng khắp. Đây là lĩnh vực được chú trọng và ứng dụng nhiều nhất của java trong thực tế.
Kiến trúc J2EE tổng quát
+ EJB (Enterprice java bean) container : quản lý và thực thi các thành phần enterprice bean
+ Web Container : quản lý và thực thi các thành phần JSP và Servlet.
+ Application Client Container : quản lý và thực thi các thành phần phía client (ví dụ như applet)
(Nguồn http://songokubk05.blogspot.com)
2. Các thành phần liên quan tới J2EE:
a. Applet :
• Là một chương trình Java chạy trên web browser.
• Để tạo ra một applet, ta phải import:
+ java.applet
+ java.awt
• Một applet có 4 phương thức. Mỗi phương thức được tự động gọi khi có event tương ứng.
• Methods:
• init( )
• start( )
• stop( )
• destroy( )
Sự khác nhau giữa Applet và Application
• Applications chạy bằng Java interpreter, còn applets chạy trên browser có hổ trợ Java, hoặc dùng “AppletViewer” có trong JDK.
• Việc thực hiện một applications bắt đầu trong hàm ‘main()’. Còn applet thì không cần hàm main.
• Applications dùng ‘System.out.println()’ để xuất, trong khi applets dùng hàm “drawString()” để hiển thị.
Các hạn chế về Security trên Applets
• Không thể đọc hoặc viết các file trên hệ thống file của user.
• Không thể trao đổi với một site trên.
• Không thể chạy được các chương trình trên hệ thống hiện hành
• Không thể tải bất kỳ chương trình được lưu trữ trên hệ thống của user.
b. Java Bean:
• JavaBeans là software component model.
• Nó có thể tương tác với các đối tượng của các software khác và có thể được dùng lại.
• Các software components mà có thể dùng lại này được gọi là ‘beans’
• Components được dùng trong distributed environments. JavaBeans được thiết kế để dùng khi cần.
• Java thường xây dựng các software thông qua các JavaBeans.
• Khi mà Java Beans được tạo ra, thì chúng có thể được dùng như một thư viện không phụ thuộc nền.
Các qui tắc để tạo ra một Beans
• Là một class.
• phải có một default constructor.
• Có ít nhất một thuộc tính và là non-public
• Các thuộc tính được truy xuất từ bên ngoài thông qua các hàm getXXX và setXXX.
c. JSP : (Java Server Pages):
• JSP technology đươc xây dựng trên ngôn ngư lap trình Java.
• Nó thừa kế tất cả các ưu điểm cũng như các đặc tính của ngôn ngữ Java.
• JSP có thể dùng trên tất cả các platforms.
Cách làm việc của JSP:
Các bước xử lý của 1 request:
Một trang jsp là 1 kết hợp giữa html và script của java. Khi một trang jsp được gọi nó sẽ được jsp engine compile ra java servlet, và servlet được “điều khiển” bởi servlet engines nó giống như bất kỳ những servlets nào chúng ta viết ra khác. Khi đó servlets engines nó sẽ load class servlet và thực thi nó để tạo ra trang htm hay html rồi trả về cho browser.
Trong lần request tiếp theo nếu có những sự thay đổi nào đó từ trang jsp thì servlet sẽ được tự động compile lại thành 1 servlet khác để thực thi chúng.
Cơ chế hoạt động của JSP
Cơ chế hoạt động của JSP có thể mô tả như sau. Các đoạn mã Java được nhúng trong trang web dưới các thẻ (tag) đặc biệt được qui định gần giống như thẻ của ngôn ngữ HTML. Khi có yêu cầu gửi tới một trang JSP, webserver sẽ chuyển yêu cầu cho Java Engine để lấy trang JSP từ hệ thống tập tin. Bộ biên dịch JSP (JSP Page Compiler) sẽ chuyển các mã lệnh Java và toàn bộ nội dung trang JSP thành một Servlet. Servlet này sẽ được thực thi trong môi trường máy chủ Java để trả lại các thông tin cho webserver và webserver chuyển lại cho web client. Ðặc tả JSP cung cấp rất nhiều thẻ cho phép người dùng tuỳ biến khi nhúng mã nguồn Java vào trong trang JSP. Các thẻ này sẽ kết hợp với các mã HTML/XML để tạo ra kết xuất cuối cùng trả về cho web client. Các chức năng của trang JSP hoàn toàn giống với Servlet, tuy nhiên chúng ta không cần tạo Servlet này. Do đó viết một trang JSP sẽ đơn giản hơn viết một Servlet. Theo cơ chế này thì trang JSP có thể phải thực hiện chậm hơn Servlet thuần tuý, nhưng chỉ là lần đầu khi trang JSP được gọi đến và biên dịch. Ở các lần gọi kế tiếp, sẽ không cần biên dịch lại trang JSP nữa (trừ khi có thay đổi nội dung). Mã thực thi JSP/Servlet là mã nhị phân (bytecode), có thể thường trú trong bộ nhớ nên việc xử lý JSP xét về tốc độ sẽ nhanh hơn các trang ASP sử dụng cơ chế cơ chế diễn dịch, hay công nghệ CGI.
d. Servlets :
Servlets đươc dùng để mở rộng các chức năng của Java-enabled server
Dùng để thay thế cho CGI Scripts
Trước servlets, chúng ta có các công nghệ để tạo ra web applications:
• Common Gateway Interface (CGI)
• FastCGI
• ASP
• Server-side Java Script
Đặc điểm Servels:
• Không bị phụ thuộc
• Làm việc trên nhiều web servers
• Là công nghệ đầu tiên của java để tạo ra web Application
• Không nằm trong core Java API mà nằm trong hai package javax.servlet và javax.servlet.http của Java Servlet Development Kit (JSDK)
Phần II. Kiến trúc MVC(Model _View_Controller)
Mô hình MVC
1. Khái niệm:
Mô hình Model-View-Controller chia các components của ứng dụng thành 3 loại khác nhau đó là Model (mẫu), View (hiển thị), và Controller (điều khiển). Các components của mô hình MVC đảm nhận một trách nhiệm nhất định và mỗi components đều độc lập với các components khác. Việc thay đổi 1 components sẽ không ảnh hưởng hoặc ảnh hưởng rất ít đến các components khác. Nhiệm vụ của các components này là:
+ Model (mẫu): Model đảm nhận nhiệm vụ cung cấp dữ liệu từ cơ sở dữ liệu và lưu các thông tin đó ở nơi chứa dữ liệu. Tất cả các Business Logic đều được thực thi ở Model. Dữ liệu được nhập vào bởi người sử dụng qua View sẽ được kiểm tra ở Model trước khi được lưu vào cơ sở dữ liệu. Truy xuất dữ liệu, sự hợp lệ của dữ liệu và data saving logic là các thành phần của Model.
+ View (hiển thị): View trình bày việc hiển thị của ứng dụng và nhận trách nhiệm lấy dữ liệu từ người sử dụng, gửi các yêu cầu đến Controller rồi sau đó nhận trả lời từ Controller và hiển thị kết quả đến người sử dụng. HTML, JSP, các thư viện Tag và các file nguồn là các thành phần của view.
+ Controller (điều khiển): Controller là trung gian giữa Model và View. Controller có trách nhiệm nhận các yêu cầu từ Client. Khi mà yêu cầu đuợc nhận từ Client, Controller sẽ thực thi business logic thích hợp từ Model và sau đó xuất ra dữ liệu cho user sử dụng View component. ActionServlet, Action, ActionForm và struts-config.xml là các thành phần của Controller.
Nguồn http://www.javavietnam.org
Mối quan hệ giữa các thành phần
2. Mối quan hệ giữa View và Controller:
+ Trong MVC truyền thống, các view và controller được kết hợp chặc chẻ với nhau. Mỗi view được kết hợp với một controller duy nhất. Controller được xem như một Strategy (sự quản lý) mà view sử dụng cho đầu vào. View cũng chịu trách nhiệm tạo ra các khung nhìn và controller mới.
+ Có sự logic rằng các khung nhìn và các controller có quan hệ mạnh mẽ với nhau, đầu vào và đầu ra của một ứng ụng được liên hệ chặc chẽ với nhau. Hầu hết các nền GUI MVC, view và controller được trộn trong một đối tượng. Điều này được gọi là Document View. View và controller được kết hợp thành view. Model trở nên được biết như là tài liệu.
+ Passive model luân phiên chiệu trách nhiệm nhiều hơn về controller, vì nó phải thông báo cho các view khi nó có sự cập nhật.
+ Sự hữu ích web hiện đại của MVC luân phiên thậm chí là nhiều hơn các MVC truyền thống về việc chiệu trách nhiệm của view đối với controller. Controller chiệu trách nhiệm tạo ra và lựa chọn các view và view hướng đến việc chiệu trách nhiệm ít hơn đối với các controller của nó.
3. Mối quan hệ giữa Model và View:
View phụ thuộc vào model. Các sự thay đổi đối với giao diện model đòi hỏi các sự thay đổi song song trong view.
+ Thật khó để có được một sự tách biệt rõ rành giữa model và view. Chẳng hạn như, xét một yêu cầu “hiển thị một cán cân âm bằng mầu đỏ”. Đầu tiên cán cân, điều này xuất hiện là yêu cầu đầu ra rõ ràng và sự kiểm tra có thể được đặt trong view theo một hình thức rõ ràng như sau:
if balance < 0 then red
+ Điều này có thể xâm phạm đến sự tách biệt của các thành phần trong MVC.
+ Qua sự phân tích ở trên yêu cầu thực sự là “hiển thị sự cân bằng được cường điệu bằng mầu đỏ” và định nghĩa của cường điệu = cán cân < 0= nên được đặc trong model vì đó là thuộc về sự mô tả miền. Thật dễ dàng cho tác nghiệp để chuyển ra của model và chuyển vào view.
4. Mối quan hệ giữa model và controller
Controller phụ thuộc vào model. Các sự thay đổi đối với giao diện model có thể yêu cầu sự thay đổi song song đối với controller.
5. Các lợi điểm của MVC:
+ Giao diện người sử dụng có khả năng thay thế dễ dàng
+ Các view và các controller khác nhau có thể được thay đổi để đưa ra sự lựa chọn các giao diện người sử dụng đối với cùng một model. Chẳng hạn như, cùng một dữ liệu model có thể được hiển thị bởi biểu đồ bar, hay biểu đồ pie, hoặc spreadsheet.
+ Các thành phần hợp thành giao diện người sử dụng
+ Bởi vì MVC đòi hỏi giao diện người sử dụng ứng dụng được cấu trúc thành các đối tượng kế thừa nhau và định nghĩa các quan hệ chuẩn giữa các đối tượng này, các phiên bản chung của các đối tượng này là có thể có được.
+ Chúng thông thường được gọi là các thành phần giao diện kết hợp với các view và các controller thành một đối tượng đơn. WACT là một sự nổ lực để đưa ra một tập các thành phần phong phú tương tự nhau đối với việc phát triển web mà duy trì được sự tách biệt giữa view và controller. Các thành phần thúc đẩy sự sử dụng lại và cắt giảm sự cần thiết đối với các lớp con đặc biệt. Các thành phần này được biết như là các view có khả năng cắm vào trong tuyến tính smlltalk MVC.
+ Nhiều view đồng thời của một model
+ Nhiều view khác nhau có thể hoạt động tại cùng một thời điểm. Mỗi view mô tả đồng thời và độc lập thông tin giống nhau từ một model. Điều này áp dụng nhiều đối với GUI MVC hơn là web MVC.
+ Các khung nhìn được đồng bộ hóa
+ Cơ chế truyền sự thay đổi đảm bảo rằng tất cả các khung nhìn có thể được phản ứng một cách đồng thời trạng thái hiện tại của model.
+ Dễ dàng hơn trong việc thay đổi giao diện người sử dụng
+ Kiểm thử dễ dàng hơn
+ Với MVC thật dễ dàng để kiểm thử chức năng chính của ứng dụng vì nó được đóng gói bởi model.
6. Hạn chế của MVC:
+ Gia tăng sự phức tạp
+ Sự kết nối chặc chẻ của view và controller đối với model.
+ Sự thay đổi đối với giao diện model đòi hỏi sự thay đổi song song trong view và có thể đòi hỏi sự thay đổi thêm đối với controller. Sự thay đổi code nào đó có thể trở nên khó khăn hơn.
+ Tìm ẩn sự cập nhật dư thừa.
+ Cơ chế truyền sự thay đổi có thể không hiệu quả khi model thay đổi thường xuyên đòi hỏi nhiều thông báo thay đổi. Đây không phải là vấn đề chung nếu passive model được sử dụng.
+ Sự kết nối chặc chẻ giữa view và controller.
+ Sự tách biệt rõ ràng là rất khó, đôi khi là không thể.
Nguồn diendantinhoc.org
Phần III. Struts Framework(Struts 2.0)
Kiến trúc của Struts 2.0
1. Khái niệm:
Struts là một framework phục vụ việc phát triển các ứng dụng Web trên Java. Struts cung cấp một framework thống nhất để deploy(triển khai) các ứng dụng Servlet và JSP sử dụng kiến trúc MVC. 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.
Struts là một tập thư viện các thẻ JSP tùy chọn (Custom JSP Tag): Struts cung cấp các thư viện thẻ tùy chọn cho việc thể hiện các thuộc tính của bean, quản lý các HTML forms, lặp lại các kiểu cấu trúc dữ liệu, và đưa ra các HTML có điều kiện.
Nguồn http://www.vninformatics.com
2. Tiến trình thực thi mô hình MVC của Struts như thế nào?
Mô tả tiến trình mà hầu hết các ứng dụng struts phải tuân theo
Tiến trình này có thể được chia thành 5 bước cơ bản sau:
1. Một request được gửi đến từ view
2. ActionServlet sẽ tiếp nhận request này, phân tích, kiểm tra. Sau đó chỉ định cho Action tương ứng thực thi yêu cầu, tính toán những tác vụ cần thiết.
ActionServlet đóng vai trò là Controller
3. Action sẽ thao tác và xử lí trên Model của ứng dụng
4. Mỗi khi Action hoàn thành việc thao tác và xử lí, nó trả quyền điều khiển về cho ActionServlet kèm theo một key gắn kèm với kết quả trả về. ActionServlet sẽ dựa vào key này mà quyết định xem các kết quả trả về sẽ được hiển thị như thế nào.
5. ActionServlet trả lời bằng cách gửi lại một request cho view là một liên kết đến kết qua trả về của Action thông qua key trên. Sau đó, view làm nốt công việc trình bày kết quả.
Nguồn benalpenliebe.blogspot.com
3. Cấu trúc của Struts:
Cấu trúc của Struts
• Một hoặc nhiều Action, mỗi action trong trang web sẽ ánh xạ chính xác đến một thành phần <action> được định nghĩa trong file struts-config.xml. Action được triệu gọi bởi người dùng từ một trang HTML hoặc JSP thông qua một liên kết hay thông qua thuộc tính action trong thẻ <form>.
• Một thành phần <action> sẽ định nghĩa một lớp ActionForm, trong một số trường hợp, nó sẽ được sử dụng để validate(xác nhận) các dữ liệu trong form được submit bởi người sử dụng. Nó cũng định nghĩa lớp Action nào sẽ được sử dụng để xử lý các yêu cầu từ phía người dùng.
• Một lớp ActionForm có thể sử dụng một hoặc nhiều forward được định nghĩa trong thẻ <action> đề nói cho một ActionServlet trả về các response tương ứng với các request của người dùng. Chúng ta có thể định nghĩa nhiều forward trong thẻ <action-mapping>.
4. Các thành phần chính của một ứng dụng struts:
Struts Model Components
Model là một thành phần được cho là quan trọng nhất trong các ứng dụng MVC.
Model bao gồm các business entities và một tập các qui tắc để quản lí việc tổ chức và thao tác dữ liệu.
Struts không cung cấp các Model Component chuyên dụng, tuy nhiên chúng ta có thể sử dụng lại các Model của các ứng dụng khác hoặc tự xây dựng các model của riêng mình.
Struts View Components
Mục đích của thanh phần Struts View này cũng giống y như một thành phần view trong các ứng dụng theo mô hình MVC: chịu trách nhiệm trình bày thông tin được cung cấp bởi Model.
Struts sử dụng JSP để thiết kế thành phần View. Ngoài ra, để hỗ trợ và mở rộng khả năng của View, chúng ta cũng có thêm thư viện Taglib, sử dụng HTML, JS… cho mục đích trình bày thông tin.
Struts Controller Components
Struts cung cấp hai thành phần rất quan trọng đó là ActionServlet và Action để điều khiển và quản lí mọi yêu cầu của người dùng cũng như việc thao tác với dữ liệu
ActionServlet chịu trách nhiệm nhận và xử lí các request từ phía người dùng, chỉ định Action thực thi tương ứng với từng yêu cầu cụ thể.
Action chịu trách nhiệm thao tác với Model, nó kết hợp rất chặt chẽ với ActionServlet. Cả hai thành phần này đóng vai trò làm Controller trong Struts.
Struts taglib
Cung cấp một tập các tag library cho việc phát triển ứng dụng, bao gồm cả các taglib hỗ trợ thiết kế HTML và JSP taglib.
Struts Config
File cấu hình của ứng dựng Struts.
5. Cơ chế hoạt động:
1. Ứng dụng web mà bạn phát triển có một mô tả triển khai (WEB-INF/web.xml) mà bạn phải viết. Tập tin này mô tả cấu hình ứng dụng web của bạn, bao gồm trang khởi động (là tập tin đuợc hiển thị trong một thư mục khi yêu cầu không chỉ rõ trang nào), ánh xạ các servlet (đuờng dẫn hoặc phần mở rộng), và các tham số truyền tới các servlet đó.
Trong tập tin web.xml,bạn phải cấu hình ActionServlet làm servlet xử lí tất cả các yêu cầu đối với một ánh xạ cho truớc (thuờng sử dụng phần mở rộng .do). ActionServlet chính là "bàn điều khiển" đuợc nhắc tới trong phần mở đầu của bài viết. Cũng trong tập tin web.xml, bạn cấu hình cho ActionServlet sử dụng một hoặc nhiều tập tin cấu hình cho bản thân Struts.
Từ bây giờ, giả sử chúng ta đang cài đặt ứng dụng web trên máy chủ tại vị trí /myapp, và chúng ta sử dụng cấu hình đơn giản nhất có thể từ đó. Để biết thêm chi tiết về các mô tả triển khai, bạn có thể đọc thêm Đặc tả Servlet có trên trang của Sun.
2. Trong tập tin cấu hình framework, bạn liên kết các đuờng dẫn với thành phần điều khiển của ứng dụng, chính là các lớp Action (ví dụ như "login" => lớp LoginAction). Việc liên kết này thông báo cho ActionServlet rằng để đáp ứng yêu cầu http://myhost/myapp/login.do, nó cần gọi thành phần điều khiển của bạn, là LoginAction.
Hãy lưu ý về phần mở rộng do trong URL này. Phần mở rộng sẽ khiến máy chủ của bạn (Tomcat chẳng hạn) gọi ActionServlet. Cấu hình đuợc tham chiếu và LoginAction đuợc thực thi.
3. Với mỗi Action,bạn cũng cấu hình framework với tên của các trang kết quả có thể đuợc hiển thị tuơng ứng với Action đó. Có thể có nhiều hiển thị đuợc dùng làm kết quả của một Action (thuờng có ít nhất là hai: một tuơng ứng với kết quả thành công và một ứng với kết quả thất bại).
Action của bạn (phần điều khiển mà bạn viết) đuợc dựa trên các tên ánh xạ kết quả logic này. Nó thông báo cho ActionServlet bằng các từ như "success", "failure", "ready", "ok", "UserError", vân vân... Framework (thông qua cấu hình mà bạn đã thiết lập) sẽ biết cách chuyển tới các trang thích hợp. Việc cấu hình này tận dụng ưu thế của việc cấu hình lại đối với lớp hiển thị bằng cách chỉnh sửa các tập tin cấu hình XML.
Tới lúc này, framework đã biết cách ủy quyền cho các thành phần điều khiển của bạn và các kết quả cần đuợc hiển thị sau khi các thành phần điều khiển xử lí. Phần mô hình (model) của ứng dụng sẽ hoàn toàn phụ thuộc vào bạn, và sẽ đuợc gọi từ các thành phần điều khiển của bạn.
4. Bạn cũng có thể liên kết một JavaBean với một action (hoặc một tập hợp nhiều action) trong tập tin cấu hình của framework. JavaBean đuợc sử dụng như một kho lưu trữ cho form hoặc hiển thị dữ liệu có thể đuợc kết nối giữa lớp hiển thị và lớp điều khiển.
Các JavaBean này cũng có thể đuợc truy cập từ các thành phần điều khiển của bạn (như lớp LoginAction) và từ các trang hiển thị được liên kết với thành phần điều khiển đó. Chúng cũng có thể được kiểm tra với sự trợ giúp của framework để đảm bảo rằng người dùng nhập thông tin chính xác vào các form.
Lưu ý rằng bạn phải sử dụng một công nghệ máy chủ nào đó (JSP, Velocity, XSLT) để lớp hiển thị nhìn thấy các dữ liệu này (dạng HTML thuần không dùng được). Framework hoạt động ở phía máy chủ nên phần hiển thị ở máy khách cần được tạo ra ở đó. Máy kháh đẩy dữ liệu trở lại thông qua phương thức thông thường của form (POST/GET), và framework sẽ cập nhật các dữ liệu đó trong Bean trước khi gọi các thành phần điều khiển.
5. Trong ứng dụng web sẽ có các trang hiển thị mà người dùng nhìn thấy. Đó có thể là các trang JSP, các mẫu Velocity, các trang XSLT, ... Tập các trang JSP và thẻ JSTL có sẵn trong framework cho bạn sử dụng nhưng bạn có thể sử dụng bất cứ công nghệ hiển thị chuẩn nào cũng được. Ngay cả các tập tin HTML thuần cũng có thể được dùng trong ứng dụng nhưng chúng sẽ khong tận dụng được các tính năng động.
Theo sau thành công của thư viện thẻ JSP, một số gói khác đuợc tạo ra để framework đuợc sử dụng dễ dàng hơn với công nghệ hiển thị ưa thích của bạn. Với các mẫu Velocity, có công cụ hiển thị cho Velocity bạn. Nếu bạn muốn dùng XSLT trong ứng dụng, bạn có thể sử dụng stxx hoặc StrutsCX.
Các gói này giúp các phần tử chuẩn của Struts đồng nhất với công nghệ hiển thị gốc. Bạn cũng có thể sử dụng cả JSP, Velocity và XSLT trong cùng một ứng dụng!
Do Struts phụ thuộc vào công nghệ Servlet chuẩn, bạn có thẻ sử dụng bất cứ công nghệ hiển thị Java nào với nó.
6. Mặc dù trọng tâm của Struts là ở thành phần điều khiển (C), lớp hiển thị là một thành phần quan trọng của bất kì ứng dụng nào. Thư viện thẻ Struts có một số thẻ đặc trưng dể giúp bạn sử dụng các dữ liệu động trong phần hiển thị của mình.
Các thẻ JSP góp một phần đáng kể trong mã nguồn cơ sở của Struts. Trong phiên bản 1.1b3, khi mà mã Java cho phần lõi của Struts chỉ gồm khoảng 28000 dòng thì phần mã Java cho thư viện thẻ đã lên tới 41000 dòng.
Các thẻ này giúp bạn kết nối lớp hiển thị (V) với lớp điều khiển (C) mà không phải nhúng quá nhiều mã Java trong trang JSP. Việc này giúp trang hiển thị có dạng như XML và dễ dàng hơn cho công việc của các nhà thiết kế web. Nó cũng giúp giảm thiểu các lệ thuộc giữa phần điều khiển và phần hiển thị.
Có cả các thẻ gúp bạn quốc tế hoá, hiển thị thông báo lỗi, ...
Tất cả các tính năng này phụ thuộc vào các tập tin cấu hình mà bạn cung cấp cho Struts.
Bạn cũng cần ghi nhớ rằng cơ chế đuợc mô tả ở đây chỉ có tác dụng khi các yêu cầu đuợc xử lí bởi ActionServlet.Và điều này chỉ xảy ra khi yêu cầu từ trình duyệt khiến máy chủ (như Tomcat, WebSphere, ...) gọi ActionServlet. Do đó bạn cần đảm bảo rằng các trang phụ thuộc vào Struts đuợc gọi thông qua một yêu cầu đuợc ánh xạ tới ActionServlet (có phần mở rộng .do).Property file : It is used to store the messages that an object or page can use. Properties files can be used to store the titles and other string data. We can create many property files to handle different languages.
Business objects : It is the place where the rules of the actual project exists. These are the modules which just regulate the day- to- day site activities.
Nguồn cntt.tv
6. Thư viện thẻ Struts để xây dựng các thành phần trình diễn trong một ứng dụng:
+ <templete>: cung cấp cho nhà phát triển ứng dụng một tập các thẻ JSP để chia nhỏ giao diện người dùng thành các thành phần có thể dễ dàng tháo rắp.
+ <bean>: cung cấp cho nhà phát triển ứng dụng một tập các thẻ JSP để quản lý đầu ra từ một JavaBean.
+ <logic>: có thể được sử dụng để ứng dụng các điều kiện logic trong một trang JSP.
+ <html>: có thể sử dụng để tạo ra các thành phần form
7. Ưu điểm của Struts (so với MVC sử dụng requestDispatcher):
• Struts 2 được xây dựng và phát triển dựa trên nền tảng mô hình MVC nên nó thừa hưởng được đầy đủ các ưu điểm mà mô hình MVC đem lại.
• Dễ dàng tùy chỉnh (customize) chu kỳ xử lý (request lifecycles ) cho từng action
• 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.
8. Nhược điểm của Struts:
Để sử dụng MVC với chuẩn RequestDispatcher, ta cần nghiên cứu sâu với chuẩn JSP và Servlet APIs. Để sử dụng MVC với Struts, ta còn phải hiểu rõ cả framework rộng lớn và phức tạp, nó tương tự như việc tìm hiểu cả cái cốt lõi của hệ thống. Điều bất lợi này đặc biệt đáng kể với những dự án nhỏ, những dự án có ít thời gian để thực hiện, và những lập trình viên có ít kinh nghiệm; ta mất rất nhiều thời gian trong việc nghiên cứu Struts khi thực hiện đề án.
Nguồn Trường Đại Học Khoa Học Tự Nhiên Tp. HCM
Framework là một thư viện, bộ khung để phát triển các phần mềm ứng dụng. Tức là nó tạo ra các "Vật liệu" ở từng lĩnh vực cho người lập trình viên, thay vì họ phải mất nhiều thời gian để tự thiết kế trước khi dùng. Do vậy, người lập trình viên chỉ cần tìm hiểu và khai thác các vật liệu này rồi thực hiện (tức lập trình) để gắn kết chúng lại với nhau, tạo ra sản phẩm.
Framework có 2 thành phần chính là Common Language Runtime (CLR) và NET Framework class library. CLR là môi trường được dùng để quản lý sự thi hành các nguồn mã mà ta đã soạn ra và biên dịch trong các ứng dụng. Tuy nhiên khi biên dịch nguồn mã, ta lại biên dịch chúng ra thành một ngôn ngữ trung gian gọi là Microsoft Intermediate Language (MSIL).
Phần ghi chú:
Spring Framework, hay ngắn hơn là Spring, là một cấu trúc dùng để xây dựng chương trình ứng dụng mã nguồn mở dành cho ngôn ngữ lập trình Java. Phiên bản đầu tiên của nó do Rod Johnson viết, và đã được ông xuất bản cùng với quyển sách đầu tay Expert One-on-One Java EE Design and Development (Nhà xuất bản Wrox Press, Tháng 10 năm 2002) - tạm dịch là "Thiết kế và kiến tạo Java EE - tương giao cá nhân một đối một chuyên ngành". Phiên bản phần mềm này cũng còn được xuất sang nền tảng .NET (.NET platform), được gọi là Spring.net.
Kiến trúc của Spring Framework được ra mắt công chúng lần đầu tiên hồi tháng 6 năm 2003 dưới Giấy phép Apache - phiên bản 2.0. Phiên bản 1.0 đánh dấu mốc thành đạt đầu tiên được xuất bản vào tháng 3 năm 2004, và tiếp đó vào tháng 9 năm 2004, tháng 3 năm 2005.
Tuy Spring Framework không bắt buộc người ta phải tuân theo một mô hình lập trình (programming model) cụ thể nào, song nó lan truyền rộng rãi trong cộng đồng những người viết chương trình dùng Java, như một hình thức chủ yếu thay thế cho mô hình Enterprise JavaBean. Theo thiết kế, bộ khung hình này giải phóng lập trình viên dùng Java, cho phép họ nhiều quyền tự do hơn, và đồng thời cung cấp một giải pháp tiện lợi, đầy đủ dẫn chứng bằng tài liệu, dễ dàng sử dụng, phù hợp với những thực hành thông dụng trong công nghệ phần mềm.
Bên cạnh những đặc trưng nền tảng của Spring Framework là những cái có thể dùng được trong bất cứ một chương trình ứng dụng Java nào, rất nhiều các mở rộng và tiến bộ trong việc kiến tạo các trình ứng dụng dành cho nền tảng mạng web (web-based application) dựa trên nền Java Enterprise cũng tồn tại nữa. Spring Framework nổi tiếng cũng một phần do chính đặc thù kể trên và được giới thương mại công nhận như một nền tảng kiến trúc có tầm quan trọng trong chiến lược kiến tạo phần mềm.
Nguồn bài viết:
Dngaz.com