Posts tagged ‘lap trinh mang’

Ví dụ về Servlet

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). Read more…

Tìm hiểu Servlet – Phần 4

9. Servlet kết nối các cơ sở dữ liệu

Các WebSite ngày nay không chỉ hiển thị những thông tin của các trang HTML tĩnh. Ví dụ, trong thương mại điện tử, một lĩnh vực đang thịnh hành trên thế giới, khách hàng có thể vào một trang Web bán hàng, chọn những mặt hàng cần mua, điền vào phiếu mua hàng sau đó thanh toán (bằng các phương thức trả tín phiếu, check, chuyển khoản, v.v.) thì sẽ nhận được các mặt hàng theo yêu cầu. Như vậy, các thông tin chi tiết về khách hàng phải được lưu trữ trong CSDL ở máy dịch vụ để thực hiện được các dịch vụ thương mại điện tử. Trong những kịch bản như thế, các Website phải được kết nối với các CSDL khác.

Servlet và JDBC là hai công cụ rất hiệu quả cho người lập trình ứng dụng Web kết nối Web với CSDL.

9.1 Vai trò của Servlet trong mô hình kết nối CSDL

Các chương trình ứng dụng trên mạng hiện nay đang chuyển từ mô hình Client/Server sang mô hình ba tầng, hoặc n-tầng. Trong mô hình ba tầng, Client không thực hiện truy vấn trực tiếp các CSDL mà thông qua tầng trung gian ở Server để truy vấn vào các CSDL.

Mô hình ba tầng có ưu điểm là nó tách riêng phần biểu diễn ảo (ở phía Client) ra khỏi phần logic nghiệp vụ (tầng trung gian) và dữ liệu thô ở Server. Do vậy, nó cho phép nhiều Client có thể truy cập vào cùng một dữ liệu, cùng một nghiệp vụ và nhiều loại chương trình Java thực hiện như chương trình ứng dụng độc lập, chương trình Applet hay chương trình Web. Servlet có một vị trí quan trọng trong việc truy cập vào CSDL ở tầng trung gian. Ví dụ, hãy tưởng tượng có một chương trình đặt mua hàng trên mạng. Nếu không có tầng trung gian thì chương trình này phải kết nối trực tiếp với CSDL trên máy chủ và máy chủ phải ghi lại đơn hàng, cập nhật lại các trường dữ liệu trong CSDL (trừ đi những mặt hàng đã bán theo đơn đặt mua). Chương trình của khách có thể bị ngắt nếu Server của CSDL bị thay đổi theo một cách nào đó. Hoặc có thể một ai đó can thiệp vào chương trình của khách, Server nhận được đơn đặt hàng nhưng không nhận được sự thanh toán của khách, mặc dù khách hàng đã thực hiện thanh toán theo đơn đặt hàng, v.v. Read more…

Tìm hiểu Servlet – Phần 3

7. Các phiên làm việc Session

Session được sử dụng để duy trì sự kết nối giữa Client và Server.  Khi trình duyệt yêu cầu Web Server cung cấp một trang tài liệu, nó thiết lập một kết nối, lấy về nội dung của trang yêu cầu và sau đó huỷ bỏ kết nối đó ngay lập tức. Để lưu lại dấu vết các trạng thái mà trình duyệt yêu cầu thực hiện trước đó, Web Server cài đặt sẵn đối tượng của  HttpSession. HttpSession dựa vào khái niệm Cookie qui định giữa Server và Client. Cookie là một mẩu tin được gửi cho trình duyệt ở Client khi có yêu cầu về một trang tin. Mỗi khi trình duyệt gửi một yêu cầu cho Server, nó lại chuyển mẩu tin Cookie trả lại cho Server. Dựa vào các Cookie mà chương trình Server và Client có được những thông tin trạng thái thông báo cho nhau.

Giao diện HttpSession có 3 phương thức thường xuyên sử dụng:

  • public void setAttribute(String name, Object value) throws IllegalStateException: Kết hợp một tên khoá với giá trị của biến.
  • public Object setAttribute(String name) throws IllegalStateException: Trả về đối tượng tương ứng với thuộc tính có tên là name.
  • public void removeAttribute(String name) throws IllegalStateException: Loại bỏ thuộc tính có tên là name. Read more…

Lập trình mạng trong JAVA(Phần 9)

Lập trình ứng dụng cho giao thức UDP

2. Lớp DatagramPacket

Các datagram UDP đưa rất ít thông tin vào datagram IP. Header UDP chỉ  đưa tám byte vào header IP. Header UDP bao gồm số hiệu cổng nguồn và đích, chiều dài của dữ liệu và header UDP, tiếp đến là một checksum tùy chọn. Vì mỗi cổng được biểu diễn bằng hai byte nên tổng số cổng UDP trên một host sẽ là 65536. Chiều dài cũng được biểu diễn bằng hai byte nên số byte trong datagram tối đa sẽ là 65536 trừ đi tám 8 byte dành cho phần thông tin header.

Trong Java, một datagram UDP được biểu diễn bởi lớp DatagramPacket:

•  public final class DatagramPacket extends Object

Lớp này cung cấp các phương thức để nhận và thiết lập các địa chỉ nguồn, đích từ header IP, nhận và thiết lập các thông tin về cổng nguồn và đích, nhận và thiết lập độ dài dữ liệu. Các trường thông tin còn lại không thể truy nhập được từ mã Java thuần túy.

DatagramPacket sử dụng các constructor khác nhau tùy thuộc vào gói tin  được sử dụng để gửi hay nhận dữ liệu.

2.1. Các constructor để nhận datagram

Hai constructor tạo ra các đối tượng DatagramSocket mới để nhận dữ liệu từ mạng:

•  public DatagramPacket(byte[] b, int length)

•  public DatagramPacket(byte[] b, int offset, int length)

Khi một socket nhận một datagram, nó lưu trữ phần dữ liệu của datagram  ở trong vùng đệm b bắt đầu tại vị trí b[0] và tiếp tục cho tới khi gói tin được lưu trữ hoàn toàn hoặc cho tới khi lưu trữ hết length byte. Nếu sử dụng constructor thứ hai, thì dữ liệu được lưu trữ bắt đầu từ vị trí b[offset]. Chiều dài của b phải nhỏ hơn hoặc bằng b.length-offset. Nếu ta xây dựng một DatagramPacket có chiều dài vượt quá chiều dài của vùng đệm thì constructor sẽ đưa ra ngoại lệ IllegalArgumentException.  Đây là kiểu ngoại lệ RuntimeException nên chương trình của ta không cần thiết phải đón bắt ngoại lệ này.

Ví dụ, xây dựng một DatagramPacket để nhận dữ liệu có kích thước lên tới 8912 byte

byte b[]=new byte[8912];

DatagramPacket dp=new DatagramPacket(b,b.length);

2.2. Constructor để gửi các datagram Read more…

Lập trình mạng trong JAVA(Phần 8)

Lập trình ứng dụng cho giao thức UDP

1. Tổng quan về giao thức UDP

TCP/IP là một họ các giao thức được gọi là họ giao thức IP, bao gồm bốn tầng. Cần nhớ rằng TCP/IP không phải là một giao thức mà thực sự là một họ các giao thức, và bao gồm các giao thức mức thấp khác như IP, TCP, và UDP. UDP nằm ở tầng giao vận, phía trên giao thức IP. Tầng giao vận cung cấp khả năng truyền tin giữa các mạng thông qua các gateway. Nó sử dụng các địa chỉ IP để gửi các gói tin trên Internet hoặc trên mạng thông qua các trình điều khiển thiết bị khác nhau. TCP và UDP là một phần của họ giao thức TCP/IP; mỗi giao thức có những ưu và nhược điểm riêng của nó.

Giao thức UDP là giao thức đơn giản, phi liên kết và cung cấp dịch vụ trên tầng giao vận với tốc độ nhanh. Nó hỗ trợ liên kết một-nhiều và thường được sử dụng thường xuyên trong liên kết một-nhiều bằng cách sử dụng các datagram multicast và unicast.

Giao thức IP là giao thức cơ bản của Internet. TCP và UDP đều là hai giao thức tầng giao thức vận trên cơ sở của giao thức IP. Hình dưới đây chỉ ra cách ánh xạ mô hình OSI ánh xạ vào kiến trúc TCP/IP và họ giao thức TCP/IP.

1.1. Một số thuật ngữ UDP Read more…

Tìm hiểu Servlet – Phần 2

5. Chu trình sống của các Servlet

Mọi Servlet đều có chu trình sống như sau:

  • Server nạp và khởi tạo Servlet
  • Servlet xử lý các yêu cầu của các Client
  • Server huỷ bỏ Servlet khi không còn cần thiết.

Như trên đã phân tích, mọi Servlet đều có một chu trình sống nhất định. Nó được khởi tạo (nạp về), xử lý các yêu cầu của Client và sau khi hoàn tất các dịch vụ thì bị Server huỷ bỏ (Hình 6.4). Read more…

Tìm hiểu Servlet – Phần 1

1. Giới thiệu về Servlet

Hiện nay, trong lập trình có một xu hướng rất quan trọng đang được tập trung phát triển ứng dụng, đó là xây dựng các chương trình dịch vụ Java ở phía máy chủ (Server).

Servlet là thành phần chính được sử dụng để phát triển các chương trình dịch vụ Java ở phía máy chủ. Các Servlet là các chương trình Java thực hiện ở các ứng dụng Server (tên gọi “Servlet” cũng gần giống như “Applet” ở phía máy Client) để trả lời cho các yêu cầu của Client. Các Servlet không bị ràng buộc chặt với một giao thức Client-Server cụ thể nào cả, nhưng giao thức thường được sử dụng là HTTP, do vậy, khi nói tới Servlet nghĩa là nói tới HTTP Servlet. Servlet là sự phát triển mở rộng của CGI để đảm bảo Server thực hiện được các chức năng của mình. Ta có thể sử dụng Servlet của Java để tuỳ chỉnh lại một dịch vụ bất kỳ, như Web Server, Mail Server, v.v.

Web Server hiển thị các tư liệu được viết trong HTML và hồi đáp cho yêu cầu của người sử dụng qua HTTP. Các tư liệu HTML chứa các văn bản được đánh dấu (định dạng) để các trình duyệt như IE, Netscape đọc được.

Một trình duyệt chấp nhận đầu vào ở dạng HTML, khi người sử dụng nhấn một nút để yêu cầu một số thông tin nào đó, một Servlet đơn giản được gọi để xử lý các yêu cầu đó. Các công việc chính của Servlet được mô tả khái quát trong hình 1, bao gồm:

  • Đọc các dữ liệu tường minh được Client gửi đến từ các yêu cầu (dữ liệu theo các khuôn dạng – form data).
  • Đọc các dữ liệu không tường minh được Client gửi đến từ các yêu cầu (dữ liệu trong phần đầu của yêu cầu – request headers).
  • Xử lý và lưu trữ các dữ liệu được cung cấp dưới dạng HTML.
  • Gửi trả lời dữ liệu tường minh cho Client (dạng HTML), cung cấp các nội dung động, ví dụ trả lời yêu cầu Client về các câu truy vấn vào các CSDL.
  • Quản lý các thông tin trạng thái và trả lời dữ liệu không tường minh cho Client (các mã trạng thái và các phần đầu của trả lời).

Hình 1 Vai trò của Servlet Read more…

Follow

Get every new post delivered to your Inbox.

Join 161 other followers