1.Giao thức HTTP

Giao thức HTTP cung cấp cho bạn cách thức trò chuyện giữa trình khách(thường là trình duyệt Browser) và trình chủ(web server) khá hiệu quả.

  • GET: Yêu cầu trình chủ trả về nội dung một tài nguyên(thường là tập tin) theo địa chỉ định vị URL.
  • POST: Chuyển dữ liệu từ trình khác lên trình chủ. Trình chủ tiếp nhận dữ liệu, tính toán và trả kết quả về cho trình khách.
  • HEAD: Yêu cầu trình chủ trả về thông tin mô tả của một tài nguyên(tập tin).
  • PUT: Đưa một tài nguyên(tập tin) lên trình chủ.
  • DELETE: Yêu cầu trình chủ xóa một tài nguyên(tập tin) nào đó.

2.Servlet

Ví dụ Xây dựng một Servlet mà khi triệu gọi Servlet này sẽ trả về trang HTML cho trình khách.Trang web này chỉ ra lời chào “Servlet Example” đồng thời hiển thị các thông tin đọc được từ máy khách do trình duyện chuyển lên. Các thông tin này bao gồm: tham số từ trình khách gửi tới trình chủ, các thông tin cấu hình ngay tại trình chủ Web Server. Do Servlet của ta có khả năng liệt kê những thông tin về tài nguyên của hệ thống ở cả 2 phía khách chủ nên với Servlet này ta đặt tên CSProperties(Client Server Properties).

Khi tạo Servlet bạn cần tuân thủ 2 bước sau:

  • Tạo một Servlet mới kế thừa từ lớp javax.servlet.HTTPServlet(thực sự thì lớp HTTPServlet kế thừa từ lớp tổng quát hơn GenericServlet), HTTPServlet cung cấp cho bạn cách thức trò chuyện giữa Client với Servlet trên Server thông qua giao thức HTTP.
  • Cài đặt phương thức doPost() hoặc doGet() đáp ứng lời gọi của trình khách. Khả năng xử lý của Servlet chủ yếu diễn ra trong 2 hàm này.

Một Servlet có thể tùy chọn cài đặt chồng phương thức init() hoặc destroy() để thực hiện một số khởi tạo ban đầu hay dọn dẹp tài nguyên cho hệ thống. Ví dụ trong các truy xuất cơ sở dữ liệu thường chúng ta thực hiện tạo kết nối cơ sở dữ liệu trong phương thức init() và hủy bỏ kết nối trong phương thức destroy(). Servlet CSProperties chưa thực hiện chức năng này. Tuy nhiên, để minh họa tính đè chồng, phương thức init() và destroy() vẫn được đưa vào nhưng phần thân của chúng để trống.

Lớp CSProperties được xây dựng như sau:

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Enumeration;

import java.util.Properties;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

*

* mobilesprogramming’ blog

*/

public class CSProperties extends HttpServlet {

/**

* Thực hiện lenh HTTP Get

* @param request những yêu cầu do trình khách gửi lên

* @param response phản hồi từ phía trình chủ

* @throws ServletException

* @throws IOException

*/

@Override

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

request.setCharacterEncoding(“UTF-8”);

response.setCharacterEncoding(“UTF-8”);

response.setContentType(“text/html; charset=UTF-8”);

PrintWriter out = response.getWriter();

String title = “Servlet Properties”;

String docType =

“<!DOCTYPE HTML PUBLIC \”-//W3C//DTD HTML 4.0 Transitional//EN\”>\n”;

out.println(docType

+ “<html>\n”

+ “<meta http-equiv=\”Content-Type\” content=\”text/html; charset=utf-8\”>\n”

+ “<head><title>” + title + “</title></head>\n”

+ “<body>\n”

+ “<h2 align=\”center\”>” + “Servlet Example” + “</h2><br>”

+ “Information About You” + “<br>”

+ “<center><table border>”

+ “<tr>”

+ “<td> Method</td>”

+ “<td>” + request.getMethod() + “</td>”

+ “</tr>”

+ “<tr>”

+ “<td> User</td>”

+ “<td>” + request.getRemoteUser() + “</td>”

+ “</tr>”

+ “<tr>”

+ “<td> Client</td>”

+ “<td>” + request.getRemoteHost() + “</td>”

+ “</tr>”

+ “<tr>”

+ “<td> Protocol</td>”

+ “<td>” + request.getProtocol() + “</td>”

+ “</tr>”);

Enumeration enum1 = request.getParameterNames();

while (enum1.hasMoreElements()) {

String name = (String) enum1.nextElement();

out.println(“<tr>”);

out.println(“<td> Parameter ‘” + name + “‘</td>”);

out.println(“<td>” + request.getParameter(name) + “</td>”);

out.println(“</tr>”);

}

out.println(“</table></center><br><hr><br>”);

// Tạo bảng dữ liệu thông tin về trình chủ

out.println(“<h2><center>”);

out.println(“Servlet Properties</center></h2>”);

out.println(“</tr>”);

out.println(“<center><table border width=80%>”);

Properties props = System.getProperties();

enum1 = props.propertyNames();

while (enum1.hasMoreElements()) {

String name = (String) enum1.nextElement();

out.println(“<tr>”);

out.println(“<td>'” + name + “</td>”);

out.println(“<td>” + props.getProperty(name) + “</td>”);

out.println(“</tr>”);

}

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

}

@Override

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doGet(request, response);

}

/**

* Phương thức khởi tạo của Servlet

* @param cfg các thông tin của môi trường ngoài truyền vào Servlet

* @throws ServletException

*/

@Override

public void init(ServletConfig cfg) throws ServletException {

super.init(cfg);

}

@Override

public void destroy() {

super.destroy();

}

}

Viết trang HTML triệu gọi Servlet

<HTML>

Fisrt Servlet Testing<br>

<FORM ACTION=servlet/CSProperties METHOD= POST>

<INPUT>

<INPUT Value=Call Server>

</FORM>

</HTML>

Chúc các bạn thành công!