Phát triển và sửdụng một Servlet

Một phần của tài liệu Phát triển ứng dụng phần mềm trên máy chủ dựa trên công nghệ Java (Trang 59 - 64)

Như đã nói ở trên, Servlet là một lóp của Java cài đặt cho một giao diện. Trong các ứng dụng Web, lớp Servlet sẽ thực hiện việc cài đặt giao diện javax. Servlet, http. HttpServlet. Phần sau xem xét việc xây dựng một Servlet và cách thức sử dụng Servlet này.

3.1.2.1 Phát triên một Servlet đơn giản

Sau đây là một ví dụ về một Servlet

import java. ¡0. *; import javax. servlet. *; import javax. servlet, http. *;

// Định nghĩa lớp Servlet

public class SampleServlet extends HttpServlet { // Định nghĩa phương thức service() cúa Servlet

public void service (HttpServletRequest request, HttpServletResponse response) throws lOException {

// Tạo một trang Web đơn gián

response. setContentType (“texưhtml”); PrintWriter out = response. getWriter();

out. println (“<HTML><TITLE>Sample Servlet: a basic Servlet</TITLE>”); out. println (“<B0DY><H1>My Sample Servlet: </H 1 >”);

out. println (“This is a very simple Servlet. ”); out. println (“</BODY></HTML>”);

out. close();

}

3.1.2.2 Thục líiện và gọi Servlet

Các Servlet cần một môi trường để thực hiện. Chúng cần phải được tải vào, khởi động trong bộ chứa Web. Mỗi khi ứng dụng khách gửi yêu cầu tới Servlet, phương

thức servicef) sẽ được thực hiện. Để gọi Servlet, cần đưa vào URL sau cho trình duyệt Web:

http: //host/servlet/SampleServlet

http: //hosƯmvvvebapp/servlet/SampleServlet

Cách gọi thứ hai được sử dụng nếu Servlet được đưa vào ứng dụng Web gói thư mục gốc của ứng dụng này là /myvvebapp. [5]

Sau khi thực hiện Servlet, sẽ có một trang Web có nội dụng sau:

n My Sample Servlet - Microsoft Internet Explorer E M *

File Edit View Favorites Tools Help

^ Back ^ |*) [*) y* 5earch Favorites Media ^

i r

» »

\rß Links

M y S a m p l e S e r v l e t :

T his is a v e iy sim ple S e rv le t.

1^1 Done ^ My Computer 1

Hình 3-3: Kết quả của SampleServlet

3. /. 2.3 Servlet x ử lý fo rm H TML

Phần này xem xét một Servlet thực hiện việc xử lý một form HTML. Trong ví dụ này, Servlet sẽ thực hiện việc tạo ra một form HTML để lấy các thông tin của người sử dụng.

//Servlet thực hiện xứ lý form HTML SampleForm import java. io. *;

import javax. servlet. *; import javax. servlet, http. *;

- 6 0 -

public class SampleForm extends HttpServlet {

public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, lOException {

performTask (request, response, ’’POST”, “SampleFormHandler”);

}

public void performTask (HttpServletRequest request, HttpServletResponse, String method, string url) throws lOException {

response. setContentType (“texưhtml”); PrintWriter out = response. getWriter();

out. println (“HTML><TITLE>Sample Servlet: an HTML form</TITLE>”); out. println ("<BODY><H1>Let's talk about you: </H1><HR>");

out. println ("<H4>Would you please fill in the following form ?</H4>"); out. println ("<FORM METHOD=\""+method +"\"ACTION=\""+url +"\">"); out. println ("Your name ");

out. println ("<|NPUT TYPE=TEXT NAME=clientName><BR>"); out. println ("Your favorite sport: <BR>");

out. println ("<|NPUT TYPE=RADIO NAME=clientSport"+ "VALUE=\"football \">Football<BR>");

out. println ("<|NPUT TYPE=RADIO NAME=clientSport"+ "VALUE=\"tennis \">Tennis <BR>");

out. println ("<|NPUT TYPE=RADIO NAME=clientSport+ "VALUE=\"other \ "CHECKED=\"TRUE \">Other<BR>");

out. println ("<|NPUT TYPE=\"SUBMIT \"NAME=\"SENDPOST \"NAME=\"Send

\">");

out. println ("<|NPUT TYPE=\"RESET \ "NAME=\"RESET \ "NAME=\"Reset

out. println ("</FORM></BODY></HTML>"); out. close();

} }

Tương tự như SampleServlet, SampleForm cũng tạo ra một trang Web. Nhưng Servlet này khác với SampleServlet như sau:

• Thực hiện xử lý phương thức doGet()\ phương thức này là một phần của lóp

HttpServlet. Phương thức này được gọi thông qua phương thức service() để

xử lý yêu cầu GET. Thông thường người sử dụng gửi một URL từ trình duyệt Web của minh, người sử dụng tạo một yêu cầu GET tới máy chủ Web.

Trong ví dụ này phương thức doGet() sẽ được gọi bởi phương thức serviceQ,

sau đó nó chuyển công việc cần xử lý của mình cho phương thức

performTaskm().

Nó hiện một form HTML: nội dung trang Web mà Servlet này tạo ra là một

form HTML. Trang Web này cho phép người sử dụng có thể nhập dừ liệu vào từ trình duyệt Web. Một form được tạo thành bởi nhiều trường khác nhau, mỗi trường có tên và giá trị. Giá trị của trường có thể thay đổi bởi người sử dụng và được chuyển đến máy chủ Web bằng cách nhấn chuột vào phím Submit. Khi thực hiện nhấn phím này người sử dụng sẽ thực hiện việc gửi một yêu cầu tới Servlet SampleFormHandler.

Servlet này được gọi bàng URL sau:

http: //host/servlet/SampleForm

Sau dó được trang Web sau:

' ! ỉ D:\Thang\Personal\TrangVSampleForm Servlet.htm Microsoft Internet ... | » ~ | f p ] f x |

File Edit View Favorites Tools Help i r

B-ỉck 0 S3 íã c i p Search ’if? Favorites Media 4& 0 * III Links A ' L e t ’s t a l k a b o u t y o u : W o u l d y o u p l e a s e fill in t h e f o llo w in g f o r m ? Y o u r nam e Y o u r fav o rite sp o rt: O F o o tb a ll O T en n is © O th e r | S u b m it Q u e ry R e s e t ] .<£) Done My Computer

Hình 3-4: Kết quả của SampleForm Servlet

Tiếp theo đây là một Servlet xử lý các tham số nhận được từ người sử dụng. Servlet này được người sử dụng gọi bằng cách nhấn vào phím Summit Query.

// SampleFormHandler import java. io. *;

- 6 2 -

import javax. servlet. *; import javax. servlet, http. *;

//Đ ịn h nghĩa lớp SampleFormHandler

public class SampleFormHandler extends HttpServlet { private int count = 0;

public void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, lOException {

response. setContentType (“texưhtml”); PrintWriter out = response. getWriter();

// Lẫy các tham số

String clientName= new String (request. getParameter (“clientName")); String clientSport = new String (request. gerParameter (“clientSport”));

// Hiến thị kẽt quá

out. println (“<HTML><TITLE>Sample Servlet: the result of the form</TITLE>’’); out. println (”<BODY><H1>Hello "+clientName +"</H1>");

out. println ("<H4>I see that you like "+clientSport +"</H4>");

out. println ("<H4>This Servlet has been called "+++count +"time (s) </H4>"); out. println ("</BODY></HTML>");

out. close();

} }

Đặc trưng của SampleFormHandler là:

• Thực hiện phương thức doPost(), phương thức này xử lý yêu cầu POST được

gửi từ người sử dụng. Phương thức này được gọi từ phương thức service().

Sự khác biệt lớn chính giữa GET và POST là POST được dùng khi có dữ liệu cân gửi vê cho máy chủ Web. Cả hai yêu câu này đêu được sử dụng đê yêu cầu tài nguyên từ máy chủ, nhưng với GET thì các tham số gửi tới máy chủ đều phải qua URL.

• Thực hiện việc lấy dừ liệu từ đối tượng HttpServletRequest: phương thức

getParameter() được sử dụng để lấy dữ liệu được gửi bởi người sử dụng. Đối với mỗi tham sổ, tên của biến được sử dụng để lấy giá trị của tham sô này.

• Tăng con trỏ đếm: mỗi lần gọi đến Servlet thì con trỏ đếm được tăng thêm 1. Giá trị này được duy trì trong suốt quá trình sống của Servlet.

Ket quả của SampleFormHandler như sau:

Ü Sample servlet: the result of the form M icrosoft Internet Explorer

File Edit View Favorites Tools Help

Q Bsck 0 S ) P Search «£? Favorites sr Media 4 5 ¿ 3 " Links H e l l o U s e r I I s e e t h a t y o u l ik e f o o t b a l l T h is S e r v i e t h a s b e a n c a l l e d 1 t i m e s Done My Computer

Hình 3-5: Kết quả của SampleFormHandler Servlet

Trong ví dụ này, Servlet thực hiện việc sinh dữ liệu động dựa trên các thông tin do người sử dụng cung cấp. Tóm lại, Servlet là một lớp trong Java được mở rộng từ

HttpServlet. Trong phương thức serviceQ của lóp này, có thể thực hiện xử lý các

yêu cầu của người sử dụng và tạo các kết quả ra cần thiết. [5]

Một phần của tài liệu Phát triển ứng dụng phần mềm trên máy chủ dựa trên công nghệ Java (Trang 59 - 64)

Tải bản đầy đủ (PDF)

(97 trang)