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]