Tải bản đầy đủ (.pdf) (45 trang)

Bài giảng lập trình ứng dụng mạng bài 6 GV võ tấn dũng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (416.02 KB, 45 trang )

TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THÔNG TIN TP.HCM

LẬP TRÌNH ỨNG DỤNG MẠNG

BÀI 6

GIẢNG VIÊN:

VÕ TẤN DŨNG
1

GV: Võ Tấn Dũng

SERVLET


PHẦN 1

2

GV: Võ Tấn Dũng

TỔNG QUAN
SERVLET


TỔNG QUAN SERVLET
Các vấn đề được trình bày trong phần này:
Giới thiệu Servlet (Servlet là gì?).
Luồng xử lý Servlet.
Các thư mục Web trong Tomcat server.


Chu trình sống của một Servlet.
Sáu bước để xây dựng và chạy một servlet.

3

GV: Võ Tấn Dũng








GIỚI THIỆU SERVLET

4

GV: Võ Tấn Dũng

• Servlet là một lớp Java được nạp tự động và chạy trên
những web server có hỗ trợ Java. Những server như thế
được gọi là Servlet Container (hay Java Server).
• Servlet tương tác với web client theo mô hình requestresponse dựa theo giao thức HTTP. Một số Servlet
Container cũng hỗ trợ cả giao thức HTTPS (HTTP over
SSL) dành cho các giao tác có tính bảo mật.
• Kiến trúc hoạt động:


LUỒNG XỬ LÝ SERVLET


5

GV: Võ Tấn Dũng

Luồng xử lý một servlet diễn ra qua các bước như sau:

Client yêu cầu một servlet, tên của servlet là một phần
của URL
(vd: />2. Web server nhận yêu cầu (request) và gửi nó tới
servlet engine, là nơi mà quản lý và tạo ra các thể hiện
của servlet.
3. Servlet engine sẽ gọi phương thức service (hoặc
doPost, doGet) của servlet để xử lý yêu cầu.
4. Servlet sẽ tiếp nhận yêu cầu cùng với các tham số, tài
nguyên khác, sau đó xử lý và tạo ra một kết quả trả lời
tương ứng (response) và chuyển kết quả cho Web
server.
5. Web server sẽ gửi trả kết quả này (response) cho
client (Web Browser).


Để chạy được một servlet cần phải có:
• Cần có package servlet.jar để biên dịch
( />Java 2 không chứa các lớp của gói servlet, trong trường
hơp này chúng ta phải chỉ biến môi trường CLASSPATH
đến tập tin servlet.jar, hoặc servlet-api.jar. Các tập tin này
có kèm theo trong các Web Server có hỗ trợ Java.
• Các Web Server hỗ trợ Servlet, hiện nay đã có:
– Apache Tomcat ()

– Sun’s Java Web Server, free, hiện không cho download
( />– New Atlanta’s ServletExec, tích hợp ServletEngine vào
các web server()
– />–…
(Tham khảo các tài liệu về Servlet:
6
/>
GV: Võ Tấn Dũng

GIỚI THIỆU SERVLET


//HelloWorldServlet.java
import javax.servlet.*;
import java.io.*;
public class helloWorldServlet extends GenericServlet{
public void service(ServletRequest request, ServletResponse
response) throws IOException
{
response.setContentType(“text/html”);
PrintWriter out=response.getWriter();
out.println(“<html>”);
out.println(“<body>”);
out.println(“

Hello World Servlet!

”);
out.println(“</body>”);
out.println(“</html>”);
}
}

7


GV: Võ Tấn Dũng

Ví dụ servlet đơn giản: “Hello” Servlet


• Đối với Tomcat Web Server, mỗi ứng dụng web được lưu
trữ trong thư mục riêng, chứa trong thư mục webapps (của
thư mục Tomcat khi cài đặt lên đĩa). Mỗi ứng dụng này cần
có tập tin web.xml để mô tả những yếu tố riêng, được đặt
trong thư mục WEB-INF của ứng dụng.
• Ví dụ ta xây dựng một ứng dụng Web bằng cách tạo thư
mục myApp tương ứng trong thư mục webapps. Tên thư
mục này sẽ xuất hiện trong URL khi ta gọi servlet.
• Tạo một thư mục WEB-INF trong thư mục myApp, và tạo
một thư mục tên classes trong WEB-INF. Cấu trúc cây thư
mục này được trình bày ở slide ngay sau đây. Nếu ta có
các file HTML thì hãy đặt chúng trực tiếp vào thư mục
myApp. Ta cũng nên tạo một thư mục tên là images trong
myApp để chưa các file hình cho web của mình.
8

GV: Võ Tấn Dũng

CÁC THƯ MỤC WEB TRONG TOMCAT


9

GV: Võ Tấn Dũng


CÁC THƯ MỤC WEB TRONG TOMCAT


Chu trình sống của Servlet

10

GV: Võ Tấn Dũng

• Chu trình sống của một Servlet bắt đầu khi nó được hệ
thống triệu gọi (gọi nạp vào bộ nhớ) cho đến khi nó bị
loại khỏi trình chủ Web server. Trải qua các giai đoạn
sau:
™ Nạp servlet.
™ Khởi tạo servlet.
™ Thực thi servlet.
™ Dọn dẹp servlet.


Chu trình sống của Servlet
Giai đoạn Nạp servlet:

11

GV: Võ Tấn Dũng

• Một servlet có thể được nạp vào bộ nhớ ở ba thời
điểm: khi server khởi động, khi người quản trị yêu
cầu, khi servlet được triệu gọi từ máy client.

• Yêu cầu Server nạp servlet trước sẽ khiến trình
khách có thể gọi servlet ngay mà không phải mất
công chờ.
• Để nạp servlet thì trình chủ phải biết tên lớp của
servlet. Tên của một servlet có thể trùng với tên lớp
của servlet hoặc tên mà ta đăng ký với trình chủ
trong quá trình đăng ký và ánh xạ.


Chu trình sống của Servlet
Giai đoạn Khởi tạo servlet:

12

GV: Võ Tấn Dũng

• Khi có một yêu cầu gọi servlet, trình chủ Web
server sẽ xem servlet được nạp vào bộ nhớ hay
chưa. Khi servlet đã được nạp thì server chuyển
sang giai đoạn khởi tạo servlet.
• Trình chủ web server khởi tạo servlet bằng cách gọi
đến phương thức init() được cài đặt trong servlet.


Chu trình sống của Servlet
Giai đoạn thực thi Servlet:

13

GV: Võ Tấn Dũng


• Khi servlet được gọi qua các URL hay từ các trang
HTML hoặc trang JSP khác thì Web server chính
thức gọi servlet thực thi thông qua các phương thức
doGet(), doPost() hoặc service().
• doGet(): được gọi khi ta gọi trực tiếp servlet từ một
URL.
• doPost(): được gọi khi ta gọi servlet thông qua thao
tác post của thẻ <form>.


Chu trình sống của Servlet
Giai đoạn dọn dẹp Servlet

14

GV: Võ Tấn Dũng

• Khi thực hiện dọn dẹp servlet, Web server gọi đến
phương thức destroy() của servlet.
• Đây là cơ hội để Servlet thực hiện các thao tác cần
thiết như dọn dẹp bộ nhớ, lưu trữ dữ liệu xuống đĩa,
đóng các kết nối.
• Mặc dù Java có thể tự động thu gom rác trong bộ
nhớ nhưng nếu ta cấp phát cho servlet một khối
lượng lớn bộ nhớ thì ta nên giải phóng chúng khi
gọi phương thức destroy() này.


Chu trình sống của Servlet


15

GV: Võ Tấn Dũng

Vòng đời của Servlet được tóm tắt bằng hình vẽ sau:


Sáu bước chạy một servlet

16

GV: Võ Tấn Dũng

1. Tạo một thư mục trong Tomcat web server cho
ứng dụng web của mình.
2. Viết code cho một servlet. Khi viết, đầu tiên ta
phải import hai gói sau: javax.servlet và
javax.servlet.http
3. Biên dịch code của servlet.
4. Tạo một mô tả sử dụng (description).
5. Chạy Tomcat.
6. Gọi servlet từ một trình duyệt web.


PHẦN 2

17

GV: Võ Tấn Dũng


VIẾT SERVLET


Servlet API
• Servlet API bao có hai package cần
javax.servlet.Servlet
thiết:
implements
- javax.servlet
- javax.servlet.http
javax.servlet.GenericServlet
• Một servlet có thể kế thừa từ hai lớp:
•javax.servlet.GenericServlet hoặc
javax.servlet.http.HttpServlet
•javax.servlet.http.HttpServlet

18

GV: Võ Tấn Dũng

• Trong môi trường web, giao thức HTTP được sử dụng
giữa Web client và Web server. Vì vậy servlet thường được
kế thừa từ lớp javax.servle.http.HttpServlet, sau đó viết
chồng hàm các phương thức cần thiết để phục vụ yêu cầu
từ client.


interface Servlet
• Thật sự lớp GenericServlet là phần cài đặt tổng quát cho

đặc tả giao tiếp (interface) mang tên Servlet.

19

GV: Võ Tấn Dũng

• interface Servlet{
void destroy();
ServletConfig getServletConfig();
String getServletInfo();
void init(ServletConfig config);
void service(ServletRequest req,
ServletResponese res);
}


init() method

20

GV: Võ Tấn Dũng

• Được gọi khi Web server nạp servlet.
• Để khởi tạo biến môi trường, các biến toàn cục, các giá
trị ban đầu.
• Tạo sẵn các kết nối socket, các kết nối CSDL, nạp các
thư viện cần thiết,v…v…
• Phương thức init() chỉ được gọi một lần khi Web server
nạp servlet.



init() method
Ví dụ:

21

GV: Võ Tấn Dũng

public class ShoppingCartDB extends GenericServlet {
String DBDriver =“sun.jdbc.odbc.JdbcOdbcDriver”;
String strConn =“jdbc:odbc:bookstore”;
Connetion con;
public class init() {
Class.forName(DBDriver).newInstance();
conn =DriverManager.getConnection(strConn);
}


service() method

22

GV: Võ Tấn Dũng

• Phương thức này được xem là trung tâm xử lý
của servlet mà ta cài đặt.
• Bên trong phương thức service có hai đối tượng
tham số:
- HttpServletRequest: biểu diễn yêu cầu của client
từ Web browser gửi lên.

- HttpServletResponese: mô tả đáp ứng của
server gửi đến Web browser.


service() method
Ví dụ:

23

GV: Võ Tấn Dũng

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("Hello World");
}
}


destroy() method
• Khi servlet không còn dùng đến hoặc hết thời
gian quy định lưu trữ trong bộ nhớ của Web
server thì servlet sẽ bị trình chủ giải phóng.
• Trước khi servlet bị hủy thì phương thức
destroy() sẽ được gọi.

• Phương thức destroy() dùng để dọn dẹp tài
nguyên, giải phóng bộ nhớ, đóng kết nối socket
hoặc đóng kết nối đến CSDL,…

24

GV: Võ Tấn Dũng

Ví dụ: conn.close(); //đóng kết nối CSDL đặt trong
destroy().


getServletConfig() và getServletInfo()
• Phương thức getServletConfig() giúp người sử
dụng Servlet có được đối tượng ServletConfig
chứa các thông tin khởi tạo từ môi trường ngoài
đưa vào Servlet.

25

GV: Võ Tấn Dũng

• Phương thức getServletInfo() trả về một chuỗi
thông tin mô tả ý nghĩa và mục đích của Servlet,
các thông tin về tác giả, version và copyright.


×