Các bước phát triển và triển khai ứng dụng Web 4... 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á
Trang 1Bài 1 Giới thiệu về
Servlet & JSP
Trang 2Nộ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
Trang 3Web server và client
Trang 4Web server và client
Trang 5Server làm những gì?
Trang 6Client làm những gì?
Trang 7HTML, HTTP protocol
Trang 8HTTP 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
Trang 9HTTP Protocol
Request:
POST hay GET
Trang request (url)
Response
Mã trạng thái
Context type: text, pic
Trang 10Phương thức GET và POST
Trang 11URL
Trang 12Website vs web application
Trang 132 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
Trang 14Web 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
Trang 15Web 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 )
Trang 16Web Request Handling
Trang 173 Các bước phát triển và triển khai ứng dụng Web
Trang 18Cá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
Trang 19Development 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
Trang 20Ví dụ 1: cấu trúc cây project ch1
WEB-INF
web.xml Ch1Servlet
.java
Trang 21PrintWriter out = response.getWriter();
java.util.Date today = new java.util.Date();
out.println("<html> " + "<body> "
+ "<h1 align=center>Servlet</h1>"
+ "<br>" + today + "</body>" + "</html>" );
}
Trang 22<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>
Trang 23Biên dịch & triển khai trong Netbeans
Trang 24Request từ client
Trên trình duyệt gõ:
http://localhost:8084/ch1/Serv
Trang 25Cấu trúc triển khai trong Tomcat
Trang 26Request từ client
Run Tomcat
Trên trình duyệt gõ
http://localhost:8080/ch1/Serv
Trang 27</html>
Ý nghĩa của file web.xml?
Trang 28<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>
Trang 29Ví 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
Trang 30http://localhost:8080/hello2/greeting
Trang 32Cấu trúc cây hello2
Trang 33Cấu trúc sau khi biên dịch
Trang 34String username = request.getParameter("username");
if ((username != null) && (username.length() > 0)) {
RequestDispatcher dispatcher =
getServletContext() getRequestDispatcher("/response");
if (dispatcher != null) {
dispatcher.include(request, response);
}
}
Trang 35public 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>");
}
}
Trang 374 Web Application Archive
(*.WAR)
Trang 39File *.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
Trang 40Cấu trúc thư mục của 1 file *.WAR
Trang 41Cấu trúc thư mục của 1 file *.WAR
Trang 42Tạ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
Trang 43Ví dụ: Tạo file hello2.war với lệnh “asant create-war”
Trang 44Ví 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%)
Trang 45Thư 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)
Trang 465 Cấu hình ứng dụng Web
Thông số cấu hình được đặc tả trong file
Descriptor)
Trang 47xmlns:xsi="http://www.w3.org/2001/XMLSchema-xsi:schemaLocation=http://java.sun.com/xml/n s/javaee
Trang 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)
Trang 506 Web Container
Trang 53Vai 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
Trang 54Thảo luận