Kiến trúc 1 và 2 JSP (model 1 & 2architecture) - phần 1 ppt

31 486 0
Kiến trúc 1 và 2 JSP (model 1 & 2architecture) - phần 1 ppt

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Phần I: JSP TECHNOLOGY Chương I: CĂN BẢN VỀ JSP JavaServer Pages (JSP) kỹ thuật server-side thực hành động client JSP cho phép tách thành phần động trang khỏi thành phần tĩnh HTML Rất đơn giản, cần viết tài liệu HTML bình thường sau bao quanh mã thành phần động tag đặc biệt, hầu hết tag bắt đầu với Ví dụ, phần trang JSP, có kết trả “Thanks for reading jsp book.” với URL http://www.jsp.com/thank.jsp?title=jsp Thanks for reading book Kỹ thuật JSP thành phần đại gia đình Java; sử dùng ngơn ngữ kịch dựa vào ngơn ngữ lập trình Java, trang JSP biên dịch thành servlets Từ nhận biết được, JSP khơng phụ thuộc (platform) Nó đáp ứng khuynh hướng Sun MicroSystem “write one, run anywhere” Các trang JSP gọi thành phần JavaBeans, Enterprise JavaBeans (EJB) custom tags để thực xử lý server Và thế, kỹ thuật JSP thành phần chủ chốt kiến trúc khả chuyển Java cho ứng dụng dựa vào Web Như biết, JSPs biên dịch thành servlets JSP thay servlet lý sau: - Một số tác vụ giải tốt servlet Ví dụ, ứng dụng xuất liệu nhị phân xác định nơi gởi trở lại cho người dùng (bằng cách dùng response.sendRedirect) dùng servlet tốt - Một số tác vụ khác lại giải tốt JSP tình mà cấu trúc tảng trang HTML cố định giá trị lại thay đổi - Còn tác vụ lại cần kết hợp servlet JSP Ví dụ, yêu cầu gốc trả lời servlet mà thực công việc, lưu trữ kết Beans điều phối yêu cầu đến trang JSP hiển thị Cả ba định hướng có chổ đứng Chẳng có định hướng hổ trợ đầy đủ cho ứng dụng Trước vào chi tiết công nghệ JSP, chúng tơi có vài so sánh cơng nghệ sử dụng ứng dụng với công nghệ khác I Một số so sánh công nghệ sử dụng với công nghệ khác? MySQL Server MySQL hệ quản trị sở liệu quan hệ Cơ sở liệu tập liệu có cấu trúc lưu trữ bảng riêng biệt, bảng lưu ba files với tên sở liệu tên thư mục chứa files SQL viết tắt từ Structured Query Language, ngôn ngữ chuẩn phổ biến để truy cập sở liệu Sau số ưu nhược điểm MySQL với hệ quản trị sở liệu khác: a) Ưu diểm - Chạy nhiều khác Unix, Windows, MacOS, … - MySQL hệ quản trị nhanh, nhỏ gọn Các script files chạy số hệ quản trị khác MS SQL Server, Oracle - Theo số web site thống kê, việc thực lệnh insert, update, delete nhanh hệ quản trị - Miễn phí mã nguồn mở (open source code) b) Khuyết điểm - Chưa hổ trợ số chuẩn ANSI SQL92 không cho câu select lồng nhau, select into table, khoá ngoại, triggers, stored procedures,… - Khơng có mơi trường đồ hoạ So sánh JSP với công nghệ khác a) JSP với ASP ASP công nghệ tương đương từ Microsoft JSP có ba lợi so với ASP - Phần động viết Java, ngơn ngữ script VBScript, JavaScript Vì mạnh mẽ tốt ứng dụng phức tạp cần thành phần sử dụng lại - JSP chạy nhiều hệ điều hành web servers khác với IIS Microsoft (cần có plugins từ Webphere, JRun, ) - Hổ trợ mở rộng tag với custom tag b) JSP với PHP Lợi điểm JSP với PHP với ASP JSP viết Java mà biết với API mở rộng cho mạng, truy cập sở liệu, đối tượng phân tán, … với PHP đòi hỏi phải học ngôn ngữ Tầm quan trọng XML với XSLT a) XML XML tập SGML, kết hợp tính linh động sức mạnh SGML với số tính hữu ích HTML Vì XML tập SGML nên tương thích với hệ thống dựa vào SGML có XML lực đẩy cho nghi thức internet phần mềm để dễ dàng xử lý truyền liệu Ở nói XML tập SGML HTML cài đặt SGML, mơ hình sau diễn tả mối quan hệ ngôn ngữ siêu ngôn ngữ: CDF : Channel Difinition Format – cho phép tác giả Web sites cho phép người đăng ký biết Web site thay đổi, CDF giới thiệu IE4 làm việc với IE Microsoft SMIL : Synchronized Multimedia Integration Language – sử dụng để đồng hóa dịng liệu đa truyền thơng truyền qua internet CML : Chemical Markup Language – mơ tả cơng thức hóa học MML: Mathematical Markup language- mơ tả phương trình, biểu thức tốn học Tính tự mơ tả liệu XML : tags mô tả vấn đề, đối tượng gần gủi với giới thực Chúng ta thấy rõ với hai ví dụ sau, ví dụ minh họa nên cịn thiếu nhiều thuộc tính giới thực : - XML có mối quan hệ chặt chẽ với JSP, đặt tả JSP hổ trợ cú pháp XML, trộn lẫn mã chúng với dễ dàng JSP với HTML dùng JSP tự động phát sinh trang XML - Hiện có nhiều sản phẩm quản trị sở liệu mà sản phẩm có đặc tính riêng nó, sở liệu khác cần chuyển đổi liệu khơng tương thích Vì người làm công việc cần phải biết nhiều sản phẩm quản trị sở liệu khác Do XML định dạng chuẩn mà hệ quản trị cần hổ trợ Hiện có nhiều hệ quản trị lớn hổ trợ XML MS SQL Server, Oracle, … b) XSLT Extensible Stylesheet Language Transformation (XSLT) ngôn ngữ tách từ ngôn ngữ XSL, “XSLT ngôn ngữ dùng để chuyển đổi XML document thành XML document khác” Nó viết XML, điều có nghĩa chuyển đổi XSLT trình bày well-formed XML document XSLT đóng vai trị quan trọng hướng phát triển “phát sinh ngôn ngữ markup hướng người dùng” II JSP scripting elements Các scripting elements JSP cho phép chèn mã vào servlet mà phát sinh từ trang JSP Có ba dạng sau: - Biểu thức có dạng , định giá trị chèn vào luồng xuất servlet - Scriptlet có dạng , chèn vào phương thức _jspService servlet (được gọi service) - Khai báo có dạng , chèn vào thân lớp servlet, field lớp thông thường Template text Trong nhiều trường hợp, phần lớn trang JSP bao gồm HTML tĩnh, biết template text Có hai ngoại lệ phụ cho quy tắc “template text chuyển thẳng sang HTML tĩnh” Đầu tiên, muốn có Java code Java code Java code Các biến định nghĩa sẵn JSP Để đơn giản hoá mã biểu thức hay scriptlets JSP, người ta cung cấp cho chín đối tượng định nghĩa trước, có người cịn gọi đối tượng ngầm định Do khai báo JSP nằm phương thức _jspService (được gọi service) nên đối tượng không cho phép khai báo truy cập vào request Biến có kiểu javax.servlet.http.HttpServletRequest, có phạm vi yêu cầu (request) Nó cho phép truy cập vào tham số request loại request (GET, POST, …) incoming HTTP header (cookies) response Có kiểu javax.servlet.http.HttpServletResponse, có phạm vi tồn trang (page) Chú ý luồng xuất thường làm vật đệm việc gán mã tình trạng HTTP response header hợp lý JSP, điều khơng phép servlet có luồng xuất gởi đến client out Có kiểu javax.servlet.jsp.JspWriter phạm vi trang (page) Dùng để gởi thông xuất đến client Đối tượng out dùng thường xuyên scriptlets, biểu thức tự động đưa vào luồng xuất nên cần tham chiếu đến đối tượng session Có phạm vi phiên truyền (session) kiểu tương ứng javax.servlet.http.HttpSession Gọi phiên truyền tạo tự động biến cịn kết nối chẳng có tham chiếu incoming session Một ngoại lệ sử dụng thuộc tính session page directive để tắc phiên truyền, mà lại cố tham chiếu đến biến session gây lỗi vào lúc trang JSP dịch thành servlet application Biến có kiểu javax.servlet.ServletContext, có phạm vi tồn ứng dụng (application) ServletContext lấy từ đối tượng cấu hình servlet getServletConfig().getContext() Các trang JSP lưu trữ liệu persistent đối tượng ServletContext tốt biến thể ServletContext có phương thức setAttribute setAttribute mà cho phép lưu trữ liệu config Biến có phạm vi trang (page) có kiểu tương ứng javax.servlet.ServletConfig pageContext Biến có kiểu javax.servlet.jsp.PageContext có phạm vi trang (page) pageContext cho phép điểm truy cập tới nhiều thuộc tính trang cung cấp nơi thuận tiện để lưu trữ liệu dùng chung Biến pageContext lưu trữ giá trị javax.servlet.jsp.PageContext với trang hành Có thể xem chi tiết chương II JavaBeans page Biến đồng nghĩa với this điều khơng hữu ích ngơn ngữ lập trình Java, có kiểu java.lang.Object có phạm vi trang (page) exception Trong trang lỗi, truy cập vào đối tượng exception Biến có kiểu java.lang.Throwable phạm vị trang (page) Biểu thức JSP Biểu thức JSP dùng để chèn giá trị trực tiếp vào luồng xuất Nó có dạng sau: Biểu thức định trị, chuyển thành chuổi, chèn vào trang Sự định trị diễn thời gian runtime (khi trang yêu cầu) có đầy đủ quyền truy cập thơng tin u cầu Ví dụ sau mô tả ngày/giờ mà trang yêu cầu: Current time: Trong Java câu lệnh có dấu ‘;’ kết thúc dịng Tại biểu thức JSP lại khơng có dấu ‘;’? Vì biểu thức đưa vào luồng xuất chẳng hạn PrintWriter Với ví dụ chuyển vào servlet sau: PrintWriter out = response.getWriter(); out.println(“Current time:” + new java.util.Date()); a) Biểu thức giá trị elements khác Biểu thức sử dụng thuộc tính elements khác Giá trị từ biểu thức tính vào thời gian yêu cầu (request time) Các elements cho phép sử dụng biểu thức thuộc tính chúng là: Tên Element Tên thuộc tính jsp:setProperty jsp:include page name value jsp:forward page jsp:param b) value Ví dụ expression.jsp Đây ví dụ hồn chỉnh JSP Nó hiển thị thời gian thời, tên máy, file truy cập Code 1: expression.jsp JSP Expressions autoFlush Xác định liệu luồng xuất có vùng đệm tự động flush (giá trị “true” mật định) vùng đệm đầy hay tung ngoại lệ vùng đệm tràn (“false”) Chú ý không hợp lý đặt autoFlush=“false” buffer=“none” isThreadSafe Xác định mức độ an tồn tiểu trình (thread) cài đặt trang (với giao tiếp SingleThreadModel), “true” giá trị mật định info Định nghĩa chuỗi truy xuất từ servlet phương thức getServletInfo() errorPage Thuộc tính xác định trang JSP nên ngoại lệ tung không bắt ngoại lệ trang hành Ngoại lệ tung có sẵn biến ngầm định exception isErrorPage Xác định trang JSP thời hoạt động trang lỗi cho trang JSP khác Giá trị “false” mật định cho thuộc tính contentType Thuộc tính gán Content-Type cho response header, mơ tả kiểu MIME tài liệu gởi đến client Thuộc tính contentType có hai dạng sau: Một số kiểu MIME-Type thường dùng: “text/html”, “text/xml”, “text/plain”, “image/gif”, “image/jpeg” pageEncoding Định nghĩa mã hoá ký tự cho trang JSP (character encoding), thuộc tính hổ trợ cho mã Unicode Latin-1, có giá trị mật định “ISO-8859-1” Code 4: pagedirective.jsp The page Directive The page Directive Ví dụ 4: pagedirective.jsp (tiếp theo) This page was accessed at with a userID cookie of The include directive Chúng ta sử dụng include directive để đưa file vào tài liệu JSP vào lúc tài liệu dịch thành servlet (mà thường vào lần truy cập vào trang này) Có cú pháp sau: Thật JSP chia làm hai nhánh để include file vào tài liệu File include chèn vào trang vào lúc biên dịch, Cịn nhánh cịn lại chèn vào thời gian yêu cầu (request) với element jsp:include trình bày mục IV Các action chuẩn File include vào chứa HTML tĩnh mà cịn chứa mã JSP động Đặc tính cho phép tạo định hướng, phần thông tin cần tương tác, đếm số trang, riêng file có nhiều trang sử dụng lại chúng Nếu file include thay đổi tất JSP files sử dụng cần phải cập nhật lại Ví dụ include directive File đoạn trang chứa thông tin tương tác cần thiết cho file thứ hai dùng lại include directive Code 5: contact.jsp This page © 2000 my-company.com This page has been accessed times since server reboot It was last accessed from at Code 6: includedirective.jsp Code 6: includedirective.jsp The include Directive Some Random Page

Information about our products and services.

Le, Le, Le.

Giang, Giang, Giang.

The taglib directive Directive định nghĩa thư viện tag tiếp đầu ngữ cho custom tag sử dụng trang JSP Có cú pháp sau: taglib directive trình bày chi tiết chương III IV Các action chuẩn Actions chẳng qua elements định nghĩa đặc tả JSP ln ln có sẵn JSP file mà không cần import vào thứ chúng có cú pháp XML Có chín actions chuẩn: jsp:include, jsp:useBean, jsp:setProperty, jsp:getProperty, jsp:plugin, jsp:forward, jsp:fallback, jsp:params, jsp:param giới thiệu mục Action chèn vào files thời gian request Với include directive cho phép thêm vào tài liệu chứa mã JSP vào nhiều trang khác lại có vấn đề địi hỏi phải cập nhật lại ngày sữa đổi trang file include thay đổi Để loại bỏ vấn đề đặt tả JSP cung cấp cho action để include file vào thời gian yêu cầu (request) Mặc khác, trang biên dịch thành servlet vào thời gian yêu cầu file include chứa mã JSP Cú pháp action là: Ví dụ sau sử dụng jsp:include action để include bốn file html, ví dụ thị thông tin web sites nỗi tiếng Code 7: includerequest.jsp What's New at JspNews.com

Here is a summary of our four most recent news stories:

Code 8: item1.html Bill Gates acts humble. In a startling and unexpected development, Microsoft big wig Bill Gates put on an open act of humility yesterday More details Code 9: item2.html Scott McNealy acts serious. In an unexpected twist, wisecracking Sun head Scott McNealy was sober and subdued at yesterday's meeting More details Code 10: item3.html Larry Ellison acts conciliatory. Catching his competitors off guard yesterday, Oracle prez Larry Ellison referred to his rivals in friendly and respectful terms More details Code 11: item4.html Sportscaster uses "literally" correctly. In an apparent slip of the tongue, a popular television commentator was heard to use the word "literally" when he did not mean "figuratively." More details Action chèn vào Applets cho Java Plug-In Với JSP, không cần có cú pháp đặc biệt để include vào applet; dùng APPLET tag HTML bình thường Tuy nhiên, applet phải sử dụng từ JDK 1.1 trở xuống hai trình duyệt phổ biết Netscape 4.x Internet Explorer 5.x chưa hổ trợ JDK 1.2 Do applet có số giới hạn sau: - Để sử dụng Swing, phải gởi Swing files qua mạng Tiến trình tốn nhiều thời gian thất bại Internet Explorer Netscape 3.x (chỉ hổ trợ JDK 1.02) mà Swing lại phụ thuộc vào JDK 1.1 - Chúng ta dùng Java 2D - Chúng ta khơng thể dùng gói collection (tập hợp) Java - Mã chạy chậm hầu hết trình biên dịch cho Java cải tiến đáng kể so với trình biên dịch từ JDK 1.1 trở xuống Hơn nữa, phiên trình duyệt có số mâu thuẫn cách thức mà chúng hổ trợ AWT component khác nhau, làm cho việc thử nghiệm điều phối giao tiếp người dùng trở nên phức tạp nặng nề Để giải vấn đề này, Sun phát triển Java Plug-In cho Netscape Internet Explorer mà cho phép sử dụng Java platform cho applet nhiều trình duyệt khác Tuy nhiên, lại thật không may mắn APPLET tag bình thường khơng làm việc với Plug-In trình duyệt thiết kế riêng sử dụng máy ảo (Virtual Machine) có sẳn chúng chúng gặp APPLET Thay thế, phải sử dụng OBJECT tag IE EMBED tag Netscape Hơn khơng biết loại trình duyệt truy cập vào trang nên phải include OBJECT lẫn EMBED (đặt EMBED phần COMMENT OBJECT) xác định loại trình duyệt vào thời gian yêu cầu để dùng tag cho loại trình duyệt Q trình hiển nhiên nhàm chán thời gian Action jsp:plugin dẫn server xây dựng tag thích hợp cho applet mà sử dụng Plug-In a) jsp:plugin action Phương cách đơn giản để sử dụng jsp:plugin cung cấp cho bốn thuộc tính: type, code, width, height Chúng ta định giá trị “applet” cho thuộc tính type ba thuộc tính cịn lại sử dụng giống APPLET tag bình thường Với ngoại lệ action có cú pháp XML nên thuộc tính phải theo qui ước XML Ví dụ với APPLET tag HTML sử dụng jsp:plugin action sau: Ngồi bốn thuộc tính jsp:plugin cịn có thuộc tính sau hầu hết giống (nhưng tất cả) thuộc tính APPLET tag codebase, align, archive, hspace, name, vspace, title Giống APPLET tag jreversion Xác định số phiên Java Runtime Environment, giá trị nhận “1.1”, “1.2” nspluginurl URL cho Netscape mà download Plug-In Giá trị mật định hướng người dùng đến web site Sun, với intranet muốn dẫn người dùng đến cục iepluginurl URL cho Internet Explorer mà download Plug-In b) jsp:param jsp:params action jsp:param dùng actions khác như: jsp:include, jsp:forward, jsp:plugin Action dùng để cung cấp cặp tên giá trị (name/value) cho actions Cụ thể với jsp:plugin, action định rõ tên giá trị mà truy cập từ applet getParameter Tất jsp:param actions phải nằm jsp:params action Ví dụ: Code 12: Sử dụng Applet JSP sử dụng sau: c) jsp:fallback action jsp:fallback cung cấp văn thay trình duyệt khơng hổ trợ OBJECT hay EMDEB Chúng ta sử dụng action giống dùng văn thay đặt APPLET tag Ví dụ thay Code 13: Sử dụng jspfallback Error: this example requires Java với Error: this example requires Java Actions dùng để forward sử dụng Components a) Chuyển request từ trang JSP Tình chuyển request phổ biến request đó, đầu tiên, bắt nguốn từ servlet servlet chuyển request đến trang JSP Lý để servlet thường xử lý request gốc để kiểm tra tham số request thiết lập Beans nên đòi hỏi nhiều cơng việc lập trình thuận tiện để lập trình servlet tài liệu JSP Nguyên nhân mà trang đích thường lại tài liệu JSP JSP đơn giản tiến trình tạo tài liệu HTML Tuy nhiên điều định hướng thường dùng khơng có nghĩa có cách để thực Do để đơn giản dễ sử dụng việc nhúng mã RequestDispatcher scriptlet sử dụng jsp:forward action Ví dụ: Code 14: Sử dụng jspforward 0.5) { dest = “page1.jsp”; } else { dest = “page2.jsp”; } %> Action cho phép điều phối request hành vào lúc runtime đến tài nguyên tĩnh, trang JSP hay lớp servlet ứng dụng b) Sử dụng component JSP Chúng ta sử dụng actions sau để sử dụng lại component (Beans) JSP: jsp:useBean, jsp:setProperty, jsp:getProperty Các action trình bày chương II Chương II : JSP JAVABEANS I Khái niệm quy ước Bean Khái niệm Mơ hình thành phần (component) JSP tập trung vào component phần mềm Java gọi Bean Định nghĩa thức JavaSoft Bean: “JavaBean component phần mềm dùng lại được, thực trực quan mơi trường phát triển tích hợp IDE (Integrated Development Environment).” JavaBean API: tuân theo quy ước xác định JavaBean API, cho phép JSP container tương tác với Beans mức lập trình JSP container thực chẳng hiểu Bean thực hoạt động Đối với JSP, quan tân đến khía cạnh API dấu hiệu cho hàm tạo Bean phương thức truy cập thuộc tính xử lý Giống lớp Java nào, thể Bean đơn đối tượng Java Chúng ta thường có lựa chọn tham chiếu tới Beans phương thức chúng trực tiếp qua mã Java lớp khác thơng qua scripting element trang JSP Vì scripting element theo quy ước Bean nên làm việc với Beans mà khơng cần phải viết đoạn mã Java Bean container JSP container, cung cấp truy cập dễ dàng vào Beans thuộc tính chúng Các quy ước Bean Khi định nghĩa Bean phải tuân theo quy tắc sau: ... tự cho trang JSP (character encoding), thuộc tính hổ trợ cho mã Unicode Latin -1 , có giá trị mật định “ISO-8859 -1 ? ?? Code 4: pagedirective .jsp

Ngày đăng: 09/08/2014, 08:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan