intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Servers and Applets + Form

Chia sẻ: Nguyen Uyen | Ngày: | Loại File: PDF | Số trang:34

60
lượt xem
4
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Cách thức GET dữ liệu và hiển thị kết quả trên trình duyệt. • Get và hiển thị kết quả trên Applet (HTTP tunneling) • Using object serialization to exchange highlevel data structures between applets and servlets • Sending POST data and processing the results within the applet (HTTP tunneling)

Chủ đề:
Lưu

Nội dung Text: Servers and Applets + Form

  1. Servers and Applets + Form GV: Vũ Đình Hồng Khoa: CNTT – TỨD
  2. Nội Dung • Cách thức GET dữ liệu và hiển thị kết quả trên trình duyệt. • Get và hiển thị kết quả trên Applet (HTTP tunneling) • Using object serialization to exchange high- level data structures between applets and servlets • Sending POST data and processing the results within the applet (HTTP tunneling) • Bypassing the HTTP server altogether
  3. Giao thức Get và Kết quả trả về • Hiển thị applet - try howDocument s{ URL programURL new URL(baseURL = + "?" + someData); getAppletContext().showDocument(programURL); } catch(MalformedURLException mue) { ... }; •String someData = mã hoá URL được name1 + "=" + URLEncoder.encode(val1) + "&" + name2 "=" + URLEncoder.encode(val2) + "&" + nameN + "=" + URLEncoder.encode(valN);
  4. Ví dụ:Applet public class Search Applet extend Applets implements ActionListeners { public void actionPerformed (ActionEvent event) { String query = URLEncoder.encode(queryField.getText()); SearchSpec[] commonSpecs = SearchSpec.getCommonSpecs(); for(int i=0; i
  5. Ví dụ:Utility Class public class SearchSpec { private String name, baseURL, numResultsSuffix; private static SearchSpec[] commonSpecs = { new SearchSpec(“google”,”http://www.google.com/search?q=“, ”&num=“),…}; public String makeURL(String searchString, String numResults) { return(baseURL + searchString + numResultsSuffix + numResults); } … }
  6. Ví dụ:HTML File Parallel Search Engine Results
  7. Get Request: Initial Result
  8. HTTP Tunneling • Ý tưởng – Mở một kết nối socket đến cổng 80 trên server và giao tiếp thông qua HTTP • Thuận lợi – Giao tiếp thông qua firewall – Chương trình Server-side chỉ cần trả về dữ liệu,không phải là 1 tài liệu HTML đầy đủ • Bất lợi – Có thể chỉ truyền liên mạng đến server mà từ đó các được load – Applet,không phải các trình duyệt,nhận được các phản hồi • Không hiển thị dễ dàng các HTML
  9. HTTP Tunneling and GET Requests • Tạo 1 đối tượng đề cập đến URL máy chủ của applet URL dataURL = new URL(…); • Tạo 1 đối tương URLConnection URLConnection connection = DataURL.openConnection(); • Hướng dẫn các trình duyệt không lưu các dữ liệu URL connection.setUseCaches(false); • Thiết lập bất kì các tiêu đề HTML mong muốn • Thiết lập các luồng dữ liệu đầu vào – Gọi connection.getInputStream; bao bọc bởi các luông cấp cao hơn • Đọc dữ liệu được gửi từ server – Ví dụ, gọi readLine trên BufferedReader • Đóng các luồng dữ liệu đầu vào
  10. HTTP Tunneling Template: Client Side URL currentPage = getCodeBase(); String protocol = currentPage.getProtocol(); String host = currentPage.getHost(); int port = currentPage.getPort(); String urlSuffix = "/servlet/SomeServlet"; URL dataURL = new URL(protocol, host, port, urlSuffix); URLConnection connection = dataURL.getConnection(); connection.setUseCaches(false); connection.setRequestProperty("header", "value"); BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String line; while ((line = in.readLine()) != null) { doSomethingWith(line); } in.close();
  11. Using Object Serialization with HTTP Tunneling • Ý tưởng – Chương trình phía Server (servlet) gửi 1 đối tượng java – Chương trình phía Client (applet) đọc nó • Chương trình mẫu phía Client (applet): ObjectInputStream in = new ObjectInputStream( connection.getInputStream()); SomeClass object = (SomeClass)in.readObject(); doSomethingWith(object);
  12. Ví dụ: Live Scrolling Data
  13. Sending Post Data to Server • Applet gửi yêu cầu đến máy chủ • Quá trình phản hồi trực tiếp Url currentPage = getCodeBase() ; String protocol = currentPage.getProtocol() ; String host = currentPage.getHost() ; Int port = currentPage.getPort() ; String urlSuffix = « /servlet/Somservlet » ; URL dataURL = new URL(protocol, host, port, urlSuffix) ;
  14. Sending Post Data to Server • Quá trình phản hồi trực tiếp(tt) URLConnection connection = dataURL.openConnection () ; Connection.setUseCaches(false) ; Connection.setDoOutput(true); • Kiểu ký tự và kiểu nhị phân ByteArrayOutputStream byteStream = new ByteArrayOutputStream(512);
  15. Sending Post Data to Server • Kiểu ký tự và kiểu nhị phân (tt) PrintWriter out = new PrintWriter(byteStream, true); Out.Print(data) ; Out.flush() ; Connection.setRequestProperty(« Cont ent-Length », String.valueOf(byteStream.size())) ; Connection.setRequestProperty(« Cont ent-Type », «application/x-www-form- urlencoded ») ;
  16. Sending Post Data to Server • Kiểu ký tự và nhị phân (tt) byteStream.writeTo(connection.getOutputStr eam()) ; • Đăng dữ liệu ByteArrayOutputStream byteStream = new ByteArrayOutputStream(512) ; ObjectOutputStream out = new ObjectOutputStream(byteStream) ; Out.writeObject(data);
  17. Sending Post Data to Server • Đăng dữ liệu (tt) Out.flush() ; Connection.setRequestProperty(« Content- Length », String.valueOf(byteStream.size())) ; Connection.setRequestProperty(« Content- Type », «application/x-www-form- urlencoded ») ; byteStream.writeTo(connection.getOutputStrea m()) ;
  18. Sending Post Data to Server • Gửi dữ liệu đến Servlet sẽ được trả về một trang web HTML sẽ hiển thị form dữ liệu mà nó đã nhận được
  19. Sending Post Data to Server
  20. Bypassing the HTTP server • Nếu bạn đang sử dụng applet thì bạn không cần phải thông qua giao thức của http – JDBC (Java Db Connectivity) – RMI – SOAP (perhap via Jax-RPC) – Raw sockets
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2