Lập trình mạng – Chương 5 1
LẬP TRÌNH WEB – CGI
5.1 Giới thiệu về lập trình web
5.2 HTMLs và FORMs
5.3 Lập trình web ở Client
5.4 DHTML
5.5 Phương pháp lập trình web với CGI
Lập trình mạng – Chương 5 2
5.1 Giới thiệu về lập trình web
• Hệ thống WWW tĩnh:
• Tập hợp các trang HTML
• Không tương tác được với user
• Khó khăn trong việc cập nhật thông tin thường xuyên.
• Ứng dụng web:
• Có thể tương tác với user.
• Có thể tương tác với các ứng dụng khác.
Lập trình mạng – Chương 5 3
5.1 Giới thiệu về lập trình web
• Các đặc điểm của ứng dụng web:
• Không phải là một ứng dụng độc lập, là ứng dụng chạy trên nền web-server.
• Người lập trình có thể thực hiện các thao tác trên ứng dụng web như với một
ứng dụng độc lập.
• Có thể lấy thông tin từ user.
Lập trình mạng – Chương 5 4
5.2 HTMLs và FORMs
• HTML(HyperText Markup Language):
• Là ngôn ngữ dùng để biểu diễn trang web thông qua các tags.
• Thông qua các tags có thể định dạng cách hiển thị trang web.
• Một trang HTML có thể chèn các hình ảnh, âm thanh trong nó, có thể liên kết
đến các trang HTML khác.
Lập trình mạng – Chương 5 5
5.2 HTMLs và FORMs
• Các tags HTML cơ bản:
• Khung của một file HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Tiêu đề của trang web</title>
</head>
<body>
<!-- Nội dung trang web được trình bày ở đây-->
</body>
</html>
Lập trình mạng – Chương 5 6
5.2 HTMLs và FORMs
• Các tags HTML cơ bản:
• Tiêu đề:
• <Hn>…</Hn> (n: 1=>6)
• Phân đoạn:
• <p> … </p>
• Kiểu chữ:
• In đậm: <b>…</b>
• In nghiêng: <i> … </i>
• Gạch dưới: <u> … </u>
Lập trình mạng – Chương 5 7
5.2 HTMLs và FORMs
• Các tags HTML cơ bản:
• Danh sách:
• Đánh thứ tự: <ol> [<li>]+ </ol>
• Không đánh thứ tự: <ul> [<li>]+ </ul>
• Bảng:
<table border="1" width="100%">
[<tr> [<td> … </td>]+ </tr>]+
</table>
Trộn các ô: <td colspan=“số cột trộn">&nbsp;</td>
Lập trình mạng – Chương 5 8
5.2 HTMLs và FORMs
• Các tags HTML cơ bản:
• Chèn hình ảnh:
• <img border="#" src="*" width="*" height="*">
• Tạo điểm đánh dấu (bookmark): <a name="*">
• Liên kết đến bookmark:
• <a href="#bookmark-name"> … </a>
• Liên kết đến một trang web khác:
• <a href="path"> … </a>
• Liên kết đến địa chỉ e-mail:
• <a href="mailto:e-mail address"> … </a>
Lập trình mạng – Chương 5 9
5.2 HTMLs và FORMs
• Các tags HTML cơ bản:
• Giữ định dạng đoạn khi soạn thảo:
• <pre> … </pre>
• Các ký tự đặc biệt:
• Khoảng trắng: &nbsp;
• © : &copy;
• ® : &reg;
• < : &lt;
• > : &gt;
• & : &amp;
Lập trình mạng – Chương 5 10
5.2 HTMLs và FORMs
• Các tags HTML cơ bản:
• Số mũ:
• Superscript: <sup> … </sup>
• Subscript: <sub> … </sup>
• Định dạng font chữ:
• <font face=“” size=“” color=“”>…</font>
• Đường ngăn cách:
• <hr size=“” width=“”>
• Xuống dòng trong một đoạn:
• <br>
Lập trình mạng – Chương 5 11
5.2 HTMLs và FORMs
• Tạo các frame:
• Khái niệm frame trong HTML cho phép hiển thị nhiều trang
HTML đồng thời.
• Minh họa:
Lập trình mạng – Chương 5 12
5.2 HTMLs và FORMs
• Cú pháp tạo frame:
<frameset [name=“”] {cols|rows}=“[%, ]*{%}”>
[<frame src=“file HTML” [name=“”] [target=“”]>]+
[<noframes>
Your browser doesn't support them.
</noframes>]
</frameset>
Lập trình mạng – Chương 5 13
5.2 HTMLs và FORMs
• FORMs
• Là các thành phần của HTML cho phép user có thể nhập thông tin vào.
• Tương tự như giao diện của một ứng dụng bao gồm: textbox, listbox,
checkbox, …
• Dữ liệu được do user nhập được truyền giữa web-client và web-server thông
qua FORMs
• Dùng các tags để thiết kế.
Lập trình mạng – Chương 5 14
5.2 HTMLs và FORMs
• FORMs
• Cấu trúc cơ bản của một form:
<FORM ACTION=“file" METHOD={GET|POST}>
[<INPUT TYPE=“” NAME=“” VALUE="">]+
</FORM>
• Các loại (type) INPUT:
• TEXT: là textbox dùng để nhập dữ liệu.
• Cú pháp:
<INPUT [TYPE=TEXT] NAME="text-id" [SIZE=nn] [MAXLENGTH=nn] [VALUE="default text"]>
Lập trình mạng – Chương 5 15
5.2 HTMLs và FORMs
• FORMs(tt)
• Các loại (type) INPUT:
• SUBMIT: truyền dữ liệu form đến ứng dụng web
• Cú pháp: <INPUT TYPE=SUBMIT [NAME="button-id"]
[VALUE="text"]>
• RESET:đưa nội dung của form trở về giá trị ban đầu
• Cú pháp: <INPUT TYPE=RESET [VALUE=“text"]>
• BUTTON: nút nhấn bất kỳ
• Cú pháp: <INPUT TYPE=BUTTON [NAME="button-id"]
[VALUE="text"]>
Lập trình mạng – Chương 5 16
5.2 HTMLs và FORMs
• FORMs(tt)
• Các loại (type) INPUT:
• RATIO: chọn lựa một trong nhiều
• Cú pháp: <INPUT TYPE=RADIO NAME="radio-set-id" VALUE="choice-
id" [checked]>
<input type="radio" value="V1" checked name="R1">Option 1
<br><input type="radio" value="V2" name="R1">Option 2
<br><input type="radio" value="V2" name="R1">Option 3
Lập trình mạng – Chương 5 17
5.2 HTMLs và FORMs
• FORMs(tt)
• Các loại (type) INPUT:
• CHECKBOX: lựa chọn một hoặc nhiều
• Cú pháp: <INPUT TYPE=CHECKBOX NAME="id"
VALUE="choice-id" [CHECKED]>
• Ví dụ:
<input type="checkbox" name="C1“ value="ON">Check 1 <br>
<input type="checkbox" name="C1" value="ON" checked>Check 2
Lập trình mạng – Chương 5 18
5.2 HTMLs và FORMs
• FORMs(tt)
• Các loại (type) INPUT:
• HIDDEN: dữ liệu không hiển thị
• Cú pháp: <INPUT TYPE=HIDDEN NAME="id"
VALUE="data">
• Nhập vùng văn bản: TEXTAREA
• <TEXTAREA NAME="id" [COLS=nn] [ROWS=nn]>default text</TEXTAREA>
Lập trình mạng – Chương 5 19
5.2 HTMLs và FORMs
• FORMs(tt)
• Lựa chọn listbox: SELECT
• <SELECT NAME="id" [SIZE=nn] [MULTIPLE]>
[<OPTION [VALUE=“value"] [SELECTED]>text ]+
</SELECT>
<select size="1" name="D1">
<option value="501097">Mạng máy tính</option>
<option value="501016">Lập trình mạng</option>
</select>
Lập trình mạng – Chương 5 20
5.3 Lập trình web ở Client
• Các trang HTML web có thể được lập trình để thực hiện các thao tác
thực thi trên web client.
• Các phương pháp phổ biến để lập trình hiện nay:
• Script (Javascript, Vbscript)
• Java Applet
• ActiveX Control
Lập trình mạng – Chương 5 21
5.3 Lập trình web ở Client
• Javascript ở client:
• Ngôn ngữ kịch bản chạy trên web client. Có thể làm việc khác nhau trên các
loại web browser khác nhau.
• Code được chèn xen kẽ với các tags HTML
• Các đoạn mã Javasript được chạy dựa vào các sự kiện của các phần tử HTML
• Cú pháp các câu lệnh giống ngôn ngữ Java
• Không tương tác được với server
Lập trình mạng – Chương 5 22
5.3 Lập trình web ở Client
• Cú pháp cho một đoạn code Javascript:
<script language=“JavaScript”>
//các khai báo biến
[var variable;]*
//các lệnh gọi hàm và các hàm
function function-name([agrv]*){
//các câu lệnh khai báo và thực thi
[return [value];]
}
</script>
• Sử dụng file Javascript (*.js) đã có:
<script language="JavaScript" src="*.js"></script>
Lập trình mạng – Chương 5 23
5.3 Lập trình web ở Client
• Các đối tượng được xây dựng sẵn trong JavaScript:
• window: chứa các thuộc tính liên quan đến cửa sổ hiện thời
• document: chứa các thuộc tính trong trang web
• location: các thuộc tính về địa chỉ trang web
• history: các thuộc tính về vị trí mà web browser đã đến
Lập trình mạng – Chương 5 24
5.3 Lập trình web ở Client
• Mỗi phần tử trong trang HTML đều có thể coi là một đối tượng, có
thể khai báo sự kiện để gọi hàm Javascript.
• Cú pháp:
<tags-name [properties]*
[event-name=“procedure call” ]*>
• Các sự kiện có thể dùng:
• onClick: click chuột vào đối tượng.
• onFocus: focus vào đối tượng trong form.
Lập trình mạng – Chương 5 25
5.3 Lập trình web ở Client
• Javascript
• Các sự kiện có thể dùng(tt):
• onMouseOver: di chuyển chuột vào trên đối tượng.
• onMouseOut: di chuyển chuột ra khỏi đối tượng.
• onChange: thay đổi giá trị của các đối tượng chứa văn bản.
• onBlur: chuyển focus khỏi đối tượng trong form.
• onSelect: chọn phần tử trong listbox.
• onLoad: xảy ra khi một document được load.
Lập trình mạng – Chương 5 26
5.3 Lập trình web ở Client
• Javascript
• Có thể dùng để thiết lập/kiểm tra các dữ liệu nhập trên form
ở phía web client.
• Truy xuất các phần tử trong form thông qua Javascript
Các cú pháp bên dưới dùng
form = window.document.form-name
• checkbox
form.check-name.checked = {true|false}
Trường hợp dùng nhiều checkbox cùng tên(nhóm)
var check_len = form.check-name.length;
for (i = 0; i < len; i++){
form.check-name[i].checked={true|false};
}
Lập trình mạng – Chương 5 27
5.3 Lập trình web ở Client
• Javascript
• Option button
form.option_name[index].checked = {true|false}
• Select
form.select_name.options[index].selected = {true|false}
Chỉ số hiện thời đang được chọn:
form.select_name.selectedIndex
• Text
form.text_name.value
Lập trình mạng – Chương 5 28
5.3 Lập trình web ở Client
• Kiểm tra phần tử SELECT
var select_value;
function dropDownMenu() {
var myindex=document.forms[0].menu.selectedIndex;
if (myindex==0) {
alert("nYou must make a selection from the drop-down menu.");
document.forms[0].menu.focus();
}
else {
select_value =document.forms[0].menu.options[myindex].value;
return true;
}
}
Lập trình mạng – Chương 5 29
5.3 Lập trình web ở Client
function isEmail() {
if (document.forms[0].elements[1].value == '') {
alert ("n The E-Mail field is blank. nn “+
“Please enter your E-Mail address.")
document.forms[0].elements[1].focus();
return false;
}
if (document.forms[0].elements[1].value.indexOf ('@',0) == -1 ||
document.forms[0].elements[1].value.indexOf ('.',0) == -1) {
alert ("n The E-Mail field requires a "@" and a ".""+
"be used. nnPlease re-enter your E-Mail address.")
document.forms[0].elements[1].select();
document.forms[0].elements[1].focus();
return false;
}
return true;
}
Lập trình mạng – Chương 5 30
5.3 Lập trình web ở Client
• Java Applet:
• Là một ứng dụng được viết bằng Java, nhúng trong trang HTML.
• Khi trang HTML có chứa tag applet được gọi, class applet được tải về máy
client và thực thi trên máy client.
• Một ứng dụng applet phải thừa kế class java.applet.Applet
• Có thể thực hiện các thao tác như một chương trình Java, tuy nhiên bị hạn
chế một số chức năng vì tính bảo mật cho máy client.
Lập trình mạng – Chương 5 31
5.3 Lập trình web ở Client
//file SampleApplet.java
import java.applet.*; import java.awt.*;
public class SampleApplet extends Applet {
String text = "error"; int x = 0; int y = 20;
public void init() {
text = getParameter("text");
try { x = Integer.parseInt(getParameter("x"));
y = Integer.parseInt(getParameter("y")); }catch(NumberFormatException ex){ }
}
public void paint(Graphics g) {
g.setFont(new Font("TimesRoman",Font.BOLD+
Font.ITALIC,36));
g.drawString(text,x,y);
}
}
Lập trình mạng – Chương 5 32
5.3 Lập trình web ở Client
sample.html
<HTML> <HEAD> <TITLE>Using the Applet Tag
</TITLE> </HEAD>
<BODY>
<H1>An Applet that Displays Text at a Designated Location</H1>
<APPLET CODE="SampleApplet.class" HEIGHT=300 WIDTH=300>
<PARAM NAME="text" VALUE="Applets are fun!">
<PARAM NAME="x" VALUE="50">
<PARAM NAME="y" VALUE="50">
Text displayed by browsers that are not Java-enabled.
</APPLET>
</BODY>
</HTML>
Lập trình mạng – Chương 5 33
5.3 Lập trình web ở Client
• Hoạt động của một Applet
• Được web browser tải mã(byte code) về máy client.
• Method init() sẽ được gọi để khởi động các thông số.
• Method start() được gọi để thực thi.
• Method stop() được gọi khi người dùng thoát khỏi applet
• Method destroy() được thực thi khi applet kết thúc.
• ActiveX Control: tương tự như Java Applet, được viết bởi các công
nghệ của Mircosoft.
Lập trình mạng – Chương 5 34
5.4 DHTML
• DHTML (Dynamic HTML) là trang HTML có chứa các đoạn mã
JavaScript tạo các hiệu ứng, thay đổi các phần tử trong trang HTML.
• DHTML kết hợp giữa HTML, Javascript và Cascading Style Sheets(CSS).
• CSS là sự kết hợp giữa các tags HTML và style. Style có thể chứa nhiều
thuộc tính.
Lập trình mạng – Chương 5 35
5.4 DHTML
• Mọi tags HTML đều có style. Javascript có thể dựa trên các biến cố để
thay đổi các thuộc tính của style.
• Mỗi phần tử trong trang HTML đều có thể được gán ID (khác với
name) và có các thuộc tính style.
• Có thể dùng tag <div id=“”>…</div>
• Mỗi web browser có thể thực thi một số lệnh khác nhau.
Lập trình mạng – Chương 5 36
5.4 DHTML
• Phát hiện loại web browser:
• Dùng các thuộc tính appName và appVersion của đối tượng navigator
var browser_name= navigator.appName;
var browser_version = navigator.appName;
alert(“You use browser “+browser_name+” version “+ browser_version);
• Phân biệt hai loại chính:
if(document.all){ //IE
the_div=eval(“window.document.all.”+div_name+”.style”);
}else if(document.layers){//Netscape
the_div=eval(“window.document.all.”+div_name);
}
Lập trình mạng – Chương 5 37
5.4 DHTML
<HTML>
<HEAD>
<TITLE>Javascipt example about timer</TITLE>
<SCRIPT language="JavaScript">
<!--
var second_counter=0, counter=0;
function my_timer(){
D = new Date();
seconds= D.getSeconds();
if(seconds!=second_counter) counter++;
second_counter=seconds;
if(counter>=1000) counter=0;
document.images[0].src= get_images(counter/100);
document.images[1].src= get_images((counter%100)/10);
document.images[2].src= get_images(counter%10);
SecondText.innerText=counter;
setTimeout('my_timer()',1000);
}
Lập trình mạng – Chương 5 38
5.4 DHTML
function get_images(number){
var newNum= Math.floor(number);
return "../images/"+newNum+".jpg";
}
-->
</SCRIPT>
</HEAD>
<BODY onload='my_timer()'>
<P><FONT face=System>Timer :
<IMG alt="" src="../images/0.jpg" width="13" height="23">
<IMG alt="" src="../images/0.jpg" width="13" height="23">
<IMG alt="" src="../images/0.jpg" width="13" height="23">
<FONT face="Arial Black" ID="SecondText">000</FONT> seconds</FONT></P>
</BODY>
</HTML>
Lập trình mạng – Chương 5 39
5.5 Lập trình web với CGI
• Trang HTML chỉ chứa các nội dung cố định hoặc có thể thao tác thay
đổi qua DHTML ở client
• Nhu cầu sử dụng các trang web như một ứng dụng (giao tiếp với user,
tìm kiếm, nội dung thay đổi, tương tác các ứng dụng, với
database…)=> ứng dụng web
• CGI (Common Gateway Interface) là một chuẩn (standard) để viết ứng
dụng web
Lập trình mạng – Chương 5 40
5.5 Lập trình web với CGI
• Một ứng dụng web theo chuẩn CGI có các đặc điểm:
• Là ứng dụng chạy trên nền web server.
• Nhận thông tin từ web browser và xuất thông tin để web browser hiển thị
thông qua web server.
• Ứng dụng có thể được viết với bất cứ ngôn ngữ lập trình có standard input và
standard output. (C/C++, Perl, Shell script, Dos shell…)
Lập trình mạng – Chương 5 41
5.5 Lập trình web với CGI
• Cách thức hoạt động của ứng dụng web CGI:
• Web server nhận request ứng dụng CGI từ browser.
• Web server gọi ứng dụng CGI, truyền các thông số bằng các biến môi
trường(thông qua standard input).
• Ứng dụng web CGI xử lý, giao tiếp với các ứng dụng khác (database, mail…),
xuất kết quả dạng HTML qua standard output đến web server.
• Web server nhận kết quả và trả về cho browser.
Lập trình mạng – Chương 5 42
5.5 Lập trình web với CGI
• Hình vẽ minh họa hoạt động CGI
Lập trình mạng – Chương 5 43
5.5 Lập trình web với CGI
• Ví dụ (Perl):
1 #!/usr/bin/perl
2 # A very common echo script on just about every server
3 $| = 1;
4 print "Content-type: text/plainnn";
5 print "CGI/1.0 test script reportnn";
6 if ($ENV{'REQUEST_METHOD'} eq "POST") {
7 $form = <STDIN>;
8 print "$form n";
9 } else {
10 print "argc is $#ARGV nargv is ";
11 while (@ARGV) {
12 $ARGV=shift;
13 print "$ARGV ";
14 }
15 }
Lập trình mạng – Chương 5 44
5.5 Lập trình web với CGI
• Ví dụ (Perl):
16 print "n";
17 #
18 print "SERVER_SOFTWARE = $ENV{'SERVER_SOFTWARE'}n";
19 print "SERVER_NAME = $ENV{'SERVER_NAME'}n";
20 print "GATEWAY_INTERFACE = $ENV{'GATEWAY_INTERFACE'}n";
21 print "SERVER_PROTOCOL = $ENV{'SERVER_PROTOCOL'}n";
22 print "SERVER_PORT = $ENV{'SERVER_PORT'}n";
23 print "SERVER_ROOT = $ENV{'SERVER_ROOT'}n";
24 print "REQUEST_METHOD = $ENV{'REQUEST_METHOD'}n";
25 print "HTTP_AccEPT = $ENV{'HTTP_AccEPT'}n";
26 print "PATH_INFO = $ENV{'PATH_INFO'}n";
27 print "PATH = $ENV{'PATH'}n";
28 print "PATH_TRANSLATED = $ENV{'PATH_TRANSLATED'}n";
29 print "SCRIPT_NAME = $ENV{'SCRIPT_NAME'}n";
Lập trình mạng – Chương 5 45
5.5 Lập trình web với CGI
• Ví dụ (Perl):
30 print "QUERY_STRING = $ENV{'QUERY_STRING'}n";
31 print "QUERY_STRING_UNESCAPED =
$ENV{'QUERY_STRING_UNESCAPED'}n";
32 print "REMOTE_HOST = $ENV{'REMOTE_HOST'}n";
33 print "REMOTE_IDENT = $ENV{'REMOTE_IDENT'}n";
34 print "REMOTE_ADDR = $ENV{'REMOTE_ADDR'}n";
35 print "REMOTE_USER = $ENV{'REMOTE_USER'}n";
36 print "AUTH_TYPE = $ENV{'AUTH_TYPE'}n";
37 print "CONTENT_TYPE = $ENV{'CONTENT_TYPE'}n";
38 print "CONTENT_LENGTH = $ENV{'CONTENT_LENGTH'}n";
39 print "DOCUMENT_ROOT = $ENV{'DOCUMENT_ROOT'}n";
40 print "DOCUMENT_URI = $ENV{'DOCUMENT_URI'}n";
41 print "DOCUMENT_NAME = $ENV{'DOCUMENT_NAME'}n";
42 print "DATE_LOCAL = $ENV{'DATE_LOCAL'}n";
43 print "DATE_GMT = $ENV{'DATE_GMT'}n";
44 print "LAST_MODIFIED = $ENV{'LAST_MODIFIED'}n";
Lập trình mạng – Chương 5 46

Lập trình web – cgi

  • 1.
    Lập trình mạng– Chương 5 1 LẬP TRÌNH WEB – CGI 5.1 Giới thiệu về lập trình web 5.2 HTMLs và FORMs 5.3 Lập trình web ở Client 5.4 DHTML 5.5 Phương pháp lập trình web với CGI
  • 2.
    Lập trình mạng– Chương 5 2 5.1 Giới thiệu về lập trình web • Hệ thống WWW tĩnh: • Tập hợp các trang HTML • Không tương tác được với user • Khó khăn trong việc cập nhật thông tin thường xuyên. • Ứng dụng web: • Có thể tương tác với user. • Có thể tương tác với các ứng dụng khác.
  • 3.
    Lập trình mạng– Chương 5 3 5.1 Giới thiệu về lập trình web • Các đặc điểm của ứng dụng web: • Không phải là một ứng dụng độc lập, là ứng dụng chạy trên nền web-server. • Người lập trình có thể thực hiện các thao tác trên ứng dụng web như với một ứng dụng độc lập. • Có thể lấy thông tin từ user.
  • 4.
    Lập trình mạng– Chương 5 4 5.2 HTMLs và FORMs • HTML(HyperText Markup Language): • Là ngôn ngữ dùng để biểu diễn trang web thông qua các tags. • Thông qua các tags có thể định dạng cách hiển thị trang web. • Một trang HTML có thể chèn các hình ảnh, âm thanh trong nó, có thể liên kết đến các trang HTML khác.
  • 5.
    Lập trình mạng– Chương 5 5 5.2 HTMLs và FORMs • Các tags HTML cơ bản: • Khung của một file HTML: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Tiêu đề của trang web</title> </head> <body> <!-- Nội dung trang web được trình bày ở đây--> </body> </html>
  • 6.
    Lập trình mạng– Chương 5 6 5.2 HTMLs và FORMs • Các tags HTML cơ bản: • Tiêu đề: • <Hn>…</Hn> (n: 1=>6) • Phân đoạn: • <p> … </p> • Kiểu chữ: • In đậm: <b>…</b> • In nghiêng: <i> … </i> • Gạch dưới: <u> … </u>
  • 7.
    Lập trình mạng– Chương 5 7 5.2 HTMLs và FORMs • Các tags HTML cơ bản: • Danh sách: • Đánh thứ tự: <ol> [<li>]+ </ol> • Không đánh thứ tự: <ul> [<li>]+ </ul> • Bảng: <table border="1" width="100%"> [<tr> [<td> … </td>]+ </tr>]+ </table> Trộn các ô: <td colspan=“số cột trộn">&nbsp;</td>
  • 8.
    Lập trình mạng– Chương 5 8 5.2 HTMLs và FORMs • Các tags HTML cơ bản: • Chèn hình ảnh: • <img border="#" src="*" width="*" height="*"> • Tạo điểm đánh dấu (bookmark): <a name="*"> • Liên kết đến bookmark: • <a href="#bookmark-name"> … </a> • Liên kết đến một trang web khác: • <a href="path"> … </a> • Liên kết đến địa chỉ e-mail: • <a href="mailto:e-mail address"> … </a>
  • 9.
    Lập trình mạng– Chương 5 9 5.2 HTMLs và FORMs • Các tags HTML cơ bản: • Giữ định dạng đoạn khi soạn thảo: • <pre> … </pre> • Các ký tự đặc biệt: • Khoảng trắng: &nbsp; • © : &copy; • ® : &reg; • < : &lt; • > : &gt; • & : &amp;
  • 10.
    Lập trình mạng– Chương 5 10 5.2 HTMLs và FORMs • Các tags HTML cơ bản: • Số mũ: • Superscript: <sup> … </sup> • Subscript: <sub> … </sup> • Định dạng font chữ: • <font face=“” size=“” color=“”>…</font> • Đường ngăn cách: • <hr size=“” width=“”> • Xuống dòng trong một đoạn: • <br>
  • 11.
    Lập trình mạng– Chương 5 11 5.2 HTMLs và FORMs • Tạo các frame: • Khái niệm frame trong HTML cho phép hiển thị nhiều trang HTML đồng thời. • Minh họa:
  • 12.
    Lập trình mạng– Chương 5 12 5.2 HTMLs và FORMs • Cú pháp tạo frame: <frameset [name=“”] {cols|rows}=“[%, ]*{%}”> [<frame src=“file HTML” [name=“”] [target=“”]>]+ [<noframes> Your browser doesn't support them. </noframes>] </frameset>
  • 13.
    Lập trình mạng– Chương 5 13 5.2 HTMLs và FORMs • FORMs • Là các thành phần của HTML cho phép user có thể nhập thông tin vào. • Tương tự như giao diện của một ứng dụng bao gồm: textbox, listbox, checkbox, … • Dữ liệu được do user nhập được truyền giữa web-client và web-server thông qua FORMs • Dùng các tags để thiết kế.
  • 14.
    Lập trình mạng– Chương 5 14 5.2 HTMLs và FORMs • FORMs • Cấu trúc cơ bản của một form: <FORM ACTION=“file" METHOD={GET|POST}> [<INPUT TYPE=“” NAME=“” VALUE="">]+ </FORM> • Các loại (type) INPUT: • TEXT: là textbox dùng để nhập dữ liệu. • Cú pháp: <INPUT [TYPE=TEXT] NAME="text-id" [SIZE=nn] [MAXLENGTH=nn] [VALUE="default text"]>
  • 15.
    Lập trình mạng– Chương 5 15 5.2 HTMLs và FORMs • FORMs(tt) • Các loại (type) INPUT: • SUBMIT: truyền dữ liệu form đến ứng dụng web • Cú pháp: <INPUT TYPE=SUBMIT [NAME="button-id"] [VALUE="text"]> • RESET:đưa nội dung của form trở về giá trị ban đầu • Cú pháp: <INPUT TYPE=RESET [VALUE=“text"]> • BUTTON: nút nhấn bất kỳ • Cú pháp: <INPUT TYPE=BUTTON [NAME="button-id"] [VALUE="text"]>
  • 16.
    Lập trình mạng– Chương 5 16 5.2 HTMLs và FORMs • FORMs(tt) • Các loại (type) INPUT: • RATIO: chọn lựa một trong nhiều • Cú pháp: <INPUT TYPE=RADIO NAME="radio-set-id" VALUE="choice- id" [checked]> <input type="radio" value="V1" checked name="R1">Option 1 <br><input type="radio" value="V2" name="R1">Option 2 <br><input type="radio" value="V2" name="R1">Option 3
  • 17.
    Lập trình mạng– Chương 5 17 5.2 HTMLs và FORMs • FORMs(tt) • Các loại (type) INPUT: • CHECKBOX: lựa chọn một hoặc nhiều • Cú pháp: <INPUT TYPE=CHECKBOX NAME="id" VALUE="choice-id" [CHECKED]> • Ví dụ: <input type="checkbox" name="C1“ value="ON">Check 1 <br> <input type="checkbox" name="C1" value="ON" checked>Check 2
  • 18.
    Lập trình mạng– Chương 5 18 5.2 HTMLs và FORMs • FORMs(tt) • Các loại (type) INPUT: • HIDDEN: dữ liệu không hiển thị • Cú pháp: <INPUT TYPE=HIDDEN NAME="id" VALUE="data"> • Nhập vùng văn bản: TEXTAREA • <TEXTAREA NAME="id" [COLS=nn] [ROWS=nn]>default text</TEXTAREA>
  • 19.
    Lập trình mạng– Chương 5 19 5.2 HTMLs và FORMs • FORMs(tt) • Lựa chọn listbox: SELECT • <SELECT NAME="id" [SIZE=nn] [MULTIPLE]> [<OPTION [VALUE=“value"] [SELECTED]>text ]+ </SELECT> <select size="1" name="D1"> <option value="501097">Mạng máy tính</option> <option value="501016">Lập trình mạng</option> </select>
  • 20.
    Lập trình mạng– Chương 5 20 5.3 Lập trình web ở Client • Các trang HTML web có thể được lập trình để thực hiện các thao tác thực thi trên web client. • Các phương pháp phổ biến để lập trình hiện nay: • Script (Javascript, Vbscript) • Java Applet • ActiveX Control
  • 21.
    Lập trình mạng– Chương 5 21 5.3 Lập trình web ở Client • Javascript ở client: • Ngôn ngữ kịch bản chạy trên web client. Có thể làm việc khác nhau trên các loại web browser khác nhau. • Code được chèn xen kẽ với các tags HTML • Các đoạn mã Javasript được chạy dựa vào các sự kiện của các phần tử HTML • Cú pháp các câu lệnh giống ngôn ngữ Java • Không tương tác được với server
  • 22.
    Lập trình mạng– Chương 5 22 5.3 Lập trình web ở Client • Cú pháp cho một đoạn code Javascript: <script language=“JavaScript”> //các khai báo biến [var variable;]* //các lệnh gọi hàm và các hàm function function-name([agrv]*){ //các câu lệnh khai báo và thực thi [return [value];] } </script> • Sử dụng file Javascript (*.js) đã có: <script language="JavaScript" src="*.js"></script>
  • 23.
    Lập trình mạng– Chương 5 23 5.3 Lập trình web ở Client • Các đối tượng được xây dựng sẵn trong JavaScript: • window: chứa các thuộc tính liên quan đến cửa sổ hiện thời • document: chứa các thuộc tính trong trang web • location: các thuộc tính về địa chỉ trang web • history: các thuộc tính về vị trí mà web browser đã đến
  • 24.
    Lập trình mạng– Chương 5 24 5.3 Lập trình web ở Client • Mỗi phần tử trong trang HTML đều có thể coi là một đối tượng, có thể khai báo sự kiện để gọi hàm Javascript. • Cú pháp: <tags-name [properties]* [event-name=“procedure call” ]*> • Các sự kiện có thể dùng: • onClick: click chuột vào đối tượng. • onFocus: focus vào đối tượng trong form.
  • 25.
    Lập trình mạng– Chương 5 25 5.3 Lập trình web ở Client • Javascript • Các sự kiện có thể dùng(tt): • onMouseOver: di chuyển chuột vào trên đối tượng. • onMouseOut: di chuyển chuột ra khỏi đối tượng. • onChange: thay đổi giá trị của các đối tượng chứa văn bản. • onBlur: chuyển focus khỏi đối tượng trong form. • onSelect: chọn phần tử trong listbox. • onLoad: xảy ra khi một document được load.
  • 26.
    Lập trình mạng– Chương 5 26 5.3 Lập trình web ở Client • Javascript • Có thể dùng để thiết lập/kiểm tra các dữ liệu nhập trên form ở phía web client. • Truy xuất các phần tử trong form thông qua Javascript Các cú pháp bên dưới dùng form = window.document.form-name • checkbox form.check-name.checked = {true|false} Trường hợp dùng nhiều checkbox cùng tên(nhóm) var check_len = form.check-name.length; for (i = 0; i < len; i++){ form.check-name[i].checked={true|false}; }
  • 27.
    Lập trình mạng– Chương 5 27 5.3 Lập trình web ở Client • Javascript • Option button form.option_name[index].checked = {true|false} • Select form.select_name.options[index].selected = {true|false} Chỉ số hiện thời đang được chọn: form.select_name.selectedIndex • Text form.text_name.value
  • 28.
    Lập trình mạng– Chương 5 28 5.3 Lập trình web ở Client • Kiểm tra phần tử SELECT var select_value; function dropDownMenu() { var myindex=document.forms[0].menu.selectedIndex; if (myindex==0) { alert("nYou must make a selection from the drop-down menu."); document.forms[0].menu.focus(); } else { select_value =document.forms[0].menu.options[myindex].value; return true; } }
  • 29.
    Lập trình mạng– Chương 5 29 5.3 Lập trình web ở Client function isEmail() { if (document.forms[0].elements[1].value == '') { alert ("n The E-Mail field is blank. nn “+ “Please enter your E-Mail address.") document.forms[0].elements[1].focus(); return false; } if (document.forms[0].elements[1].value.indexOf ('@',0) == -1 || document.forms[0].elements[1].value.indexOf ('.',0) == -1) { alert ("n The E-Mail field requires a "@" and a ".""+ "be used. nnPlease re-enter your E-Mail address.") document.forms[0].elements[1].select(); document.forms[0].elements[1].focus(); return false; } return true; }
  • 30.
    Lập trình mạng– Chương 5 30 5.3 Lập trình web ở Client • Java Applet: • Là một ứng dụng được viết bằng Java, nhúng trong trang HTML. • Khi trang HTML có chứa tag applet được gọi, class applet được tải về máy client và thực thi trên máy client. • Một ứng dụng applet phải thừa kế class java.applet.Applet • Có thể thực hiện các thao tác như một chương trình Java, tuy nhiên bị hạn chế một số chức năng vì tính bảo mật cho máy client.
  • 31.
    Lập trình mạng– Chương 5 31 5.3 Lập trình web ở Client //file SampleApplet.java import java.applet.*; import java.awt.*; public class SampleApplet extends Applet { String text = "error"; int x = 0; int y = 20; public void init() { text = getParameter("text"); try { x = Integer.parseInt(getParameter("x")); y = Integer.parseInt(getParameter("y")); }catch(NumberFormatException ex){ } } public void paint(Graphics g) { g.setFont(new Font("TimesRoman",Font.BOLD+ Font.ITALIC,36)); g.drawString(text,x,y); } }
  • 32.
    Lập trình mạng– Chương 5 32 5.3 Lập trình web ở Client sample.html <HTML> <HEAD> <TITLE>Using the Applet Tag </TITLE> </HEAD> <BODY> <H1>An Applet that Displays Text at a Designated Location</H1> <APPLET CODE="SampleApplet.class" HEIGHT=300 WIDTH=300> <PARAM NAME="text" VALUE="Applets are fun!"> <PARAM NAME="x" VALUE="50"> <PARAM NAME="y" VALUE="50"> Text displayed by browsers that are not Java-enabled. </APPLET> </BODY> </HTML>
  • 33.
    Lập trình mạng– Chương 5 33 5.3 Lập trình web ở Client • Hoạt động của một Applet • Được web browser tải mã(byte code) về máy client. • Method init() sẽ được gọi để khởi động các thông số. • Method start() được gọi để thực thi. • Method stop() được gọi khi người dùng thoát khỏi applet • Method destroy() được thực thi khi applet kết thúc. • ActiveX Control: tương tự như Java Applet, được viết bởi các công nghệ của Mircosoft.
  • 34.
    Lập trình mạng– Chương 5 34 5.4 DHTML • DHTML (Dynamic HTML) là trang HTML có chứa các đoạn mã JavaScript tạo các hiệu ứng, thay đổi các phần tử trong trang HTML. • DHTML kết hợp giữa HTML, Javascript và Cascading Style Sheets(CSS). • CSS là sự kết hợp giữa các tags HTML và style. Style có thể chứa nhiều thuộc tính.
  • 35.
    Lập trình mạng– Chương 5 35 5.4 DHTML • Mọi tags HTML đều có style. Javascript có thể dựa trên các biến cố để thay đổi các thuộc tính của style. • Mỗi phần tử trong trang HTML đều có thể được gán ID (khác với name) và có các thuộc tính style. • Có thể dùng tag <div id=“”>…</div> • Mỗi web browser có thể thực thi một số lệnh khác nhau.
  • 36.
    Lập trình mạng– Chương 5 36 5.4 DHTML • Phát hiện loại web browser: • Dùng các thuộc tính appName và appVersion của đối tượng navigator var browser_name= navigator.appName; var browser_version = navigator.appName; alert(“You use browser “+browser_name+” version “+ browser_version); • Phân biệt hai loại chính: if(document.all){ //IE the_div=eval(“window.document.all.”+div_name+”.style”); }else if(document.layers){//Netscape the_div=eval(“window.document.all.”+div_name); }
  • 37.
    Lập trình mạng– Chương 5 37 5.4 DHTML <HTML> <HEAD> <TITLE>Javascipt example about timer</TITLE> <SCRIPT language="JavaScript"> <!-- var second_counter=0, counter=0; function my_timer(){ D = new Date(); seconds= D.getSeconds(); if(seconds!=second_counter) counter++; second_counter=seconds; if(counter>=1000) counter=0; document.images[0].src= get_images(counter/100); document.images[1].src= get_images((counter%100)/10); document.images[2].src= get_images(counter%10); SecondText.innerText=counter; setTimeout('my_timer()',1000); }
  • 38.
    Lập trình mạng– Chương 5 38 5.4 DHTML function get_images(number){ var newNum= Math.floor(number); return "../images/"+newNum+".jpg"; } --> </SCRIPT> </HEAD> <BODY onload='my_timer()'> <P><FONT face=System>Timer : <IMG alt="" src="../images/0.jpg" width="13" height="23"> <IMG alt="" src="../images/0.jpg" width="13" height="23"> <IMG alt="" src="../images/0.jpg" width="13" height="23"> <FONT face="Arial Black" ID="SecondText">000</FONT> seconds</FONT></P> </BODY> </HTML>
  • 39.
    Lập trình mạng– Chương 5 39 5.5 Lập trình web với CGI • Trang HTML chỉ chứa các nội dung cố định hoặc có thể thao tác thay đổi qua DHTML ở client • Nhu cầu sử dụng các trang web như một ứng dụng (giao tiếp với user, tìm kiếm, nội dung thay đổi, tương tác các ứng dụng, với database…)=> ứng dụng web • CGI (Common Gateway Interface) là một chuẩn (standard) để viết ứng dụng web
  • 40.
    Lập trình mạng– Chương 5 40 5.5 Lập trình web với CGI • Một ứng dụng web theo chuẩn CGI có các đặc điểm: • Là ứng dụng chạy trên nền web server. • Nhận thông tin từ web browser và xuất thông tin để web browser hiển thị thông qua web server. • Ứng dụng có thể được viết với bất cứ ngôn ngữ lập trình có standard input và standard output. (C/C++, Perl, Shell script, Dos shell…)
  • 41.
    Lập trình mạng– Chương 5 41 5.5 Lập trình web với CGI • Cách thức hoạt động của ứng dụng web CGI: • Web server nhận request ứng dụng CGI từ browser. • Web server gọi ứng dụng CGI, truyền các thông số bằng các biến môi trường(thông qua standard input). • Ứng dụng web CGI xử lý, giao tiếp với các ứng dụng khác (database, mail…), xuất kết quả dạng HTML qua standard output đến web server. • Web server nhận kết quả và trả về cho browser.
  • 42.
    Lập trình mạng– Chương 5 42 5.5 Lập trình web với CGI • Hình vẽ minh họa hoạt động CGI
  • 43.
    Lập trình mạng– Chương 5 43 5.5 Lập trình web với CGI • Ví dụ (Perl): 1 #!/usr/bin/perl 2 # A very common echo script on just about every server 3 $| = 1; 4 print "Content-type: text/plainnn"; 5 print "CGI/1.0 test script reportnn"; 6 if ($ENV{'REQUEST_METHOD'} eq "POST") { 7 $form = <STDIN>; 8 print "$form n"; 9 } else { 10 print "argc is $#ARGV nargv is "; 11 while (@ARGV) { 12 $ARGV=shift; 13 print "$ARGV "; 14 } 15 }
  • 44.
    Lập trình mạng– Chương 5 44 5.5 Lập trình web với CGI • Ví dụ (Perl): 16 print "n"; 17 # 18 print "SERVER_SOFTWARE = $ENV{'SERVER_SOFTWARE'}n"; 19 print "SERVER_NAME = $ENV{'SERVER_NAME'}n"; 20 print "GATEWAY_INTERFACE = $ENV{'GATEWAY_INTERFACE'}n"; 21 print "SERVER_PROTOCOL = $ENV{'SERVER_PROTOCOL'}n"; 22 print "SERVER_PORT = $ENV{'SERVER_PORT'}n"; 23 print "SERVER_ROOT = $ENV{'SERVER_ROOT'}n"; 24 print "REQUEST_METHOD = $ENV{'REQUEST_METHOD'}n"; 25 print "HTTP_AccEPT = $ENV{'HTTP_AccEPT'}n"; 26 print "PATH_INFO = $ENV{'PATH_INFO'}n"; 27 print "PATH = $ENV{'PATH'}n"; 28 print "PATH_TRANSLATED = $ENV{'PATH_TRANSLATED'}n"; 29 print "SCRIPT_NAME = $ENV{'SCRIPT_NAME'}n";
  • 45.
    Lập trình mạng– Chương 5 45 5.5 Lập trình web với CGI • Ví dụ (Perl): 30 print "QUERY_STRING = $ENV{'QUERY_STRING'}n"; 31 print "QUERY_STRING_UNESCAPED = $ENV{'QUERY_STRING_UNESCAPED'}n"; 32 print "REMOTE_HOST = $ENV{'REMOTE_HOST'}n"; 33 print "REMOTE_IDENT = $ENV{'REMOTE_IDENT'}n"; 34 print "REMOTE_ADDR = $ENV{'REMOTE_ADDR'}n"; 35 print "REMOTE_USER = $ENV{'REMOTE_USER'}n"; 36 print "AUTH_TYPE = $ENV{'AUTH_TYPE'}n"; 37 print "CONTENT_TYPE = $ENV{'CONTENT_TYPE'}n"; 38 print "CONTENT_LENGTH = $ENV{'CONTENT_LENGTH'}n"; 39 print "DOCUMENT_ROOT = $ENV{'DOCUMENT_ROOT'}n"; 40 print "DOCUMENT_URI = $ENV{'DOCUMENT_URI'}n"; 41 print "DOCUMENT_NAME = $ENV{'DOCUMENT_NAME'}n"; 42 print "DATE_LOCAL = $ENV{'DATE_LOCAL'}n"; 43 print "DATE_GMT = $ENV{'DATE_GMT'}n"; 44 print "LAST_MODIFIED = $ENV{'LAST_MODIFIED'}n";
  • 46.
    Lập trình mạng– Chương 5 46