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…

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

5. Lớp ServerSocket

Lớp ServerSocket có  đủ mọi thứ ta cần  để viết các server bằng Java. Nó có các constructor để tạo các đối tượng ServerSocket mới, các phương thức để lắng nghe các liên kết trên một cổng xác định, và các phương thức trả về một Socket khi liên kết được thiết lập, vì vậy ta có thể gửi và nhận dữ liệu.

Vòng đời của một server

1. Một ServerSocket mới được tạo ra trên một cổng xác định bằng cách sử dụng một constructor ServerSocket.

2. ServerSocket lắng nghe liên kết đến trên cổng đó bằng cách sử dụng phương thức accept(). Phương thức accept() phong tỏa cho tới khi một client thực hiện một liên kết, phương thức accept() trả về một  đối tượng Socket mà liên kết giữa client và server.

3. Tùy  thuộc vào kiểu server, hoặc phương thức getInputStream(), getOutputStream() hoặc cả hai được gọi để nhận các luồng vào ra để truyền tin với client.

4.  server và client tương tác theo một giao thức thỏa thuận sẵn cho tới khi ngắt liên kết.

5.  Server, client hoặc cả hai ngắt liên kết

6. Server trở về bước hai và đợi liên kết tiếp theo. Read more…

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

4. Socket cho Client

4.1. Các constructor

•  public Socket(String host, int port) throws UnknownHostException, IOException
Hàm này tạo một socket TCP với host và cổng xác định, và thực hiện liên kết với host ở xa.

Ví dụ:

try{
Socket s = new Socket( “www.vnn.vn”,80);
}catch(UnknownHostException e){
System.err.println(e);
}catch(IOException e){
System.err.println(e);
}

Trong hàm này tham số host là hostname kiểu String, nếu host không xác định hoặc máy chủ tên miền không hoạt động thì constructor đưa ra ngoại lệ UnknownHostException. Vì một lý do nào  đó mà không thể mở  được socket thì constructor sẽ  đưa ra ngoại lệ IOException. Có nhiều nguyên nhân khiến cho một liên kết thất bại: host mà ta đang cố gắng kết nối tới không chấp nhận liên kết, kết nối Internet có thể bị ngắt, hoặc vấn đề định tuyến có thể ngăn ngừa các gói tin của ta tới đích.

Ví dụ: Viết chương trình để kiểm tra trên 1024 cổng đầu tiên những cổng nào đang có server hoạt động Read more…

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

Phần 2: Lập trình Socket cho giao thức TCP

1. Mô hình client/server

Mô hình được phổ biến nhất và được chấp nhận rộng rãi trong các hệ thống phân tán là mô hình client/server. Trong mô hình này sẽ có một tập các tiến trình mà mỗi tiến trình đóng vai trò như là một trình quản lý tài nguyên cho một tập hợp các tài nguyên cho trước và một  tập hợp các tiến trình client trong đó mỗi tiến trình thực hiện một tác vụ nào đó cần truy xuất tới tài nguyên phần cứng hoặc phần mềm dùng chung. Bản thân các trình quản lý tài nguyên cần phải truy xuất tới các tài nguyên dùng chung  được quản lý bởi một tiến trình khác, vì vậy một số tiến trình vừa là tiến trình client vừa là tiến trình server. Các tiến trình phát ra các yêu cầu tới các server bất kỳ khi nào chúng cần truy xuất tới một trong các tài nguyên của các server. Nếu yêu cầu là đúng đắn thì server sẽ thực hiện hành động được yêu cầu và gửi một đáp ứng trả lời tới tiến trình client.

Mô hình client/server cung cấp một cách tiếp cận tổng quát  để chia sẻ tài nguyên trong các hệ thống phân tán. Mô hình này có thể được cài đặt bằng rất nhiều môi trường phần cứng và phần mềm khác nhau. Các máy tính  được sử dụng  để chạy các tiến trình client/server có nhiều kiểu khác nhau và không cần thiết phải phân biệt giữa chúng; cả tiến trình client và tiến trình server đều có thể chạy trên cùng một máy tính. Một tiến trình server có thể sử dụng dịch vụ của một server khác.

Mô hình truyền tin client/server hướng tới việc cung cấp dịch vụ. Quá trình trao đổi dữ liệu bao gồm:

1. Truyền một yêu cầu từ tiến trình client tới tiến trình server
2. Yêu cầu được server xử lý
3. Truyền đáp ứng cho client

Mô hình truyền tin này liên quan đến việc truyền hai thông điệp và một dạng đồng bộ hóa cụ thể giữa client và server. Tiến trình server phải nhận thức được thông điệp được yêu cầu ở bước một ngay khi nó đến và hành động phát ra yêu cầu trong client phải được tạm dừng (bị phong tỏa) và buộc tiến trình client ở trạng thái chờ cho tớ khi nó nhận được đáp ứng do server gửi về ở bước ba.

Mô hình client/server thường được cài đặt dựa trên các thao tác cơ bản là gửi (send) và nhận (receive). Read more…

Follow

Get every new post delivered to your Inbox.

Join 156 other followers