Bai1 gioi thieu_servlet_va_jsp_8952

  • 429 views
Uploaded on

Serlvet

Serlvet

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
429
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
13
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Bài 1. Giới thiệu về Servlet & JSP
  • 2. 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
  • 3. 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
  • 4. Web server và client 4
  • 5. Server làm những gì? 5
  • 6. Client làm những gì? 6
  • 7. HTML, HTTP protocol 7
  • 8. 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
  • 9. 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
  • 10. 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: http://phucanh.vn/category-2/laptops.html ?min=10000000&max=12000000
  • 11. URL 11
  • 12. Website vs web application 12
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. Web Request Handling 16
  • 17. 3. Các bước phát triển và triển khai ứng dụng Web 17
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. 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("<html> " + "<body> " + "<h1 align=center>Servlet</h1>" + "<br>" + today + "</body>" + "</html>" ); } } 21
  • 22. web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <servlet> <servlet-name>Chuong 1 Servlet</servlet-name> <servlet-class>Ch1Servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Chuong 1 Servlet</servlet-name> <url-pattern>/Serv</url-pattern> </servlet-mapping> </web-app> 22
  • 23. 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
  • 24. Request từ client  Trên trình duyệt gõ: http://localhost:8084/ch1/Serv 24
  • 25. Cấu trúc triển khai trong Tomcat 25
  • 26. Request từ client  Run Tomcat  Trên trình duyệt gõ http://localhost:8080/ch1/Serv 26
  • 27. 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 <html> <body> <%=new java.util.Date() %> </body> </html>  Ý nghĩa của file web.xml? 27
  • 28. web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <servlet> <servlet-name>Chuong 1 Servlet</servlet-name> <servlet-class>Ch1Servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Chuong 1 Servlet</servlet-name> <url-pattern>/Serv</url-pattern> </servlet-mapping> </web-app> 28
  • 29. 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. http://localhost:8080/hello2/greeting 30
  • 31. 31
  • 32. 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
  • 33. 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
  • 34. 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
  • 35. 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("<h2>Hello, " + username + "!</h2>"); } } 35
  • 36. web.xml <servlet> <servlet-name>GreetingServlet</servlet-name> <servlet-class>servlets.GreetingServlet</servlet-class> </servlet> <servlet> <servlet-name>ResponseServlet</servlet-name> <servlet-class>servlets.ResponseServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>GreetingServlet</servlet-name> <url-pattern>/greeting</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>ResponseServlet</servlet-name> <url-pattern>/response</url-pattern> </servlet-mapping> 36
  • 37. 4. Web Application Archive (*.WAR) 37
  • 38. Ứ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
  • 39. 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
  • 40. Cấu trúc thư mục của 1 file *.WAR 40
  • 41. Cấu trúc thư mục của 1 file *.WAR 41
  • 42. 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 <filename>.war .” khi ở trong thư mục build 42
  • 43. Ví dụ: Tạo file hello2.war với lệnh “asant create-war” C:j2eetutorial14exampleswebhello2>asant create-war Buildfile: build.xml ... create-war: [echo] Creating the WAR.... [delete] Deleting: C:j2eetutorial14exampleswebhello2assemblewarhello2.war [delete] Deleting directory C:j2eetutorial14exampleswebhello2assemblewarWEB-INF [copy] Copying 1 file to C:j2eetutorial14exampleswebhello2assemblewarWEB-INF [copy] Copying 2 files to C:j2eetutorial14exampleswebhello2assemblewarWEB-INFclasses [war] Building war: C:j2eetutorial14exampleswebhello2assemblewarhello2.war [copy] Copying 1 file to C:j2eetutorial14exampleswebhello2 43
  • 44. Ví dụ: Tạo file hello2.war sử dụng lệnh jar C:j2eetutorial14exampleswebhello2build>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:j2eetutorial14exampleswebhello2build>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
  • 45. 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
  • 46. 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
  • 47. Prolog (web.xml)  Tất cả tài liệu XML cần có prolog <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance" xsi:schemaLocation=http://java.sun.com/xml/n s/javaee http://java.sun.com/xml/ns/javaee/web- app_3_0.xsd version="3.0"> 47
  • 48. 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
  • 49. web.xml <servlet> <servlet-name>GreetingServlet</servlet-name> <servlet-class>servlets.GreetingServlet</servlet-class> </servlet> <servlet> <servlet-name>ResponseServlet</servlet-name> <servlet-class>servlets.ResponseServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>GreetingServlet</servlet-name> <url-pattern>/greeting</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>ResponseServlet</servlet-name> <url-pattern>/response</url-pattern> </servlet-mapping> 49
  • 50. 6. Web Container 50
  • 51. 51
  • 52. 52
  • 53. 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
  • 54. Thảo luận 54