Đồ án MVC Architecture & Struts Framework In Java(J2EE)

Mục Lục

Phần I : Tổng quan ngôn ngữjava.4

1. Lịch sửphát triển của Java.4

2. Mục đích của Java .4

3. Đặc điểm của Java .4

4. Các loại chương trình trong java .5

5. Các thành phần của Java Environment .5

6. Các loại ứng dụng java .5

Phần II : Môi Trường Phát Triển Ứng Dụng Java.6

1. Khái niệm .6

2. Kiến trúc Eclipse.6

3. The Platform runtime .7

4. The workspace .7

5. The Workbench.7

6. Team support .7

7. Help .7

Phần III : Giới thiệu J2EE và các thành phần liên quan .8

1. Applet.8

2. JavaBean .9

3. JSP. 10

4. Servlets.11

Phần IV : Kiến trúc MVC (Model _View_Controller).13

1. Khái niệm.13

2. Mối quan hệgiữa View và controller .14

3. Mối quan hệgiữa Model và view .14

4. Các lợi điểm của MVC .15

5. Hạn chếcủa MVC.15

Phần V : Áp dụng kiến trúc MVC xây dựng ứng dụng triển khai thực tế.16

1. Qui trình thực hiện .16

1.1. View .16

1.2. Controller .17

1.3. Model .20

2. Triển khai ứng dụng .23

2.1. Cơsởdữliệu .23

2.2. Bốtrí các tập tin trên Eclipse.23

2.3. Kết quả.24

Phần VI : Struts Framework .25

1. Struts 1.0 .25

1.1. Khái niệm.25

1.2. Cấu trúc của Struts .26

1.3. Các thành phần chính của một ứng dụng Struts .27

1.4. Các file cấu hình cần thiết đểxây dựng một ứng dụng Struts .27

1.5. Ưu điểm của Struts (so với MVC sửdụng RequestDispatcher) .28

1.6. Nhược điểm của Struts.28

2. Struts 2.0 .29

Phần VI: Áp dụng kiến trúc MVC xây dựng ứng dụng triển khai thực tế.30

1. Qui trình thực hiện .30

1.1. Các trang hiển thị(View).30

1.2.Action.37

1.3.Bean .40

1.4.Utils .46

1.5.Struts.xml .47

1.6.Build.xml .49

2 . Triển Khai Ứng Dụng .50

2.1.Cơsởdữliệu .50

2.2. Bốtrí các tập tin trên Eclipse.50

pdf51 trang | Chia sẻ: netpro | Lượt xem: 2904 | Lượt tải: 5download
Bạn đang xem trước 20 trang tài liệu Đồ án MVC Architecture & Struts Framework In Java(J2EE), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
. Tất cả cac 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, JSPs, các thư viện Tag và các file nguồn là các phần của view component. ƒ 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. Trang 13 MVC Architecture & Struts Framework in J2EE (Java) 10/2007 Các 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. Trang 14 MVC Architecture & Struts Framework in J2EE (Java) 10/2007 ƒ 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. 4. 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á 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. 5. 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ể Trang 15 MVC Architecture & Struts Framework in J2EE (Java) 10/2007 Phần V Áp dụng kiến trúc MVC xây dựng ứng dụng triển khai thực tế Chương trình : Java WebMail Minh họa cách thức đăng nhập hệ thống. Tổng quan ứng dụng: ™ Người dùng tương tác với các component Controller (thường được thể hiện bằng các Servlet) bằng cách gửi các yêu cầu cho nó. Đến lượt mình, các component Controller tạo nên các thực thể (instatiate) component Model (thường được thể hiện bằng các JavaBean hoặc bằng công nghệ khác tương đương), và thao tác nó theo yêu cầu của ứng dụng. Khi Model được khởi tạo, Controller sẽ quyết định chọn View (thường thể hiện bởi JSP) nào để trình bày kết quả đến người dùng, View này sẽ tương tác với Model để trình bày kết quả. 1. Qui trình thực hiện : 1.1 .View : Để thực hiện phần View của ứng dụng, chúng ta dùng 2 JSP đơn giản như sau: Trang login.jsp <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> Please Login Please enter your information for login seminar about Java (J2EE) Username Password   Trang 16 MVC Architecture & Struts Framework in J2EE (Java) 10/2007 ™ Trang login.jsp để người dùng nhập vào username và password, thường gọi là trang JSP front-end. Thông tin này được chuyển đến Controller Servlet, báo controller triệu gọi action là login Trang Welcome.jsp Welcome <jsp:setProperty name="user" property="path" value="" /> Welcome ™ Trang welcome.jsp hiển thị một thông điệp chào người dùng với tên được cung cấp từ cơ sở dữ liệu do JavaBean truy xuất. Thất ra trang View chỉ cần truy xuất JavaBean (jsp:getProperty) với scope request (jsp:useBean). Bean này được đặt trong request bởi Controller, như chúng ta sẽ thấy sau. Tuy nhiên, ở đây ta cũng thiết lập thuộc tính path của JavaBean để minh họa việc dùng đối tượng ẩn application. Thuộc tính path chỉ ra vị trí thực của cơ sở dữ liệu Access mà ta truy xuất bằng DSN-less. 1.2. Controller: Một Servlet thực hiện phần controller trong ứng dụng chúng ta: Controller.class package mvc.controller; import mvc.controller.actions.LoginAction; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; Trang 17 MVC Architecture & Struts Framework in J2EE (Java) 10/2007 import javax.servlet.ServletException; import javax.servlet.RequestDispatcher; import java.io.IOException; public class Controller extends HttpServlet { protected void doGet( HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse ) throws ServletException, IOException { doPost( httpServletRequest, httpServletResponse ); } protected void doPost( HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse ) throws ServletException, IOException { //Lay thuoc tinh action tu request String theAction = httpServletRequest.getParameter( "action" ); Action action = null; if ( theAction.equalsIgnoreCase( "login" ) ) { action = new LoginAction( httpServletRequest, httpServletResponse ); } // Thuc hien phuong thuc execute cua doi tuong lop Action, tra ve mot duong dan page kieu string String page = action.execute( httpServletRequest, httpServletResponse ); RequestDispatcher rd = httpServletRequest.getRequestDispatcher( page ); // forward trang ke tiep bang giao dien RequestDispatcher rd.forward( httpServletRequest, httpServletResponse ); } } ™ Servlet trên chỉ dùng một tham số của request là action để quyết định hành động được triệu gọi. Trang login.jsp gửi hành động login và đối tượng action lớp LoginAction sẽ được triệu gọi. Đối tượng action này cài đặt một giao diện chuẩn (Action) với một phương thức execute, có các đối số là các đối tượng Request và Response. Phương thức này trả về đường dẫn (page) đến trang sẽ gọi kế tiếp (phần View), người dùng chuyển tiếp (forward) đến trang này bằng giao diện RequestDispatcher. Trang 18 MVC Architecture & Struts Framework in J2EE (Java) 10/2007 Action.class package mvc.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public interface Action { public String execute( HttpServletRequest req, HttpServletResponse res ); } LoginAction.class package mvc.controller.actions; import mvc.controller.Action; import mvc.model.UserBean; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class LoginAction implements Action { public LoginAction( HttpServletRequest request, HttpServletResponse response ) { } public String execute( HttpServletRequest req, HttpServletResponse res ) { String username = req.getParameter( "username" ); String password = req.getParameter( "password" ); // Tao mot UserBean try { UserBean user = new UserBean(); // Thiet lap cac thuoc tinh cua UserBean, co the thiet lap ca thuoc tinh path o day user.setUser( username ); user.setPassword( password ); // Dat no vao trong request req.setAttribute("user", user); } catch ( Exception e ) { System.out.println( e.getMessage() ); } return "/welcome.jsp"; } } Trang 19 MVC Architecture & Struts Framework in J2EE (Java) 10/2007 ™ Phương thức execute() của lớp LoginAction tạo (instantiate) một đối tượng Model mới (UserBean), đặt nó vào trong Session, và trả về đường dẫn đến trang kế tiếp tức welcome.jsp. Chú ý phần Controller này sẽ thiết lập các thuộc tính cho JavaBean, nếu ở đây dùng trang JSP thì sẽ có action jsp:setProperty 1.3. Model Phần Model trong ứng dụng đơn giản này chỉ có đúng một JavaBean UserBean.class package mvc.model; import java.sql.ResultSet; import mvc.util.*; public class UserBean { private String user = ""; private String password = ""; private String name = ""; private String path = ""; public UserBean() throws ClassNotFoundException { } public void setUser( String user ) { this.user = user.toUpperCase(); } public String getUser() { return user; } public void setPassword( String password ) { this.password = password; } public String getPassword() { return password; } public void setPath( String path ) { Trang 20 MVC Architecture & Struts Framework in J2EE (Java) 10/2007 this.path = path; } public String getName() { try { String strQuery = "SELECT name FROM accounts WHERE user = '"+ user +"' AND password = '"+ password +"'"; ResultSet result = DataUtil.ReadData(strQuery, path); while ( result.next() ) { name = result.getString( 1 ); //if( user.equalsIgnoreCase(result.getString(1)) //&& password.equalsIgnoreCase(result.getString(2))); } } catch ( Exception e ) { System.out.println( e.getMessage() ); } return name; } } DataUtil.class package mvc.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import javax.sql.*; public class DataUtil { public static ResultSet ReadData(String SQL,String path) throws Exception { Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ); Connection connect = DriverManager.getConnection ("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};" + "DBQ=" + path, "", "" ); Statement stmt = connect.createStatement(); ResultSet result = stmt.executeQuery( SQL ); return result; } } Trang 21 MVC Architecture & Struts Framework in J2EE (Java) 10/2007 Xây dựng tập tin build.xml để đóng gói ứng dụng ra định dạng war dạy trên tomcat Build.xml <property name="tomcat.home" value="C:\Program Files\Apache Software Foundation\Tomcat 5.0"/> <javac srcdir="${src.home}" destdir="${build.home}" debug="${compile.debug}" deprecation="${compile.deprecation}" optimize="${compile.optimize}"> <war destfile="${dist.home}/${ant.project.name}.war" webxml="${web.home}/WEB- INF/web.xml"> Trang 22 MVC Architecture & Struts Framework in J2EE (Java) 10/2007 2. Triển khai ứng dụng : 2.1. Cơ sở dữ liệu Cơ sở dữ liệu Access: members.mdb có một bảng accounts 2.1. Bố trí các tập tin trên Eclipse : Trang 23 MVC Architecture & Struts Framework in J2EE (Java) 10/2007 2.3. Kết quả: Trang 24 MVC Architecture & Struts Framework in J2EE (Java) 10/2007 Phần VI Struts Framework 1. Struts 1.0: 1.1 Khái niệm : • Struts là một MVC Framework: Struts cung cấp một framework thống nhất để deploy các ứng dụng Servlet và JSP sử dụng kiến trúc MVC. • Struts là một tập các Utilities: Struts cung cấp các lớp tiện ích để điều khiển hầu hết các tác vụ trong việc phát triển các ứ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. Struts thực thi mô hình MVC ™ Mô hình Struts Framework thực thi mô hình MVC bằng cách sử dụng tập hợp các thẻ JSP, các thẻ tùy chọn JSP (custom JSP tag), và các Java servlet. Dưới đây chúng ta sẽ mô tả ngắn gọn cách mà Struts Framework ánh xạ đến mỗi thành phần trong mô hình MVC. 9 Hình trên 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ăn bản: 1. Request được tạo ra từ một View 2. Request được tiếp nhận bởi một ActionServlet (đóng vai trò là một Controller), và ActionServlet này sẽ lookup URI cần thiết trong file XML và xác định tên của lớp Action sẽ thực hiện các bussiness logic cần thiết. Trang 25 MVC Architecture & Struts Framework in J2EE (Java) 10/2007 3. Lớp Action thực hiện các logic của nó trong các thành phần Model kết hợp với ứng dụng. 4. Khi Action hoàn tất tiến trình sử lý của nó, nó sẽ trả điều khiển về cho ActionServlet. Là một phần của thành phần trả về, lớp Action cung cấp một khóa xác định kết quả quả của tiến trình sử lý đó. ActionServlet sử dụng khóa này để xác định kết quả sẽ được forward đến đâu để trình diễn ra ngoài. 5. Yêu cầu được hoàn tất khi ActionServlet đáp ứng nó bằng cách forward yêu cầu đó đến một View được liên kết đến để trả về khóa đã đề cập ở trên bước 4, và View này sẽ trinh diễn kết quả của Action. Cấu trúc của Struts 1.0 1.2. Cấu trúc của Struts bao gồm: • 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 đượ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ẻ . • Một thành phần sẽ định nghĩa một lớp ActionForm, trong một số trường hợp, nó sẽ được sử dụng để validate 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. Trang 26 MVC Architecture & Struts Framework in J2EE (Java) 10/2007 • Một lớp ActionForm có thể sử dụng một hoặc nhiều forward được định nghĩa trong thẻ đề 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ẻ . 1.3. Các thành phần chính của một ứng dụng Struts: • ActionServlet: đóng vai trò như là một controller trong mô hình MVC, hay nói cách khác ActionServlet là sự thực thi controller của Struts đối với mô hình MVC. ActionServlet lấy về các request từ phía người dùng và ánh xạ chúng đến thành phần trong file struts-config.xml. • Action: định nghĩa một tác vụ có thể được gọi bởi người dùng. Nó cũng định nghĩa lớp sẽ sử lý các request từ phía người dùng và trang JSP sẽ hiển thị kết quả về cho người sử dụng. • Lớp Action: chứa toàn bộ những sử lý cho các yêu cầu của người dùng. • ActionForm: đi kèm với thẻ trong file struts-config.xml, nó quản lý toàn bộ các dữ liệu được submit lên từ phía người dùng và có thể thực hiện validate các dữ liệu đó. • Trang JSP: được sử dụng để trả về trang HTML để thể hiện kết quả đã được sử lý cho người dùng. 1.4. Các file cấu hình cần thiết để xây dựng một ứng dụng Struts: • web.xml: file này chứa toàn bộ các cấu hình của ActionServlet, các sự ánh xạ của các yêu cầu từ phía người dùng đến ActionServlet, và tất các Struts Tag Library Definitions (TLDs). struts-config.xml: file này chứa tất cả các thông tin cấu hình cho một ứng dựng xây dựng dựa trên Struts. • ApplicationResources.properties: file này trung tâm chứa các nội dung tĩnh được sử dụng trong toàn bộ ứng dụng Struts. Nó cho phép các nhà phát triển dễ dàng thay đổi nội dung các text và các nội dung dùng chung sử dụng trong ứng dụng. • Các 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: + : 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. + : 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. +: có thể được sử dụng để ứng dụng các điều kiện logic trong một trang JSP. + : có thể sử dụng để tạo ra các thành phần form Trang 27 MVC Architecture & Struts Framework in J2EE (Java) 10/2007 1.5. Ưu điểm của Struts (so với MVC sử dụng RequestDispatcher) - Cấu hình được tập trung dựa vào file: • Thay vì viết hàng loạt những thông tin vào chương trình Java, hầu hết những giá trị Struts được thể hiện trong file .xml và file property. Phương pháp này cho phép người lập trình Web và Java chỉ chú tâm vào phần công việc cụ thể của họ (cài đặt business logic, hiển thị những giá trị cụ thể cho clients, etc) mà không cần quan tâm về tổng thể hệ thống. - Form beans: • Trong JSP, ta có thể sử dụng thuộc tính property=”*” với jsp:setProperty để tự động sinh ra JavaBean component dựa trên những thông số yêu cầu chuyển đến. Apache Struts mở rộng thêm khả năng này và thêm vào vài tiện ích khác, tất cả nhằm phục vụ cho việc đơn giản hóa tiến trình xử lý những thông số yêu cầu từ client. - Bean tags: • Apache Struts cung cấp 1 tập custom JSP tags (cụ thể là bean:write) cho phép dể dàng xuất ra những thuộc tính của JavaBean components. - HTML tags: • Apache Struts cung cấp 1 tập custom JSP tags để tạo HTML forms - những cái hổ trợ cho JavaBean components. Sự hổ trợ bean/form này phục vụ 2 mục đích sau: + Nó cho phép ta khởi tạo các giá trị field của form từ các đối tượng Java. + Nó cho phép ta hiển thị lại các form với 1 vài hoặc tất cả những giá trị nhập vào lúc trước 1 cách nguyên vẹn. - Kiểm tra giá trị các field của form : • Apache Struts tích hợp sẵn những khả năng cho việc kiểm tra những giá trị form được định dạng theo yêu cầu. Nếu những giá trị không định dạng hoặc định dạng sai, form có thể tự động hiển thị những thông báo lỗi. Cách ràng buộc này có thể thực hiện trên server (Java) hoặc trên client (JavaScript). - Kiểm tra gi trị các field của form : • Struts hổ trợ tính nhất quán của MVC xuyên suốt ứng dụng. 1.6. Nhược điểm của Struts : - 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. Trang 28 MVC Architecture & Struts Framework in J2EE (Java) 10/2007 - Ít có tài liệu hỗ trợ • So sánh với chuẩn servlet và JSP APIs, Struts có ít tài liệu hổ trợ hơn nhiều. - Less transparent: • Với những ứng dụng Struts, có nhiều lỗi bên dưới hơn những ứng dụng Web dựa trên ngôn ngữ Java bình thường. Vì thế, ứng dụng Struts thì: + Khó tìm hiểu. + Khó chuẩn hóa và đánh giá. - Cứng nhắc: • Struts khó áp dụng các phương pháp khác 2. Struts 2.0: • Java framework để phát triển các ứng dụng web theo mô hình MVC. • Linh hoạt cho việc chuẩn hóa dữ liệu người dùng. • Các file cấu hình sử dụng package và namespace để quản lý tất cả các action. • Dễ dàng tích hợp các hợp các module của nhà cung cấp thứ 3 (Hibernate, Spring, Ajax…). • Sử dụng các Interceptor. • Tích hợp Inversion of Control. Trang 29 MVC Architecture & Struts Framework in J2EE (Java) 10/2007 Phần VI Áp dụng Struts 2.0 Framework xây dựng ứng dụng triển khai thực tế Chương trình: Quản Lý Nhân Viên Minh họa chức năng cập nhật tài khoản. I. Qui trình thực hiện : 1. Các trang hiển thị (View) Index.jsp <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> Index page <META HTTP-EQUIV="Refresh" CONTENT="0;URL=employee/getEmployeeList.action"> Initializing... Trang 30 MVC Architecture & Struts Framework in J2EE (Java) 10/2007 Employee.jsp <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ""> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> Insert title here function edit() { alert("edit......."); document.getElementById("btnAdd").disabled = true; document.getElementById("btnSave").disabled = false; } Demo Struts 2.0 Framework in J2EE <form id="frmEmployee" name="Employee" method="post" theme="simple"> ID Name Sex Birthday City Email Action Trang 31 MVC Architecture & Struts Framework in J2EE (Java) 10/2007 <s:url id="urlDelete" action="EmployeeDelete"> <s:param name="id" value="%{id}"/> <s:a href="%{urlDelete}">Delete <s:url id="urlEdit" action="EmployeePrepareUpdate"> <s:a href="%{urlEdit}" onclick="return edit();">Edit Trang 32 MVC Architecture & Struts Framework in J2EE (Java) 10/2007 Success.jsp <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+req uest.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> "> My JSP 'Success.jsp' starting page <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> Successful!. Trang 33 MVC Architecture & Struts Framework in J2EE (Java) 10/2007 Fail.jsp <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+req uest.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> "> My JSP 'Fail.jsp' starting page <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> Invalid Employee. Trang 34 MVC Archit

Các file đính kèm theo tài liệu này:

  • pdfMVC Architecture & Struts Framework In Java(J2EE).pdf
Tài liệu liên quan