Bài 1. Giới thiệu về Servlet & JSP

 1. Một số khái niệm  2. Giới thiệu về Servlet và JSP  3. Các bước phát triển và triển khai ứng dụng Web  4. File WAR (Web Application Archive)  5. Cấu hình ứng dụng web  6. Web container

pdf54 trang | Chia sẻ: lylyngoc | Lượt xem: 1890 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Bài 1. Giới thiệu về Servlet & JSP, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Bài 1. Giới thiệu về Servlet & JSP Nội dung  1. Một số khái niệm  2. Giới thiệu về Servlet và JSP  3. Các bước phát triển và triển khai ứng dụng Web  4. File WAR (Web Application Archive)  5. Cấu hình ứng dụng web  6. Web container 2 Web server và client  Số lượng: vô cùng lớn  Mục tiêu:  Xây dựng ứng dụng được truy cập trên toàn cầu 3 Web server và client 4 Server làm những gì? 5 Client làm những gì? 6 HTML, HTTP protocol 7 HTTP Protocol  Giao thức HTTP chạy trên TCP/IP  TCP: đảm bảo file được từ nút mạng này tới nút mạng khác nguyên vẹn  IP: chịu trách nhiệm định tuyến, dịch chuyển gói tin  Cấu trúc HTTP: chuỗi Request và Response  Browser: request  Server: response 8 HTTP Protocol 9  Request:  POST hay GET  Trang request (url)  Tham số  Response  Mã trạng thái  Context type: text, pic..  Nội dung Phương thức GET và POST GET POST Lịch sử, bookmark Tham số hiển thị trên URL, có thể bookmark Tham số không hiển thị trên URL, không thể bookmark Loại dữ liệu Chỉ kí tự ASCII Không giới hạn Giới hạn về độ dài Có, vì độ dài URL có giới hạn, thường 2048 kí tự Không giới hạn Sử dụng Không sử dụng khi gửi thông tin bí mật: password Sử dụng để gửi các thông tin bí mật: passowrd 10 GET: ?min=10000000&max=12000000 URL 11 Website vs web application 12 2. Giới thiệu về Servlet và JSP  Servlet và JSP: các web component  Cho phép tạo ra các nội dung động 13 Web Components & Container  Các web components chạy trên 1 Web container  Các web containers phổ biến: Tomcat và Resin  Web container cung cấp các dịch vụ hệ thống cho các Web components  Request dispatching, security, và quản lý vòng đời 14 Web Application & Components  Web Application là 1 gói triển khai, gồm:  Web components (Servlets và JSP)  Tài nguyên tĩnh như images  Helper classes (sử dụng bởi web components)  Thư viện Libraries  Deployment descriptor (web.xml file)  Web Application có thể được tổ chức thành  Phân cấp các thư mục và files (dạng chưa đóng gói - unpacked form) hoặc  *.WAR file: có fân cấp như trên (dạng đóng gói-packed form) 15 Web Request Handling 16 3. Các bước phát triển và triển khai ứng dụng Web 17 Các bước phát triển và triển khai ứng dụng Web  Viết code (và biên dịch) cho các Web component Servlet/JSP sử dụng trong web component  Tạo các tài nguyên tĩnh (Images, các trang HTML)  Viết file deployment descriptor (web.xml)  Build ứng dụng Web (Tạo file *.war hoặc thư mục dạng chưa đóng gói nhưng triển khai được)  Triển khai ứng dụng Web trên 1 Web container  Web clients có thể truy cập ứng dụng qua URL 18 Development Tree Structure  Tạo cấu trúc cây thư mục (Development Tree Structure) cho việc viết ứng dụng web  Thư mục gốc bao gồm:  src: Mã nguồn Java cho các servlets và các JavaBeans  web: các trang JSP, HTML, images  Có thể sử dụng IDE Netbeans để hỗ trợ 19 Ví dụ 1: cấu trúc cây project ch1  ch1  src  Ch1Servlet.java  web  WEB-INF  web.xml 20 ch1 websrc WEB-INF web.xml Ch1Servlet .java Ch1Servlet.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Ch1Servlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); java.util.Date today = new java.util.Date(); out.println(" " + " " + "Servlet" + "" + today + "" + "" ); } } 21 web.xml <web-app version="3.0" xmlns="" xmlns:xsi="" xsi:schemaLocation=" "> Chuong 1 Servlet Ch1Servlet Chuong 1 Servlet /Serv 22 Biên dịch & triển khai trong Netbeans  Biên dịch  Các file được biên dịch thành file .class 23 ch1 web dist WEB-INF web.xml ch1.war build classes Ch1Servlet .class Request từ client  Trên trình duyệt gõ: 24 Cấu trúc triển khai trong Tomcat 25 Request từ client  Run Tomcat  Trên trình duyệt gõ 26 Nhận xét  Việc chèn thẻ HTML trong câu lệnh println là dễ dàng?  Giải pháp: JSP <%=new java.util.Date() %>  Ý nghĩa của file web.xml? 27 web.xml <web-app version="3.0" xmlns="" xmlns:xsi="" xsi:schemaLocation=" "> Chuong 1 Servlet Ch1Servlet Chuong 1 Servlet /Serv 28 Ví dụ 2  Ví dụ hello2 trong tutorial của J2EE 1.4  Mục đích:  Tạo 2 servlet có liên kết với nhau  GreetingServlet chuyển yêu cầu tới ResponseServlet  Tài nguyên tĩnh  File đóng gói war  Hiểu hơn về file web.xml 29 30 31 Cấu trúc cây hello2  Hello2  src/servlets  GreetingServlet.java  ResponseServlet.java  web  WEB-INF  web.xml  duke.waving.gif  build.xml 32 Cấu trúc sau khi biên dịch  Hello2  src  web  build.xml  build  WEB-INF  classes  GreetingServlet.class  ResponseServlet.class  web.xml  duke.waving.gif 33 GreetingServlet String username = request.getParameter("username"); if ((username != null) && (username.length() > 0)) { RequestDispatcher dispatcher = getServletContext() .getRequestDispatcher("/response"); if (dispatcher != null) { dispatcher.include(request, response); } } 34 ResponseServlet public class ResponseServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); String username = request.getParameter("username"); if ((username != null) && (username.length() > 0)) { out.println("Hello, " + username + "!"); } } 35 web.xml GreetingServlet servlets.GreetingServlet ResponseServlet servlets.ResponseServlet GreetingServlet /greeting ResponseServlet /response 36 4. Web Application Archive (*.WAR) 37 Ứng dụng Web  Ứng dụng Web có thể được triển khai ở 2 dạng  Một file *.war  Một thư mục, cấu trúc giống file *.war file (thư mục build)  Sử dụng dạng file *.war khi muốn triển khai trên 1 remote machine 38 File *.WAR là gì?  Là gói triển khai được trên web container  Tương tự như file *.jar  Chứa tất cả thành phần cần thiết:  Web components (servlets hoặc JSP)  Các Class tiện ích  Nội dung tĩnh (HTML, image, …)  Các lớp phía Client (applets và các lớp tiện ích)  Có nội dung giống như thư mục build 39 Cấu trúc thư mục của 1 file *.WAR 40 Cấu trúc thư mục của 1 file *.WAR 41 Tạo 1 file *.WAR như thế nào?  3 cách khác nhau:  Sử dụng IDE (NetBeans)  Sử dụng công cụ ant  “asant create-war” (J2EE 1.4 tutorial)  Sử dụng lệnh “jar cvf .war .” khi ở trong thư mục build 42 Ví dụ: Tạo file hello2.war với lệnh “asant create-war” C:\j2eetutorial14\examples\web\hello2>asant create-war Buildfile: build.xml ... create-war: [echo] Creating the WAR.... [delete] Deleting: C:\j2eetutorial14\examples\web\hello2\assemble\war\hello2.war [delete] Deleting directory C:\j2eetutorial14\examples\web\hello2\assemble\war\WEB-INF [copy] Copying 1 file to C:\j2eetutorial14\examples\web\hello2\assemble\war\WEB-INF [copy] Copying 2 files to C:\j2eetutorial14\examples\web\hello2\assemble\war\WEB-INF\classes [war] Building war: C:\j2eetutorial14\examples\web\hello2\assemble\war\hello2.war [copy] Copying 1 file to C:\j2eetutorial14\examples\web\hello2 43 Ví dụ: Tạo file hello2.war sử dụng lệnh jar C:\j2eetutorial14\examples\web\hello2\build>jar cvf hello2.war . added manifest adding: duke.waving.gif(in = 1305) (out= 1295)(deflated 0%) adding: servlets/(in = 0) (out= 0)(stored 0%) adding: servlets/GreetingServlet.class(in = 1680) (out= 887)(deflated 47%) adding: servlets/ResponseServlet.class(in = 1090) (out= 572)(deflated 47%) C:\j2eetutorial14\examples\web\hello2\build>jar xvf hello2.war created: META-INF/ extracted: META-INF/MANIFEST.MF extracted: duke.waving.gif created: servlets/ extracted: servlets/GreetingServlet.class extracted: servlets/ResponseServlet.class 44 Thư mục WEB-INF  Chứa:  web.xml : Web application deployment descriptor  Các file JSP tag library descriptor  Classes : là thư mục chứa các lớp phía server: servlets, lớp tiện ích, các JavaBeans  lib : là thư mục chứa các file thư viện JAR (tag libraries, các thư viện tiện ích được gọi bởi các lớp phía server) 45 5. Cấu hình ứng dụng Web  Thông số cấu hình được đặc tả trong file web.xml (Web Applications Deployment Descriptor) 46 Prolog (web.xml)  Tất cả tài liệu XML cần có prolog <web-app xmlns="" xmlns:xsi=" instance" xsi:schemaLocation= s/javaee app_3_0.xsd version="3.0"> 47 Alias Paths (web.xml)  Khi 1 Servlet container nhận 1 request, nó cần biết Web component nào trong ứng dụng Web sẽ xử lý request này.  Thực hiện map URL path trong request tới 1 Web component  Alias Path có thể có 2 dạng  /alias-string (cho servlet) hoặc  /*.jsp (cho JSP) 48 web.xml GreetingServlet servlets.GreetingServlet ResponseServlet servlets.ResponseServlet GreetingServlet /greeting ResponseServlet /response 49 6. Web Container 50 51 52 Vai trò của Container  Hỗ trợ giao tiếp giữa servlet và web server  Quản lý vòng đời của các servlet: khởi tạo, gọi, hủy  Hỗ trợ đa tuyến  Cấu hình ứng dụng web dễ dàng qua web.xml  Hỗ trợ dịch các trang JSP 53 Thảo luận 54
Tài liệu liên quan