Công nghệ Java Servlet và JavaServer Pages [trang JSP] là các công nghệ phía máy chủ đã thống trị thị trường công nghệ Java phía máy chủ; . Các nhà phát triển Java yêu thích những công nghệ này vì vô số lý do, bao gồm. các công nghệ này khá dễ học và chúng mang mô hình Viết một lần, Chạy mọi nơi cho các ứng dụng web. Quan trọng hơn, nếu được sử dụng hiệu quả bằng cách tuân theo các phương pháp hay nhất, các trang servlet và JSP sẽ giúp tách biệt phần trình bày khỏi nội dung. Các phương pháp hay nhất là các phương pháp đã được chứng minh để phát triển các ứng dụng web dựa trên servlet và JSP có chất lượng, có thể tái sử dụng và dễ bảo trì. Chẳng hạn, mã Java nhúng [tập lệnh] trong các phần của tài liệu HTML có thể dẫn đến các ứng dụng phức tạp, không hiệu quả và khó tái sử dụng, nâng cao và bảo trì. Thực tiễn tốt nhất có thể thay đổi tất cả điều đó
Trong bài viết này, tôi sẽ trình bày các phương pháp hay nhất quan trọng cho các trang servlet và JSP; . bài viết này
- Trình bày tổng quan về Java servlet và trang JavaServer [trang JSP]
- Cung cấp các gợi ý, mẹo và hướng dẫn để làm việc với các trang servlet và JSP
- Cung cấp các phương pháp hay nhất cho các trang servlet và JSP
Tổng quan về Servlet và các trang JSP
Tương tự như tập lệnh Common Gateway Interface [CGI], servlet hỗ trợ mô hình lập trình yêu cầu và phản hồi. Khi máy khách gửi yêu cầu đến máy chủ, máy chủ sẽ gửi yêu cầu đến servlet. Sau đó, servlet sẽ xây dựng một phản hồi mà máy chủ gửi lại cho máy khách. Tuy nhiên, không giống như các tập lệnh CGI, các servlet chạy trong cùng một quy trình như máy chủ HTTP
Khi một yêu cầu của khách hàng được thực hiện, phương thức service
được gọi và chuyển một đối tượng yêu cầu và phản hồi. Đầu tiên, servlet xác định xem yêu cầu là hoạt động GET
hay POST
. Sau đó, nó gọi một trong các phương thức sau. doGet
hoặc doPost
. Phương thức doGet
được gọi nếu yêu cầu là GET
và doPost
được gọi nếu yêu cầu là POST
. Cả doGet
và doPost
đều nhận yêu cầu [
4] và phản hồi [
5]Nói một cách đơn giản nhất, servlet là các lớp Java có thể tạo nội dung HTML động bằng cách sử dụng các câu lệnh
6. Tuy nhiên, điều quan trọng cần lưu ý về các servlet là chúng chạy trong một bộ chứa và các API cung cấp khả năng quản lý vòng đời của phiên và đối tượng. Do đó, khi bạn sử dụng servlet, bạn sẽ nhận được tất cả các lợi ích từ nền tảng Java, bao gồm hộp cát [bảo mật], API truy cập cơ sở dữ liệu qua JDBC và khả năng di động đa nền tảng của servletTrang máy chủ Java [JSP]
Công nghệ JSP - trừu tượng hóa các servlet ở mức cao hơn - là một đặc điểm kỹ thuật mở, sẵn có miễn phí do Sun Microsystems phát triển như một giải pháp thay thế cho công nghệ Trang máy chủ hoạt động [ASP] của Microsoft và là thành phần chính của Phiên bản Java 2 Enterprise [J2EE . Nhiều máy chủ ứng dụng có sẵn trên thị trường [chẳng hạn như BEA WebLogic, IBM WebSphere, Live JRun, Orion, v.v.] hỗ trợ công nghệ JSP
Các trang JSP hoạt động như thế nào?
Một trang JSP về cơ bản là một trang web với HTML truyền thống và các đoạn mã Java. Phần mở rộng tập tin của một trang JSP là. jsp chứ không phải. html hoặc. htm, cho máy chủ biết rằng trang này yêu cầu xử lý đặc biệt sẽ được thực hiện bằng tiện ích mở rộng máy chủ hoặc trình cắm
Khi một trang JSP được gọi, nó sẽ được biên dịch [bởi công cụ JSP] thành một Java servlet. Tại thời điểm này, servlet được xử lý bởi servlet engine, giống như bất kỳ servlet nào khác. Sau đó, công cụ servlet tải lớp servlet [sử dụng trình tải lớp] và thực thi nó để tạo HTML động để gửi tới trình duyệt, như thể hiện trong Hình 1. servlet tạo bất kỳ đối tượng cần thiết nào và ghi bất kỳ đối tượng nào dưới dạng chuỗi vào luồng đầu ra tới trình duyệt
Hình 1. Luồng yêu cầu/phản hồi gọi một trang JSP
Lần tiếp theo trang được yêu cầu, công cụ JSP sẽ thực thi servlet đã được tải trừ khi trang JSP đã thay đổi, trong trường hợp đó, nó sẽ tự động được biên dịch lại thành một servlet và được thực thi
Thực hành tốt nhất
Trong phần này, tôi trình bày các phương pháp hay nhất cho servlet và đặc biệt là các trang JSP. Việc nhấn mạnh vào các phương pháp hay nhất của JSP đơn giản là vì các trang JSP dường như được sử dụng rộng rãi hơn [có thể là do công nghệ JSP thúc đẩy việc tách phần trình bày khỏi nội dung]. Một thực tiễn tốt nhất kết hợp và tích hợp việc sử dụng các servlet và trang JSP là mẫu thiết kế Model View Controller [MVC], sẽ được thảo luận sau trong bài viết này
- Không lạm dụng mã Java trong các trang HTML. Đặt tất cả mã Java trực tiếp vào trang JSP là được đối với các ứng dụng rất đơn giản. Nhưng lạm dụng tính năng này dẫn đến mã spaghetti không dễ đọc và dễ hiểu. Một cách để giảm thiểu mã Java trong các trang HTML là viết các lớp Java riêng biệt để thực hiện các tính toán. Sau khi các lớp này được kiểm tra, các phiên bản có thể được tạo
- Chọn đúng cơ chế bao gồm. Dữ liệu tĩnh như đầu trang, chân trang và nội dung thanh điều hướng được lưu giữ tốt nhất trong các tệp riêng biệt và không được tạo lại động. Khi nội dung đó nằm trong các tệp riêng biệt, chúng có thể được đưa vào tất cả các trang bằng cách sử dụng một trong các cơ chế bao gồm sau
- Bao gồm chỉ thị.
7 - Bao gồm hành động.
8
- Bao gồm chỉ thị.
Cơ chế bao gồm đầu tiên bao gồm nội dung của tệp được chỉ định trong khi trang JSP đang được chuyển đổi thành một servlet [giai đoạn dịch] và bao gồm thứ hai bao gồm phản hồi được tạo sau khi trang được chỉ định được thực thi. Tôi khuyên bạn nên sử dụng lệnh bao gồm, nhanh về mặt hiệu suất, nếu tệp không thay đổi thường xuyên;
Một cơ chế bao gồm khác là thẻ hành động
9 được cung cấp bởi các trang JavaServer Thư viện thẻ tiêu chuẩn [JSTL]. Bạn có thể sử dụng thẻ này để đưa vào hoặc nhập nội dung từ các nguồn cục bộ và từ xa. Dưới đây là một số ví dụ
- thành phần tái sử dụng. Các ứng dụng khác nhau sẽ có thể sử dụng lại các thành phần
- Tách logic nghiệp vụ và logic trình bày. Bạn có thể thay đổi cách hiển thị dữ liệu mà không ảnh hưởng đến logic nghiệp vụ. Nói cách khác, các nhà thiết kế trang web có thể tập trung vào trình bày và các nhà phát triển Java có thể tập trung vào logic kinh doanh
- Bảo vệ tài sản trí tuệ của bạn bằng cách giữ an toàn cho mã nguồn
Nếu bạn sử dụng các thành phần Enterprise JavaBeans [EJB] với ứng dụng của mình, logic nghiệp vụ sẽ vẫn nằm trong các thành phần EJB cung cấp khả năng quản lý vòng đời, hỗ trợ giao dịch và quyền truy cập nhiều máy khách vào các đối tượng miền [Entity Beans]
Công nghệ JSP cho phép bạn giới thiệu các thẻ tùy chỉnh mới thông qua cơ sở thư viện thẻ. Là nhà phát triển Java, bạn có thể mở rộng các trang JSP bằng cách giới thiệu các thẻ tùy chỉnh có thể được triển khai và sử dụng theo cú pháp giống như HTML. Thẻ tùy chỉnh cũng cho phép bạn cung cấp cách đóng gói tốt hơn bằng cách cải thiện sự tách biệt giữa logic nghiệp vụ và logic trình bày. Ngoài ra, chúng còn cung cấp phương tiện tùy chỉnh bản trình bày mà điều này không thể thực hiện dễ dàng với JSTL
Một số lợi ích của thẻ tùy chỉnh là
- Chúng có thể loại bỏ scriptlet trong các ứng dụng JSP của bạn. Bất kỳ tham số cần thiết nào cho thẻ đều có thể được chuyển dưới dạng thuộc tính hoặc nội dung cơ thể và do đó không cần mã Java để khởi tạo hoặc đặt thuộc tính thành phần
- Chúng có cú pháp đơn giản hơn. Tập lệnh được viết bằng mã Java, nhưng các thẻ tùy chỉnh có thể được sử dụng theo cú pháp giống như HTML
- Chúng có thể cải thiện năng suất của các nhà phát triển nội dung không phải là lập trình viên, bằng cách cho phép họ thực hiện các tác vụ không thể thực hiện được bằng HTML
- Chúng có thể tái sử dụng. Họ tiết kiệm thời gian phát triển và thử nghiệm. Tập lệnh không thể tái sử dụng, trừ khi bạn gọi cắt và dán là "tái sử dụng. "
Tóm lại, bạn có thể sử dụng các thẻ tùy chỉnh để hoàn thành các tác vụ phức tạp giống như cách bạn sử dụng HTML để tạo bản trình bày
Các nguyên tắc lập trình sau đây rất hữu ích khi viết thư viện thẻ tùy chỉnh
- Giữ nó đơn giản. Nếu một thẻ yêu cầu nhiều thuộc tính, hãy thử chia nó thành nhiều thẻ
- Làm cho nó có thể sử dụng được. Tham khảo ý kiến của người dùng thẻ [nhà phát triển HTML] để đạt được mức độ khả dụng cao
- Không phát minh ra ngôn ngữ lập trình trong các trang JSP. Không phát triển các thẻ tùy chỉnh cho phép người dùng viết các chương trình rõ ràng
- Cố gắng không phát minh lại bánh xe. Có sẵn một số thư viện thẻ JSP, chẳng hạn như Dự án Taglibs Jakarta. Kiểm tra xem những gì bạn muốn đã có sẵn chưa
In JSP 1.x, a page author must use an expression to access the value of a system, as in the following example:
hoặc giá trị của một thành phần JavaBeans tùy chỉnh
0Ngôn ngữ biểu thức cho phép tác giả trang truy cập một đối tượng bằng cú pháp đơn giản hóa. Ví dụ: để truy cập một biến đơn giản, bạn có thể sử dụng một cái gì đó như
1Và để truy cập thuộc tính JavaBeans lồng nhau, bạn sẽ sử dụng một cái gì đó như
________số 8_______Nếu bạn đã từng làm việc với JavaScript, bạn sẽ cảm thấy quen thuộc vì EL mượn cú pháp JavaScript để truy cập dữ liệu có cấu trúc
2, cung cấp một cơ chế đơn giản và thuận tiện để lưu trữ thông tin về người dùng và sử dụng cookie để xác định người dùng. Sử dụng các phiên để lưu trữ thông tin tạm thời--vì vậy ngay cả khi nó bị mất, bạn vẫn có thể ngủ vào ban đêm. [Dữ liệu phiên bị mất khi phiên hết hạn hoặc khi khách hàng thay đổi trình duyệt. ] Nếu bạn muốn lưu trữ thông tin liên tục, hãy sử dụng cơ sở dữ liệu, an toàn hơn nhiều và di động trên các trình duyệt
3 của JDBC làm đối tượng bộ đệm. Điều này được liên kết chặt chẽ với một kết nối xung đột với tổng hợp kết nối. Sao chép dữ liệu từ một
3 vào một bean dành riêng cho ứng dụng, chẳng hạn như
5, hoặc của JDBC's
6Tích hợp Servlet và trang JSP
Đặc tả JSP trình bày hai cách tiếp cận để xây dựng các ứng dụng web sử dụng các trang JSP. Kiến trúc JSP Model 1 và Model 2. Hai mô hình này khác nhau ở vị trí diễn ra quá trình xử lý. Trong kiến trúc Mô hình 1, như thể hiện trong Hình 2, trang JSP chịu trách nhiệm xử lý các yêu cầu và gửi trả lời lại cho các máy khách
Hình 2. Kiến trúc JSP Model 1
Kiến trúc Model 2, như thể hiện trong Hình 3, tích hợp việc sử dụng cả servlet và trang JSP. Trong chế độ này, các trang JSP được sử dụng cho lớp trình bày và các servlet để xử lý các tác vụ. servlet hoạt động như một bộ điều khiển chịu trách nhiệm xử lý các yêu cầu và tạo bất kỳ bean nào cần thiết cho trang JSP. Bộ điều khiển cũng chịu trách nhiệm quyết định trang JSP nào sẽ chuyển tiếp yêu cầu. Trang JSP truy xuất các đối tượng được tạo bởi servlet và trích xuất nội dung động để chèn vào trong một mẫu
Hình 3. Kiến trúc JSP Model 2
Mô hình này thúc đẩy việc sử dụng mẫu thiết kế kiểu kiến trúc Model View Controller [MVC]. Lưu ý rằng một số khung đã tồn tại triển khai mẫu thiết kế hữu ích này và bản trình bày thực sự tách biệt khỏi nội dung. Apache Struts là một framework chính thức cho MVC. Khung này được sử dụng tốt nhất cho các ứng dụng phức tạp trong đó một yêu cầu hoặc gửi biểu mẫu có thể dẫn đến các kết quả trông khác biệt đáng kể
Phần kết luận
Các phương pháp hay nhất -- là giải pháp đã được chứng minh cho các sự cố lặp lại -- dẫn đến các ứng dụng có chất lượng cao hơn. Bài viết này đã trình bày một số nguyên tắc và thực tiễn tốt nhất để tuân theo khi phát triển các ứng dụng web dựa trên servlet và JSP
Theo dõi các công nghệ servlet và JSP, bởi vì một số điều thú vị đang được thực hiện. Ví dụ: JavaServer Faces [JFC], một nỗ lực của Quy trình cộng đồng Java nhằm xác định khung ứng dụng web tiêu chuẩn, sẽ tích hợp độc đáo với Apache Struts
Để biết thêm thông tin
- mèo con
- servlet
- Trang máy chủ Java
- Doanh nghiệp BluePrints
- Thanh chống Apache
- Quy ước mã cho Công nghệ trang JavaServer Phiên bản 1. x Ngôn ngữ
- Khuôn mặt máy chủ Java [JSF]
Sự nhìn nhận
Đặc biệt cảm ơn Gregory Murray của Sun Microsystems, phản hồi của ông đã giúp tôi cải thiện bài viết này
Thông tin về các Tác giả
Qusay H. Mahmoud cung cấp dịch vụ tư vấn và đào tạo Java. Ông đã xuất bản hàng chục bài báo về Java và là tác giả của Lập trình phân tán với Java [Manning Publications, 1999] và Learning Wireless Java [O'Reilly, 2002]