Sửdụng Servlet và JSP trong các ứng dụng

Một phần của tài liệu Phát triển ứng dụng phần mềm trên máy chủ dựa trên công nghệ Java (Trang 73)

3.4.1 Các trường hợp sử dụng Servlet

Các Servlet thường được sử dụng để thực hiện các xử lý của ứng dụng và tạo các dữ liệu dạng nhị phân. Servlet thường được sử dụng cho các mục đích sau:

• Dùng để cài đặt các dịch vụ: Servlet thường không được sử dụng để hiển thị thông tin trừ các thông tin dạng nhị phân. Thay vào đó, Servlet được dùng để cung cấp các dịch vụ của ứng dụng. Servlet có thể thực hiện mọi dịch vụ mà ứng dụng có thể cung cấp được như tạo khuôn mẫu, bảo mật, cá thể hóa, điều khiển ứne dụng và sau đó lựa chọn thành phần thực hiện hiển thị và nó chuyển yêu cầu hiển thị thông tin cho thành phần này để thực hiện hiển thị. • Dùng làm trình điểu khiển: Servlet là công nghệ thường được sử dụng cho

việc cài đặt các trình điều khiển trong bộ chứa Web. Các trình điều khiển này thực hiện việc xác định cách thức xử lý yêu cầu của người sử dụng và lựa chọn thành phần hiển thị thông tin tương ứng. Trình điều khiển kích hoạt các

xử lý của ứng dụng và thực hiện các quyết định. Tất cả các công việc này đều có tính chất thủ tục. Vì vậy, việc sử dụng các Servlet là hết sức phù hợp.

• Dùng để tạo các d ữ liệu dạng nhị ph â n : Các dữ liệu nhị phân được tạo bởi

Servlet thì tốt hơn. Các Servlet muốn sinh ra các dừ liệu nhị phân thì phải đặt kiểu nội dung thông tin là kiểu MIME. Servlet sẽ thực hiện viết các dừ liệu

dạng nhị phân ra đối tượng OutputStream được lấy từ ServletRequest. Mỗi

Servlet có thể viết dừ liệu ra OutputStream hoặc PrintWriter, nhưng không

thể viết ra cả 2 đổi tượng này đồns, thời. JSP không thể tạo được dừ liệu dạng nhị phân. [4]

3.4.2 Các trường hợp sử dụng JSP

JSP thườne được sử dụng đế tạo các kết quả dạng văn bản có định dạng hoặc không theo khuôn dạng nào cả. Các thành phần này được sử dụng trong các trường họp mà giá trị của dữ liệu thay đổi giữa các yêu cầu khác nhau nhưng cấu trúc của dữ liệu thi không thay đổi hoặc nếu có thay đổi thì thay đổi rất ít. Chính vì vậy, JSP thường được sử dụng trong các trường hợp sau:

• Dùng để hiển thị d ữ liệu: JSP được sử dụng có hiệu quả nhất là hiển thị các

dữ liệu dạng văn bản có cấu trúc. Các dữ liệu này thường dưới dạng HTML, XHTML và DHTML. Các thông tin được thể hiện ở đây có một phần là thông tin tĩnh với một số thành phần được thay thế bởi giá trị động tại thời điểm thực hiện.

• Dùng để sinh các d ữ liệu dạng XML: JSP là công nghệ rất tốt để tạo sinh

các dữ liệu XML có cấu trúc cố định. JSP được sử dụng để sinh ra các thông điệp XML theo các định dạng chuẩn và các giá trị thuộc tính thay đổi theo các yêu cầu được gửi đến. Các thông điệp XML có thể được tạo ra từ các khuôn mẫu hay thực hiện việc ghép nối nhiều thông điệp nhỏ thành một thông điệp lớn hơn.

- 7 4 -

• Dùng đế sinh các d ữ liệu văn bản không có cấu trúc: JSP không những có thể dùng để sinh các dừ liệu văn bản có cấu trúc mà còn có the sinh ra các văn bản không có cấu trúc như các văn bản dạn2 ASCII, độ rộng cột cố định hay sử dụng các ký tự ngăn cách. Một trong các ví dụ là sử dụng JSP để tạo các thư điện tử trả lời cho khách hàng.

Tóm lại, trong bộ chứa Web có hai loại thành phần khác nhau là JSP và Servlet, v ề cơ bản, JSP có thế được coi là một loại Servlet đặc biệt. Tuy vậy, mồi loại thành phần này đều có các ưu và nhược điểm khác nhau. Thành phần JSP thường được sử dụng cho việc hiển thị thông tin. Thành phần Servlet thường được sử dụng trong các công việc không đòi hỏi việc hiển thị thông tin. Ví dụ như thực hiện việc xử lý dừ liệu, điều khiển tiến trình xử lý, lựa chọn thành phần hiển thị. [4]

C h ư ơ n g 4 : ứ n g d ụ n g c ô n g n g h ệ J 2 E E t r o n g p h á t t r i ể n c á c ứ n g d ụ n g m ứ c x í

n g h i ệ p

4.1 Kiến trúc của ứng dụng mức xí nghiệp với J2EE

Các chương trước đã xem xét công nghệ J2EE nói chung và công nghệ cho các thành phần J2EE. Chương này sẽ xem xét việc sử dụng các công nghệ và các thành phần được đề cập ở trên được sử dụng như thế nào trong các ứng dụng.

Ở đây sẽ xem xét kiến trúc tổng quan của một ứng dụne mức xí nghiệp với công nghệ J2EE. Đồng thời cũng xem xét các khuôn mẫu phát triển của J2EE giúp giải quyêt các vấn đề đặt ra đối với các ứng dụng mức xí nghiệp nói chung và với J2EE nói riêng như thể nào.

Việc ứng dụng công nghệ J2EE và các khuôn mẫu phát triển sẽ được thể hiện trong phần này thông qua việc thiết kế một ứng dụng mẫu thực hiện chức năng của một ngân hàng điện tử.

4.1.1 Kiến trúc MVC

Cách tiếp cận phổ biến nhất hiện nay cho các ứng dụng sử dụng công nghệ J2EE là kiến trúc MVC (Model - View - Controller). MVC là kiến trúc rất phù hợp cho các ứng dụna, tương tác trên Web. Kiến trúc này đã được sử dụng từ trước khi công nghệ Java ra đời và được ứng dụng rất nhiều trong ngôn ngữ SmallTalk. Đặc điểm lớn nhất của kiến trúc này là thực hiện việc phàn chia các đối tượng thành các nhóm ricng biệt thực hiện chức năng xử lý dừ liệu và biểu diễn dữ liệu đế giảm thiểu tối đa sự phụ thuộc lẫn nhau của các đối tượng này.

Kiến trúc MVC chia ứng dụng thành các phần riêng biệt: mô hình, vùng nhìn và bộ điều khiển. Mỗi thành phần có một trách nhiệm riêng biệt và thực hiện nhiệm vụ khác nhau:

- 7 6 -

• Mô hình thực hiện việc biểu diễn các dừ liệu và các Logic nghiệp vụ cũng như quản lý các hoạt động truy nhập và biến đổi dừ liệu. Thông thường, mô hình chính một cách thể hiện thể giới thực của phần mềm. Mô hình có trách nhiệm thông báo cho vùng nhìn khi nó thay đổi và cung cấp khả năng cho phép vùng nhìn có thể lấy được từ mô hình các trạng thái của nó.

• Vùng nhìn thực hiện việc biểu diễn nội dung của mô hình. Vùng nhìn truy nhập tới các dừ liệu trong mô hình và xác định các dữ liệu này được thể hiện như thế nào cho người dùng. Vùng nhìn cũng thực hiện cập nhập dữ liệu khi mô hình thay đổi. Vùng nhìn có trách nhiệm chuyển các dữ liệu do người sử dụng đưa vào tới bộ điều khiển.

• Bộ điều khiển quyết định các thức vận hành của ứng dụng. Nó thực hiện việc chuyên các yêu câu của người sử dụng và lựa chọn vùng nhìn thích hợp cho việc biểu diễn dừ liệu. Bộ điều khiển thực hiện việc phân tích dừ liệu do người sử dụng đưa vào và chuyến nó cho các hoạt động xử lý của mô hình. Sau đó, bộ điều khiển lựa chọn vùng nhìn. Vùng nhìn được lựa chọn tùy thuộc vào sự tương tác đối với người sử dụng và kết quả đưa ra của mô hình. Thông thường, mỗi ứng dụng có một bộ điều khiển cho mồi nhóm các chức năng liên quan với nhau. Một số ứng dụng sử dụng các bộ điều khiển khác nhau cho mỗi loại ứng dụng khách bởi việc lựa chọn vùng nhìn phụ thuộc vào loại ứng dụne khách.

Yêu cầu thông tin trạng thái I I I Thông báo I thay đổi trạng thái Mô hình - Q u ả n lý trạ n g th á i c ủ a ứ n g d ụ n g - C u n g c ấ p c á c th ô n g tin v ề tr ạ n g th á i - T h ự c h iệ n c á c c h ứ c n ă n g c ủ a ứ n g d ụ n g - T h ô n g b á o c h o v ù n g n h ìn c á c th a y đ ổ i trạ n g th á i Vùng nhìn - H iể n th ị n ộ i d u n g c ủ a m ô h ìn h - Y è u c ầ u c u n g c ấ p c á c th ô n g tin trạ n g th á i - G ử i y è u c ầ u c ủ a n g ư ờ i s ử d ụ n g tớ i bộ đ iề u k h iể n

- C h o p h é p b ộ đ iế u k h iể n lựa c h ọ n v ù n g n h ìn Lựa chọn vùng nhìn Hoạt động của người sử dụng Ghi chú

Gọi phương thức thực hiện

1 ^ ^ Sự kiện Thay đổi [rạng thái Bộ điều khiển - X á c đ ịn h c á c h ứ n g x ử c ủ a ứ n g d ụ n g - C h u y ể n h o ạ t đ ộ n g c ủ a n gư ờ i s ử d ụ n g th à n h c á c th a y đ ổ i c ủ a m ô h ìn h - Lựa c h ọ n v ù n g n h ìn Hình 4-1: Kiến trúc MVC

Việc tách biệt trách nhiệm giữa mô hình, vùng nhìn và bộ điều khiển, giúp giảm bót việc lặp lại các dòng lệnh tại các phần khác nhau của ứng dụng. Và điều quan trọng nhất là giúp cho việc bảo trì của ứng dụng trở nên đơn giản hơn rất nhiều. Kiến trúc cũng giúp cho việc xử lý dữ liệu dễ hơn, dù đó là thêm vào một cấu trúc dừ liệu mới hay thay đổi cách thể hiện dữ liệu, bởi phần xử lý của ứng dụng được tách rời với dừ liệu. Kiến trúc cũng cho phép dễ dàng thêm các loại ứng dụng khách mới, bởi không cần thiết phải thay đổi Logic nghiệp vụ khi thêm một loại ứng dụng khách mới.

Trong công nghệ J2EE, kiến trúc MVC được thực hiện bởi các thành phần J2EE như sau:

- 78 -

• Vùng nhìn: JSP

• Bộ điều khiển: Servlet

Ở đây, Servlet đóng vai trò của bộ điều khiển và nhận các yêu cầu của người sử dụng thông qua lệnh POST của giao thức HTTP. Sau đó, nó thực hiện việc chuyển dừ liệu tới mô hình của ứng dụng tức các thành phần EJB và lựa chọn vùng nhìn thích họp hay các JSP. [4]

4.1.2 Các vấn đề đặt ra đối với mô hình MVC trong J2EE

Đe kiến trúc MVC thực sự phát huy hiệu quả thì việc tách biệt giữa các phần khác nhau của ứng dụng phải được thực hiện một cách triệt để. Tuy nhiên, các ứng dụng J2EE theo mô hình đa mức thường có thể dược đặt trên nhiều máy chủ khách nhau. Mọi liên hệ giữa các thành phần này đều được thực hiện qua mạns. Chính vi lý đo này, một số vấn đề được đặt ra đối với các ứng dụng J2EE sử dụng kiến trúc MVC như sau:

• Vấn đề với tốc độ xử lý: do sự phân nhỏ của các thành phần trên máy chủ dẫn đến mỗi lời gọi thực hiện một chức năng của ứng dụng đòi hỏi phải có nhiều thông điệp được gửi trên mạng giữa máy chủ và máy khách. Thêm vào đó, phải có nhiều lời gọi tới các phương thức để thực hiện việc xử lý dữ liệu. Và cuối cùng, nhiều lời gọi khác để lấy được kết quả trả lời. Điều này làm giảm tính hiệu quả của ứng dụng và làm cho việc phát triển ứng dụng trở nên phức tạp hơn.

• Vấn đề với tính ổn định: việc thay đổi Logic nghiệp vụ có thể dẫn đến việc thay đổi của Servlet nếu giao diện của Logic nghiệp vụ bị thay đối.

• Vấn đề với công nghệ cài đặt: để thực hiện việc cài đặt các Logic nghiệp vụ có thể sử dụng nhiều công nghệ khác nhau. Trong đó, có thể kể đến như EJB, JDBC hay các công nghệ khác có thể xuất hiện trong tương lai. Hơn thế nữa, trong môi mô hình lập trinh, môi công nghệ có những các thức khác nhau đê thực hiện lời gọi việc thực hiện xử lý của ứng dụng. Điêu đó có nghĩa là

Servlet phải biết được tất cả các công nghệ được sử dụng cho việc cài đặt cho phần mô hình của ứns dụng.

Để giải quyết các vấn đề này nói riêng và một số các vấn đề khác trong việc phát triển các ửne dụng mức xí nghiệp với công nghệ J2EE, một số khuôn mẫu phát triển ứng dụng được xây dựng. Phần tiếp theo đây sẽ xem xét sơ qua về các khuôn mẫu ứng dụng phổ biến, ở đây cũng thử xem xét chi tiết hơn với một khuôn mẫu ứng dụng được sử dụng rất nhiều, đó là khuôn mẫu Session Bean bao ngoài. [6]

4.1.3 Khuôn mẫu phát triển của J2EE

Khuôn mẫu phát triển là các cách giải quyết thường được sử dụng cho các vấn đề lặp đi lặp lại nhiều lần trong việc thiết kế và cài đặt các ứng dụng. Qua thời gian, các khuôn mẫu này được tập hợp lại. Đây có thể được coi là các hiểu biết và các kinh nghiệm của ngành công nghiệp phần mềm. Các khuôn mẫu phát triển giúp giải quyết các vấn đề về xây dựng kiến trúc của ứng dụng, phân chia các phần của ứng dụng trên các máy chủ khác nhau cũng như giúp giải quyết các vấn đề chung đặt ra đối với mồi ứng dụng như tốc độ thực hiện, việc bảo trì cũng như tính khả chuyển của ứng dụng.

Phần này sẽ xem xét sơ bộ các khuôn mẫu phát triển của những người phát triên phần mềm trên J2EE được sử dụng phổ biến hiện nay. Mồi khuôn mẫu thường được sử dụng ở các mức nhất định hay giao diện giữa các mức này trong các ứng dụng. Các khuôn mẫu phát triển J2EE có thể được kể đến là:

• Bộ lọc chặn: khuôn mầu này được sử dụng trước và sau quá trình xử lý. Nó cho phép thực hiện thêm các dịch vụ xử lý cần thiết cho mỗi quá trình xử lý một yêu cầu. Ví dụ, bộ lọc chặn Servlet thực hiện việc xử lý mọi yêu cầu của người sử dụng tới Web site. Servlet này cung cấp một cơ chế quản lý quyền truy nhập tập trung.

• Bộ tr ợ giúp vùng nhìn: Các bộ trợ giúp vùng nhìn giúp phân chia giữa chức năng hiển thị dữ liệu và truy nhập dữ liệu, giúp thay đổi cấu trúc của vùng

- 80-

nhìn làm nó trở nên đơn giản hơn. Chức năng hiến thị thực hiện việc định dạng dừ liệu cho việc biểu diễn trên các trang Web. Chức năng truy nhập thực hiện việc lấy dữ liệu. Bộ trợ giúp vùng nhìn thườne được cài đặt bằng các thẻ JSP, còn chức năng truy nhập dữ liệu thường được cài đặt bằng các thành phần JavaBean.

• Vùng nhìn đa hợp:Khuôn mẫu này giúp việc biểu diễn bàng các vùng nhìn dễ quản lý hơn bằng cách tạo các mẫu cho các đối tượng chung trên các trang Web. Thông thường, các trang Web ngoài các thành phần độna còn có một sổ thành phần tĩnh như đầu trang, cuối trang, nền, ... Các thành phần động thay đổi theo từng trang Web, nhưng các thành phần tĩnh thì thường giống nhau cho mọi trang Web. Vùng nhìn đa hợp tạo mẫu chửa các thành phần chung này.

• Bộ điều khiển trước: Khuôn mẫu này sử dụng một bộ điều khiền trung tâm quản lý mọi yêu cầu của người sử dụng. Bộ điều khiển trước nhận mọi yêu cầu từ người sử dụng, thực hiện việc chuyến các yêu cầu này cho bộ xử lý yêu cầu tương ứng và biểu diễn một cách thích hợp các đữ liệu trả lại cho người sử dụng.

• Đối tuọng giá trị: Giúp hỗ trợ việc trao đổi dữ liệu giữa các mức của ứng dụng để giảm bớt chi phí trao đổi qua mạng. Trong mỗi lời gọi hàm ở xa, đôi tượng giá trị được dùng để lấy một nhóm các dữ liệu liên quan với nhau và đối tượng này được đặt cục bộ ngay trên máy khách.

• Session bao ngoài: Đây là khuôn mầu được sử dụng rộng rãi nhất. Khuôn

mẫu này chỉ ra cách thức phân chia Logic nghiệp vụ trong các ứng dụng để giảm thiểu sự phụ thuộc giữa máy chủ và máy khách. Đồng thời đảm bảo rằng mọi chức năng của hệ thống được thực hiện bằng một lời gọi qua mạng và thực hiện trong một giao dịch.

• Thông điệp bao ngoài: Khuôn mẫu này tương tự như khuôn mẫu Session, nhưng dùng cho các chức năng được thực hiện không đồng bộ

• Lệnh: Khuôn mẫu này thường trái ngược với khuôn mẫu Session Bao Ngoài. Khuôn mẫu này thực hiện công việc hoàn toàn tương tự như Session Bao Ngoài. Nhưng thay vì dùng các Session Bean, khuôn mẫu sử dụng các thành phần Java thông thường. Việc sử dụng các thành phần Java thông thườnR này giúp máy khác hoàn toàn được tách biệt với công nghệ EJB thường được sử dụng để triển khai phần logic của ứng dụng.

• Đối tu'O'ng trao đối d ữ liệu: Thay vì việc thực hiện các trao đổi dữ liệu trực tiếp từ các thành phần Entity Bean, khuôn mẫu này sử dụng các thành phần riêng biệt giúp thực hiện việc tạo và trao đổi dừ liệu. Các thành phần này có thể được xây dựng bàng Session Bean hoặc các thành phần Java thông thường. Việc này giúp tách biệt giữa chức năng tạo và trao đổi dữ liệu khỏi

Một phần của tài liệu Phát triển ứng dụng phần mềm trên máy chủ dựa trên công nghệ Java (Trang 73)