HTTP Tunneling Template: Client SideURL currentPage = getCodeBase; String protocol = currentPage.getProtocol; String host = currentPage.getHost; int port = currentPage.getPort; String ur
Trang 1Servers and Applets
+ FormGV: Vũ Đình Hồng Khoa: CNTT – TỨD
Trang 2results within the applet (HTTP tunneling)
Trang 3Giao thức Get và Kết quả
Trang 4{
try
{
SearchSpec spec = commonSpecs[i];
URL searchURL = new URL(spec.makeURL(query, "10"));
String frameName = "results" + i;
Trang 5Ví 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
Trang 6<FRAME SRC="GoogleResultsFrame.html" NAME="results0" >
<FRAME SRC="InfoseekResultsFrame.html" NAME="results1" >
<FRAME SRC="LycosResultsFrame.html" NAME="results2" >
</FRAMESET>
</FRAMESET>
Trang 7Get Request: Initial Result
Trang 9HTTP 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
Trang 10HTTP 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();
Trang 11Using 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
Trang 12Ví dụ: Live Scrolling Data
Trang 13Sending 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) ;
Trang 14Sending 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);
Trang 15Sending 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 ») ;
Trang 16Sending Post Data to
Trang 17Sending Post Data to
Type », «
byteStream writeTo (connection.getOutputStrea m()) ;
Trang 18Sending 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
Trang 19Sending Post Data to Server
Trang 20Bypassing 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
Trang 21– Bắt buộc giao tiếp với server từ đó applet
sẽ được tải lên
– Bắt buộc hạn chế chế độ tường lửa
– Cần phải chạy thêm một máy chủ khác
Trang 22Ghi Chú
• Truyền dữ liệu qua Get and
showDocument
– Có thể truy cập ở bất cứ url nào
– Dùng trình duyệt để xem kết quả
• Truyền dữ liệu qua Get and
Trang 23• Truyền dữ liệu với Post and
UrlConnection
Trang 26• NAME (required), VALUE, SIZE,
MAXLENGTH, DISABLED, READONLY, ONCHANGE, ONSELECT, ONFOCUS,
ONBLUR, ONKEYDOWN, ONKEYPRESS, ONKEYUP
Trang 27• NAME (required), VALUE, SIZE,
MAXLENGTH, DISABLED, READONLY, ONCHANGE, ONSELECT, ONFOCUS,
ONBLUR, ONKEYDOWN, ONKEYPRESS, ONKEYUP
Trang 28• NAME (required), ROWS (required),
COLS (required), WRAP (nonstandard), DISABLED, READONLY, ONCHANGE,
ONSELECT, ONFOCUS, ONBLUR,
ONKEYDOWN, ONKEYPRESS, ONKEYUP
Trang 31Check Boxes
• HTML Element:
• <INPUT TYPE="CHECKBOX" id=" " > (No End Tag)
• Attributes: NAME (required), VALUE,
CHECKED, DISABLED, READONLY,
ONCLICK, ONFOCUS, ONBLUR
Trang 32Radio Buttons
• HTML Element:
• <INPUT TYPE="RADIO" id=" "
VALUE=" " > (No End Tag)
• Attributes:
• NAME (required), VALUE (required), CHECKED, DISABLED, READONLY, ONCLICK, ONFOCUS, ONBLUR
Trang 34Q & A