1. Trang chủ
  2. » Công Nghệ Thông Tin

lập trình Servlet căn bản

50 220 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 50
Dung lượng 363 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

 Khi có yêu cầu gửi đến server, phương thức service hoặc doGet, doPost, sẽ được gọi và truyền theo 2 tham số:  HttpServletRequest: cung cấp sự truy cập tới dữ liệu yêu cầu từ client, t

Trang 1

3 Tổng quan về Servlet

3.1 Giới thiệu về servlet.

3.2 Chu trình servlet.

3.3 Yêu cầu đồng thời.

3.4 Đối tượng ServletConfig và ServletContext.

3.5 Đối tượng ServletRequest và ServletResponse 3.6 Xử lý dữ liệu.

Trang 2

3.1 Giới thiệu về Servlet

 Servlet là một thành phần J2EE ở phía server của ứng dụng theo kiến trúc J2EE thực hiện logic nghiệp cho một HTTP request.

 Nó được chạy ở phía server (không chạy ở client)

 Là một class Java được chạy trong một môi trường JVM của một trình chứa Web

 Là một Web component và được quản lý bởi trình chứa Web

 Để tạo một servlet, kiến trúc J2EE cung cấp các Servlet API (một tập hợp các class java định nghĩa giao tiếp chuẩn giữa Web client và Web Server).

Trang 3

Giới thiệu về Servlet (tiếp)

•Servlet API bao gồm hai

•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.

javax.servlet.Servlet

javax.servlet.GenericServlet

javax.servlet.http.HttpServlet

implements

Trang 4

Giới thiệu về Servlet (tiếp)

 Các phương thức cần viết chồng hàm là service (hoặc doGet, doPost), init, destroy

 Khi có yêu cầu gửi đến server, phương thức service (hoặc doGet, doPost), sẽ được gọi và truyền theo 2 tham số:

 HttpServletRequest: cung cấp sự truy cập tới dữ liệu yêu cầu từ client, thông tin về phiên làm việc

 HttpServletResponse: cung cấp các dịch vụ cho phép servlet tạo một trả lời cho yêu cầu của client

Trang 5

Giới thiệu về Servlet:

Luồng xử lý của Servlet

1 Client yêu cầu một servlet, tên của servlet là một phần của

URL (vd: http://www.music.com/music/SearchServlet).

Web Server

Browser

(client)

Application Server

Servlet Instance

URL Request

Response

Trang 6

Giới thiệu về Servlet: Luồng

xử lý của Servlet (tiếp)

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.

Trang 7

3.2 Chu trình Servlet

Tạo mới Khởi tạo

Xử lý Yêu cầu

Sẵn sàng Phục vụ

Không thể Phục vụ

Trang 8

Chu trình Servlet (tiếp)

 Servlet được quản lý thông qua một chu trình

chỉ ra cách nó được tạo ra, khởi tạo, xử lý yêu cầu từ client và huỷ bỏ:

1 Tạo mới:

– Trình chứa Servlet sẽ chịu trách nhiệm nạp và tạo ra các thể hiện (instance) của servlet Quá trình này sẽ được thực hiện khi trình chứa được khởi động hoặc khi trình chứa xác định rằng servlet cần được nạp để xử lý các yêu cầu

Trang 9

Chu trình Servlet (tiếp)

– Khi servlet engine được khởi động, các

servlet cần thiết sẽ được định vị bởi trình chứa servlet, trình chứa sẽ nạp các servlet, sau đó sẽ tạo ra các thể hiện để có thể sử dụng

2.Khởi tạo

– Đọc các tham số cấu hình, thực hiện các

hành động chỉ thực hiện một lần và khởi tạo các tài nguyên cần thiết

– Sau khi một thể hiện của servlet được tạo ra,

nó phải được khởi tạo trước khi có thể xử lý các yêu cầu từ client

Trang 10

Chu trình Servlet (tiếp)

– Phương thức init sẽ được gọi để thực hiện

quá trình khởi tạo như nạp các giá trị mặc định Có 2 phương thức init, một phương thức không có tham số, một phương thức nhận đối tượng ServletConfig là tham số Phương thức cho phép servlet truy cập từng cặp “Tên - Giá trị” của các tham số khởi tạo

– Đối tượng ServletConfig chứa thông tin cấu

hình của servlet, nó cho phép truy cập tới đối tượng ServletContext (là đối tượng chứa thông tin về môi trường của servlet)

Trang 11

Chu trình Servlet (tiếp)

- Nếu khởi tạo thành công servlet sẽ chuyển

sang trạng thái sẵn sàng để phục vụ các yêu cầu từ client Ngược lại nó sẽ báo lỗi ra ngoài (thường là UnavailableException), khi đó trình chứa sẽ giải phóng thể hiện này (không gọi phương thức destroy), sau đó sẽ tạo và khởi tạo một thể hiện khác

Trang 12

Chu trình Servlet (tiếp)

3 Xử lý yêu cầu

- Nhận yêu cầu từ client, xử lý và trả lời lại cho

web server

- Trình chứa Servlet cung cấp hai đối tượng:

yêu cầu kiểu ServletRequest và trả lời kiểu ServletResponse Hai đối tượng này là 2 tham

số cho phương thức service

Trang 13

Chu trình Servlet (tiếp)

– Trong trường hợp yêu cầu có dạng là HTTP,

các đối tượng được trình chứa cung cấp có

HttpServletResponse

– Các phương thức service, doGet, doPost,

được gọi để xử lý các yêu cầu của client (mỗi yêu cầu HTTP sẽ được xử lý trên một luồng riêng) Mặc định phương thức service sẽ gọi phương thức doGet khi một yêu cầu HTTP GET được gửi từ client (hành động được gọi từ URL), hoặc phương thức doPost khi một yêu cầu HTTP POST được gửi từ client (hành động được gọi từ form HTML)

Trang 14

Chu trình Servlet (tiếp)

- Trong quá trình phục vụ yêu cầu, servlet có thể

báo lỗi ServletException để chỉ lỗi khi xử lý, hoặc UnavailableException để chỉ nó tạm thời chưa sẵn sàng hoặc không thể phục vụ Nếu tạm thời chưa sẵn sàng thì yêu cầu sẽ không được chuyển tới, nếu không thể phục vụ thì thể hiện sẽ được giải phóng (destroy), sau đó tạo và khởi tạo lại

4 Kết thúc

– Sau khi thực hiện yêu cầu, một servlet có thể

được giữ lại ở trình chứa thêm một khoảng thời gian nữa (tuỳ thuộc vào cấu hình)

Trang 15

Chu trình Servlet (tiếp)

– Khi trình chứa thấy rằng một servlet nên

được gỡ bỏ nó sẽ gọi phương thức destroy

để giải phóng tất cả tài nguyên sử dụng cho servlet và lưu lại những trạng thái thường trú của servlet Điều này có thể thực hiện khi trình chứa cần lấy lại tài nguyên bộ nhớ hoặc khi nó bị ngừng hoạt động

– Trước khi trình chứa servlet gọi phương thức

destroy nó phải cho phép tất cả các luồng đang chạy trong phương thức service hoàn thành

Trang 16

Chu trình Servlet (tiếp)

– Khi phương thức destroy đã được gọi, trình

chứa sẽ không gửi các yêu cầu khác đến thể hiện này nữa, nếu cần thì nó sẽ làm điều này với một thể hiện mới của servlet

– Sau khi phương thức destroy hoàn thành

trình chứa sẽ giải phóng thể hiện của servlet (garbage collection)

Trang 17

3.3 Yêu cầu đồng thời

Browser

Browser

Web Server

thread thread thread

Servlet engine

Servlet HTTP

Request

Trang 18

Yêu cầu đồng thời (tiếp)

 Ở chế độ chạy đơn luồng, các yêu cầu đồng thời

tới server sẽ được phục vụ trên các thể hiện khác nhau của servlet, nếu không đủ số thể hiện thì các yêu cầu còn lại sẽ được phục vụ khi nào có thể hiện rỗi

 Khi servlet ở chế độ chạy đơn luồng, nó có thể coi

là luồng an toàn tức là không cần phải đảm bảo đồng bộ việc truy cập các biến, tài nguyên của nó Tuy nhiên nó vẫn cần tuân theo một số quy định sau:

Trang 19

Yêu cầu đồng thời (tiếp)

 Ở chế độ chạy đơn luồng, các yêu cầu đồng thời

tới server sẽ được phục vụ trên các thể hiện khác nhau của servlet, nếu không đủ số thể hiện thì các yêu cầu còn lại sẽ được phục vụ khi nào có thể hiện rỗi

 Khi servlet ở chế độ chạy đơn luồng, nó có thể coi

là luồng an toàn tức là không cần phải đảm bảo đồng bộ việc truy cập các biến, tài nguyên của nó Tuy nhiên nó vẫn cần tuân theo một số quy định sau:

Trang 20

Yêu cầu đồng thời (tiếp)

Vẫn phải quản lý cẩn thận những biến và

thành phần không phải là hằng số (final).

Các tài nguyên và bộ nhớ dùng chung phải

được khoá lại khi có một luồng truy cập.

 Do servlet đơn luồng làm giảm tốc độ và hiệu năng

của hệ thống, vì vậy nên tránh dùng nó

Trang 21

3.4 Đối tượng ServletConfig và ServletContext: ServletConfig

 Được trình chứa servlet sử dụng để truyền

thông tin cho servlet trong suốt quá trình khởi tạo của servlet.

 Lưu trữ thông tin cấu hình của servlet.

 Mỗi servlet trên một server chỉ có duy nhất một

đối tượng ServletConfig.

 Lấy về đối tượng ServletConfig bằng phương

thức getServletConfig().

Trang 22

Đối tượng ServletConfig và

ServletContext: ServletConfig (tiếp)

 Một số phương thức:

 Lấy về tham số khởi tạo (một cặp Tên – Giá

trị):

 public String getInitParameter(String name):

trả về giá trị của tham số có tên là name

getInitParameterNames(): trả về tập hợp tên các tham số khởi tạo

 Lấy về đối tượng ServletContext:

 public ServletContext getServletContext();

Trang 23

Ví dụ: Khai báo servlet

Trang 24

Ví dụ: Lấy tham số khởi tạo

// Phương thức khởi tạo

public void init() {

public void init() {

ServletConfig config = getServletConfig();

Trang 25

Đối tượng ServletConfig và

ServletContext: ServletContext

 Là đối tượng chứa thông tin về môi trường,

trạng thái của servlet khi nó đang hoạt động Nhờ đó servlet có thể log các sự kiện, truy cập tài nguyên, thay đổi các thuộc tính mà các servet trong cùng context có thể truy cập.

 Mỗi ứng dụng web cài đặt trên một trình chứa

Web chỉ có duy nhất một thể hiện của ServletContext Trường hợp trình chứa được phân tán trên nhiều JVM thì mỗi JVM sẽ có một thể hiện chạy trên đó.

Trang 26

Đối tượng ServletConfig và

ServletContext: ServletContext (tiếp)

 Các servlet không được cài đặt như một phần

ứng dụng sẽ có một đối tượng ServletContext mặc định, đối tượng này chỉ tồn tại trên một JVM duy nhất (kể cả khi trình chứa phân tán).

 Một số phương thức:

 Lấy về tham số khởi tạo (một cặp Tên – Giá

trị):

 public String getInitParameter(String name):

trả về giá trị của tham số có tên là name

getInitParameterNames(): trả về tập hợp tên các tham số khởi tạo.

Trang 27

Đối tượng ServletConfig và

ServletContext: ServletContext (tiếp)

 Truy cập các thuộc tính:

 Public void setAttribute(String name, Object

value): gán giá trị value cho thuộc tính có tên là name

 Public String getAttribute(String name): trả

về giá trị của thuộc tính có tên là name

 Public Enumerator getAttributeNames(); trả

về tập hợp tên các thuộc tính

 Public void removeAttribute(String name):

xóa bỏ thuộc tính có tên là name từ servlet context

Trang 28

Đối tượng ServletConfig và

ServletContext: ServletContext (tiếp)

 Truy cập tài nguyên:

 public URL getResource(String path)

 public InputStream

getResourceAsStream(String path)

Trang 29

Web Browser

Web Server File System

Web Cotainer

Web Server Plug-in

Requests for Dynamic

resources

Requests for static resources

Dynamic response

3.5 Đối tượng ServletRequest và

ServletResponse: ServletRequest

Trang 30

3.5 Đối tượng ServletRequest và ServletResponse: ServletRequest

 Là đối tượng đóng gói toàn bộ thông tin về

yêu cầu từ client (tham số (paramter), thông tin session, …) gửi tới server Trong giao thức HTTP, các thông tin này được truyển từ Web server (hoặc application server) tới client trong các HTTP header và body tài liệu của yêu cầu.

 Là một trong hai đối tượng dùng làm tham số

cho các phương thức service, doGet và doPost

Trang 31

Đối tượng ServletRequest và

ServletResponse: ServletRequest

(tiếp)

 Tham số của ServletRequest là các chuỗi được gửi

từ client tới trình chứa servlet Khi ServletRequest

là một đối tượng có kiểu HttpServletRequest thì trình chứa sẽ thao tác với các tham số từ URI query string (GET) hoặc từ post body (POST)

 Dữ liệu từ query string và post body được kết hợp

thành tập các tham số ServletRequest Khi có cả query string và post body thì dữ liệu của query string sẽ được lấy trước Nếu tham số của query string và post body có cùng tên thì dữ liệu nhận được sẽ là một mảng các giá trị cho cùng một tham số đó

Trang 32

Đối tượng ServletRequest và

ServletResponse: ServletRequest

(tiếp)

 Các tham số được lưu như một cặp “tên – giá

trị” Nhiều giá trị có thể có cùng một tên tham

số ServletRequest cung cấp một số phương thức để truy cập các tham số:

 Public String getParamter(String name): trả lại

giá trị của tham số có tên là name

 public Enumeration getParameterNames(): trả

lại danh sách tên của tất cả các tham số trong ServletRequest

 public String[] getParamterValues(String name):

trả lại danh sách giá trị của các tham số có tên

là name

Trang 33

Đối tượng ServletRequest và

ServletResponse: ServletRequest

(tiếp)

 Ngoài các tham số đối tượng ServletRequest còn

có thể lưu trữ các thuộc tính cần thiết cho trình chứa để biểu thị các thông tin khác Các thuộc tính có thể truy xuất qua các phương thức:

 Public String getAttribute(String name): trả lại giá

trị của thuộc tính có tên là name

 Public Enumeration getAttributeNames(): trả lại

danh sách tên của tất các thuộc tính trong ServletRequest

Trang 34

Đối tượng ServletRequest và

ServletResponse: ServletRequest

(tiếp)

 public void setAttribute(String name, Object

obj): lưu một thuộc tính có tên là name, giá trị obj vào trong ServletRequest

 public void removeAttribute(String name): xoá

bỏ thuộc tính có tên là name khỏi ServletRequest

 Servlet còn có thể truy cập header của một yêu

cầu HTTP thông qua:

 Public String getHeader(String name): trả lại nội

dung của header có tên là name

Trang 35

Đối tượng ServletRequest và

ServletResponse: ServletRequest (tiếp)

 Public Enumeration getHeaderNames(): trả lại

danh sách tất cả các tên của header

 Public Enumeration getHeader(String name):

trả lại mảng các giá trị của header có tên là name.

Trang 37

Ví dụ: Đọc HTTP POST

public class SearchServlet extends HttpServlet {

public void doPost(HttpServletRequest req,

}

Trang 38

Đối tượng ServletRequest và ServletResponse: ServletResponse

 Là đối tượng đóng gói toàn bộ thông tin sẽ

được trả lại từ server cho client Trong giao thức HTTP, thông tin này sẽ được truyển từ Web server (application server) tới client trong

các HTTP header và phần thân tài liệu của kết quả trả về.

 Là một trong hai đối tượng dùng làm tham số

cho các phương thức service, doGet và doPost

Trang 39

Đối tượng ServletRequest và

ServletResponse: ServletResponse (tiếp)

 Nội dung một ServletResponse:

 Content type : kiểu dữ liệu trả về, vd html, pdf,

Trang 40

Đối tượng ServletRequest và

ServletResponse: ServletResponse (tiếp)

 Content header: nội dung header (cookies,

 Public void setContentType(String type): thiết

lập kiểu dữ liệu trả về (html, pdf, doc, …)

(http://www.mimetype.org/)

 Public void setBufferSize(int size): thiết lập kích

thước buffer cho ServletResponse

Trang 41

Đối tượng ServletRequest và

ServletResponse: ServletResponse (tiếp)

 Public PrintWriter getWrite(): trả về đối tượng

dùng để gửi các ký tự text tới client

 Public ServletOutputStream getOutputStream():

trả về đối tượng dùng để gửi dữ liệu nhị phân tới client

Trang 42

Trả về tài liệu – musicSearch.html

Submit form (POST – yêu cầu)

Gọi đến MusicServlet (request)

Servlet tạo ra một HTML response dựa trên đầu vào từ form submit Server

sẽ trả về tài liệu HTML (response)

Ngày đăng: 14/09/2015, 10:53

HÌNH ẢNH LIÊN QUAN

Hình của servlet, nó cho phép truy cập tới đối  tượng  ServletContext  (là  đối  tượng  chứa  thông tin về môi trường của servlet). - lập trình Servlet căn bản
Hình c ủa servlet, nó cho phép truy cập tới đối tượng ServletContext (là đối tượng chứa thông tin về môi trường của servlet) (Trang 10)

TỪ KHÓA LIÊN QUAN

w