Bài giảng Phát triển ứng dụng web - Bài 7: Xử lý trang web nâng cao

Tóm tắt Bài giảng Phát triển ứng dụng web - Bài 7: Xử lý trang web nâng cao: ...Type c a trang là ủ text/xml Lê Đình Thanh, Bài giảng Phát triển ứng dụng web. 23 Server gửi dữ liệu dạng XML echo "“; echo "“; echo "$companyname“; echo "“; Lê Đình Thanh, Bài giảng Phát triển ứng dụng web. 24 Trình duyệt nhận và xử lý XML xmlHttp.onreadystatechange = function() { i...ction(){ alert($("#w3s").attr("href")); }); }); <a href="" id="w3s">W3Schools.com Show href Value Lê Đình Thanh, Bài giảng Phát triển ứng dụng web. Đặt thuộc tính đối tượng tài liệu • Đặt nội dung văn bản của đối tượng tài liệu $(selector).text(“new text”); $(selector).text(fu... có định danh test1. $.get("clone.php?v1=100&v2=101", function (data, status) { $("#test1").html(data); }); Lê Đình Thanh, Bài giảng Phát triển ứng dụng web. jQuery AJAX Post $.post(URL, [data], [callback]); • Gửi yêu cầu lên server theo phương thức POST và nhận kết quả về theo AJAX, s...

pdf77 trang | Chia sẻ: havih72 | Lượt xem: 304 | Lượt tải: 0download
Nội dung tài liệu Bài giảng Phát triển ứng dụng web - Bài 7: Xử lý trang web nâng cao, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
 xmlHttp;
 }
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
15
XMLHttpRequest::readyState
if(xmlHttp.readyState=
=4) { 
 // Đã nhận đủ trả lời 
từ server
 if (xmlHttp.status == 
200) {
 //Đã thực hiện thành 
công trên server
 //Dùng javascript để 
sửa đổi trang
 }
} 
ready
State Ý nghĩa
0 Ch a thi t l p yêu ư ế ậc uầ
1 Đã thi t l p yêu c uế ậ ầ
2 Đã g i yêu c uử ầ
3 Đang tr l iả ờ
4 Đã tr l i xongả ờ
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
16
XMLHttpRequest.onreadystatech
ange
Là m t con tr hàm không đ i, đ c kích ho t m i khi ộ ỏ ố ượ ạ ỗ
thu c tính readyState thay đ i.ộ ổ
xmlHttp.onreadystatechange = tenHamXuly;
function tenHamXuly() {}
Ho cặ
xmlHttp.onreadystatechange = function() {
 //Noi dung xu ly
}
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
17
 Gửi yêu cầu lên server theo GET
xmlHttp.open(“GET”, url?params, 
asynchronous);
xmlHttp.send(null);
Ví d :ụ
xmlHttp.open("GET", "time.php?zone=7", true);
xmlHttp.send(null);
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
18
 Gửi yêu cầu lên server theo 
POST
xmlHttp.open(“POST”, url, asynchronous);
xmlHttp.setRequestHeader("Content-Type", 
"application/x-www-form-urlencoded");
xmlHttp.send(params);
Ví d :ụ
xmlHttp.open(“POST", " time.php", true);
xmlHttp.setRequestHeader("Content-Type", 
"application/x-www-form-urlencoded");
xmlHttp.send(“zone=7”);
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
19
XMLHttpRequest.responseText
N i dung d ng ộ ạ text/html do server g i v .ử ề
Mu n s d ng thu c tính này, server ph i thi t l p thu c ố ử ụ ộ ả ế ậ ộ
tính ContentType c a trang là ủ text/html (m c đ nh)ặ ị
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
20
Server gửi dữ liệu dạng text
$time = 100;
echo $time; 
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
21
Trình duyệt nhận và xử lý dữ liệu 
dạng text
 xmlHttp.onreadystatechange = function() {
 if(xmlHttp.readyState==4 && 
xmlHttp.status==200) 
{ document.write(xmlHttp.responseText);
 }
}
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
22
XMLHttpRequest. responseXML.documentElement 
N i dung d ng ộ ạ XML do server g i v .ử ề
Mu n s d ng thu c tính này, server ph i thi t l p thu c ố ử ụ ộ ả ế ậ ộ
tính ContentType c a trang là ủ text/xml
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
23
 Server gửi dữ liệu dạng XML
echo "“;
echo "“;
echo "$companyname“;
echo "“;
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
24
 Trình duyệt nhận và xử lý XML
xmlHttp.onreadystatechange = function() { 
 if (xmlHttp.readyState == 4 && xmlHttp.status=200) {
 var xmlDoc=xmlHttp.responseXML.documentElement;
 document.getElementById("companyname").innerHTML 
 = xmlDoc.getElementsByTagName("compname")
[0].childNodes[0].nodeValue;
 }
} 
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
25
Thực hành kỹ thuật AJAX
Ngày nay, nh ng ng d ng web cao c p (nh các trang c a ữ ứ ụ ấ ư ủ
Google) đ u đ c làm theo k thu t AJAX.ề ượ ỹ ậ
Đ s d ng t t k thu t AJAXể ử ụ ố ỹ ậ
 N m v ng n i dung m t trang webắ ữ ộ ộ
Hi u rõ vai trò “trình thông d ch” c a web browserể ị ủ
Hi u mô hình đ i t ng tài li u DOMể ố ượ ệ
S d ng javascript đ truy c p các đ i t ng HTMLử ụ ể ậ ố ượ
Hi u v c u trúc tài li u XMLể ề ấ ệ
Hi u v c ch truy n thông gi a web server v i ajax ể ề ơ ế ề ữ ớ
engine.
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
jQuery
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
jQuery
• jQuery là thư viện javascipt giúp cho việc 
lập trình javascript trở nên đơn giản, hiệu 
quả hơn
• Các tính năng
– Thao tác HTML/DOM
– Xử lý sự kiện HTML
– Thao tác CSS
– Xử lý AJAX
– Hiệu ứng và hoạt cảnh
– Các tiện ích
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Cài đặt jQuery
• Download thư viện jQuery (tệp .js) tại 
jQuery.com
• Bao hàm tệp thư viện jQuery trong 
trang HTML
<script type=“text/javascript” 
src="jquery.js">
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Cú pháp jQuery
• jQuery cho phép chọn các đối tượng 
tài liệu rồi thực hiện hành động trên 
đối tượng được chọn
• Cú pháp: $(selector).action();
• jQuery sử dụng bộ chọn như CSS
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Ví dụ
• $("#test").hide()
document.getElementById(“test”).hide();
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Ví dụ
• $("p").hide()
arr = document.getElementsByTagName(“p”);
for (i = 0; i <arr.length; i++)
arr[i].hide();
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Ví dụ
• $(".test").hide() 
arr = document.getElementsByTagName(“*”);
for (i = 0; i <arr.length; i++)
if (arr[i].className == “test”)
arr[i].hide();
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Lưu ý
• Cần sử dụng jQuery khi toàn bộ mã 
trang đã được tải
$(document).ready(function(){
   // All jQuery methods go here...
});
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Xử lý sự kiện với jQuery
Kích hoạt sự kiện
Bắt và xử lý sự kiện
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Xử lý sự kiện
• Kích hoạt sự kiện trên đối tượng tài liệu
 $(selector).eventName();
• Bắt và xử lý sự kiện trên các đối tượng tài liệu
$(selector).eventName(function(args){
  // action goes here!!
});
Mouse Events Keyboard 
Events
Form Events Document/Window 
Events
click keypress submit load
dblclick keydown change resize
mouseenter keyup focus scroll
mouseleave   blur unload
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Ví dụ
• Xử lý sự kiện kích chuột trên nút bấm
$("#test").click(function () {
alert(“hello!”);
});
function dotest() { alert(“hello!”);}
<input type = “button” id = “test” 
onclick = “javascript:dotest();”/>
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Ví dụ
• Khi người dùng gõ enter trên một ô nhập thì chuyển 
tâm điểm sang ô nhập tiếp theo
$("#name").keyup( function(e) { 
 if (e.keyCode ==13) $("#email").focus();
});
function processKeyup(e) { 
if (windows.event) e= window.event;
if (e.keyCode == 13) 
 document.getElementById(“email”).focus(); 
}
<input type=“text” id = “name” 
 onKeyup = “javascript:processKeyup(event);” />
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Thao tác DOM/HTML với 
jQuery
Đọc, thay đổi thuộc tính
Thêm, xóa đối tượng
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Đọc thuộc tính đối tượng tài 
liệu
• Đọc nội dung văn bản của đối tượng tài 
liệu
$(selector).text();
• Đọc nội dung HTML của đối tượng tài liệu
$(selector).html();
• Đọc giá trị của đối tượng tài liệu
$(selector).val()
• Độc giá trị thuộc tính của đối tượng tài liệu
 $selector().attr(att);
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Ví dụ đọc text và html
$(document).ready(function(){
 $("#btn1").click(function(){
 alert("Text: " + $("#test").text());
 });
 $("#btn2").click(function(){
 alert("HTML: " + $("#test").html());
 });
});
This is some bold text in a paragraph.
Show Text
Show HTML
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Ví dụ đọc giá trị
$(document).ready(function(){
 $("button").click(function(){
 alert("Value: " + $("#test").val());
 });
});
Name: <input type="text" id="test" 
value="Mickey Mouse">
Show Value
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Ví dụ đọc thuộc tính
$(document).ready(function(){
 $("button").click(function(){
 alert($("#w3s").attr("href"));
 });
});
<a href="" 
id="w3s">W3Schools.com
Show href Value
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Đặt thuộc tính đối tượng tài 
liệu 
• Đặt nội dung văn bản của đối tượng tài liệu
$(selector).text(“new text”);
$(selector).text(function(i, oldText) {return newText});
• Đặt nội dung HTML của đối tượng tài liệu
$(selector).html(“new html”);
$(selector).html(function(i, oldHtml) {return newHtml});
• Đặt giá trị của đối tượng tài liệu
$(selector).val(“new value”);
$(selector).val(function(i, oldValue) {return newValue});
• Đặt giá trị thuộc tính của đối tượng tài liệu
$selector().attr(“attr1”, “new value”);
$selector().attr({“attr1”:“new value1”, “attr2”:“new value2”, });
$(selector).attr(“attribute”, function(i, oldValue) {return newValue});
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Ví dụ đặt thuộc tính
$(document).ready(function(){
 $("#btn1").click(function(){ $("#test1").text("Hello world!"); });
 $("#btn2").click(function(){ $("#test2").html("Hello world!
"); });
 $("#btn3").click(function(){ $("#test3").val("Dolly Duck"); });
});
This is a paragraph.
This is another paragraph.
Input field: 
Set Text
Set HTML
Set Value
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Ví dụ đặt thuộc tính
$(document).ready(function(){
 $("button").click(function(){
 $("#w3s").attr({
 "href" : "",
 "title" : "W3Schools jQuery Tutorial"
 });
 });
});
<a href="" 
id="w3s">W3Schools.com
Change href and title
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Ví dụ đặt thuộc tính với hàm 
gọi lại
$(document).ready(function(){
 $("#btn1").click(function(){
 $("#test1").text(function(i,origText){ 
 return "Old text: " + origText + " New text: Hello world! (index: " + i + ")"; 
 });
 });
 $("#btn2").click(function(){
 $("#test2").html(function(i,origText){
 return "Old html: " + origText + " New html: Hello world! (index: " + i + ")"; 
 });
 });
});
This is a bold paragraph.
This is another bold paragraph.
Show Old/New Text
Show Old/New HTML
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Thêm đối tượng con
• Thêm đối tượng con vào đầu (thành con cả)
$(selector).prepend(child1 [, child2, child3, ])
• Thêm đối tượng con vào cuối (thành con út)
$(selector).append(child1 [, child2, child3, ])
• Ví dụ 1
$("p").prepend(" Appended text.", "hello");
• Ví dụ 2
var txt1="Text.";               // Create element with HTML  
var txt2=$("").text("Text.");   // Create with jQuery
var txt3=document.createElement("p");  // Create with DOM
txt3.innerHTML="Text.";
$("p").append(txt1,txt2,txt3);         // Append the new elements 
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Thêm đối tượng anh/em
• Thêm nút anh liền trước
$(selector).before(presibling1 [, presibling2, presibling3, ])
• Thêm đối tượng con vào cuối (thành con út)
$(selector).after(nextsibling1 [, nextsibling2, nextsibling3, ])
• Ví dụ 1
$("p").before" Appended text.", "hello");
• Ví dụ 2
var txt1="Text.";               // Create element with HTML  
var txt2=$("").text("Text.");   // Create with jQuery
var txt3=document.createElement("p");  // Create with DOM
txt3.innerHTML="Text.";
$("p").after(txt1,txt2,txt3);         // Append the new elements 
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Xóa đối tượng
• Xóa tất cả các đối tượng con của đối 
tượng được chọn
$(selector).empty();
• Xóa đối tượng được chọn và tất cả 
các đối tượng con của đối tượng được 
chọn
$(selector).remove();
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Xử lý CSS với jQuery
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Đọc và thay đổi từng thuộc tính CSS
• Đọc thuộc tính CSS
$(selector).css("propertyname");
• Đặt thuộc tính CSS
$
(selector).css({"propertyname":"value","
propertyname":"value",...});
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Thay đổi lớp CSS
• Thêm lớp CSS được áp dụng
$(selector).addClass(“cssclass”);
• Bỏ lớp CSS được sử dụng
$(selector).removeClass(“cssclass”);
• Bật/tắt lớp CSS được sử dụng
$(selector).toggleClass(“cssclass”);
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Ví dụ thay đổi lớp CSS
$(document).ready(function(){
 $("button").click(function(){
 $("#div1").addClass("important blue");
 });
});
.important { font-weight:bold; font-size:xx-large; }
.blue { color:blue; }
This is some text.
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Xử lý AJAX với jQuery
get, post, load, ajax
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
jQuery AJAX Get
$.get(URL, [callback]);
• Gửi yêu cầu lên server theo phương 
thức GET và nhận kết quả về theo 
AJAX, sau đó thực hiện hàm callback
– url: Địa chỉ tệp được yêu cầu
– callback: Hàm được gọi sau khi tải 
xong. Hàm có hai tham số là nội dung, 
trạng thái trả về
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Ví dụ jQuery AJAX Get
• Yêu cầu nội dung trang "clone.php?
v1=100&v2=101“ với các tham số 
theo phương thức GET, đặt nội dung 
nhận được cho đối tượng tài liệu có 
định danh test1.
$.get("clone.php?v1=100&v2=101", 
 function (data, status) {
$("#test1").html(data);
});
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
jQuery AJAX Post
$.post(URL, [data], [callback]);
• Gửi yêu cầu lên server theo phương thức 
POST và nhận kết quả về theo AJAX, sau 
đó thực hiện hàm callback
– url: Địa chỉ tệp được yêu cầu
– data: Các cặp tham số/giá trị được gửi
– callback: Hàm được gọi sau khi tải xong. 
Hàm có hai tham số là nội dung, trạng thái 
trả về
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Ví dụ jQuery AJAX Post
• Yêu cầu nội dung trang "clone.php” với 
các tham số v1=10, v2=12 theo phương 
thức POST, đặt nội dung nhận được cho 
đối tượng tài liệu có định danh test2.
$.post("clone.php", {v1: "10", v2: "12”}, 
function (data, status) {
$("#test2").html(data);
 });
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
jQuery AJAX Load
$(selector).load(URL, [data], [callback]);
• Tải nội dung từ URL và đặt vào đối tượng được chọn 
(Tương đương gửi yêu cầu lên server theo phương 
thức GET và nhận kết quả về theo AJAX, sau đó đặt 
kết quả trả về vào innerHTML của đối tượng được 
chọn), sau đó thực hiện hàm callback
– url: Địa chỉ tệp được yêu cầu
– data: Các cặp tham số/giá trị được gửi cùng url
– callback: Hàm được gọi sau khi tải xong. Hàm có ba tham 
số là nội dung, trạng thái trả về và đối tượng 
XMLHttpRequest đã thực hiện các công việc của hàm load
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Ví dụ jQuery AJAX Load 
• Tải nội dung tệp văn bản “text.txt” và đặt 
vào innerHTML của đối tượng có định 
danh test3
$("#test3").load("text.txt");
• Tải nội dung tại “clone.php?
v1=8&v2=9” và đặt vào innerHTML 
của đối tượng có định danh test4
$("#test4").load("clone.php", {v1: "8", v2: 
"9” });
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Ví dụ jQuery AJAX Load 
• Tải nội dung tại “clone.php?v1=8&v2=9” và đặt vào 
innerHTML của đối tượng có định danh test5, sau đó 
thông báo trạng thái 
$("#test5").load("clone.php", {v1: "8", v2: "9“ },
function(content, statusTxt, xhr) {
if(statusTxt=="success")
      alert("External content loaded successfully!");
    if(statusTxt=="error")
      alert("Error: "+xhr.status+": "+xhr.statusText);
 }
);
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
jQuery ajax
• $.ajax(url [, settings ]);
• Settings:
– type: POST/GET/HEAD, 
– data: {Các cặp tham số/giá trị}
– contentType: Kiểu nội dung và mã hóa được sử dụng
– dataType: Kiểu dữ liệu muốn nhận về từ server (xml, 
json, script, html)
– success: function (data, status, jqXHR) { }, 
– error: function (jqXHR, status, errorThrown) {}
– 
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
jQueryUI
• jQueryUI ( là mở 
rộng của jQuery cho mục đích làm 
giao diện
– Tương tác: Kéo thả, thay đổi kích thước, 
lựa chọn, sắp xếp, 
– Wiget: autocomplete, menu, spinner, 
slider, 
– Hiệu ứng: hiển thị, hoạt cảnh, tô màu, 
 Tự học
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Viết lại URL
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Viết lại URL là gì?
• Viết lại URL (URL Rewrite) là sửa đổi URL do 
web client yêu cầu trước khi web server 
phục vụ
• Rewrite Engine thực hiện viết lại URL
– Apache: mod_rewrite
Web 
client Web server
Rewrit
e 
Engin
e
HTTP Response
HTTP Request
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Tại sao viết lại URL?
• Tạo liên kết 
– gọn gàng, dễ nhớ, thân thiện với người 
dùng
– thân thiện với các search engines
• Che được chuỗi truy vấn đối với người dùng
• Cho site vẫn sử dụng được URL khi thay đổi 
công nghệ phía dưới
TRY IT YOURSELF
chinh-minh.html
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Viết lại URL như thế nào?
Luật 1
Luật 2
Luật n
URL0 (web client yêu cầu)
URL1
URL2
URLn-1
URLn (web server phục vụ)
Rewrite 
Engine thực 
hiện viết lại 
URL dựa trên 
tập luật 
được cấu 
hình trước
Luật cho biết 
cách sửa đổi 
URL, được 
viết theo 
biểu thức 
chính quy
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Luật viết lại URL
(RewriteCond TestString CondPattern 
([c-flags])?)*
RewriteRule (!)? Pattern Substitution 
([r-flags])?
URLi
URLi+1
Nếu URLi (không) khớp Pattern 
[Nếu mọi TestString khớp CondPattern]
URLi+1 = Substitution
Luật i
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Luật viết lại URL
• Pattern, CondPattern là xâu ký tự được viết theo biểu 
thức chính quy
• Cú pháp biểu thức chính quy:
. Bất kỳ ký tự nào
[chars] Bất kỳ ký tự nào thuộc “chars”
[^chars] Bất kỳ ký tự nào khác các ký tự thuộc “chars” 
(text) Nhóm văn bản
text1|text2 text1 hoặc text2 
? 0 hoặc 1 lần xuất hiện của văn bản phía trước 
* 0 hoặc N lần xuất hiện của văn bản phía trước (N > 0) 
+ 1 hoặc N lần xuất hiện của văn bản phía trước (N > 1) 
^ Bắt đầu liên kết 
$ Kết thúc liên kết 
\char ký tự đặc biệt char
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Luật viết lại URL
• TestString, Substitution là xâu ký tự 
có thể chứa các cấu trúc mở rộng sau:
$N  (0 <= N <= 9) Tham chiếu ngược đến 
nhóm thứ N trong Pattern
%N (0 <= N <= 9) Tham chiếu ngược đến 
nhóm thứ N trong CondPattern liền trước
${mapname:key|default} Giá trị ánh xạ
%{NAME_OF_VARIABLE} Biến server
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Biến server
• HTTP_USER_AGENT
HTTP_REFERER
HTTP_COOKIE
HTTP_FORWARDED
HTTP_HOST
HTTP_PROXY_CONNECTION
HTTP_ACCEP
• DOCUMENT_ROOT
SERVER_ADMIN
SERVER_NAME
SERVER_ADDR
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
• API_VERSION
THE_REQUEST
REQUEST_URI
REQUEST_FILENAME
IS_SUBREQ
HTTPS
• REMOTE_ADDR
REMOTE_HOST
REMOTE_PORT
REMOTE_USER
REMOTE_IDENT
REQUEST_METHOD
SCRIPT_FILENAME
PATH_INFO
QUERY_STRING
AUTH_TYPE
• TIME_YEAR
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
TIME
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Hàm ánh xạ
• RewriteMap MapName MapType:MapSource
• Ví dụ
RewriteMap product2id txt:productmap.txt 
RewriteRule ^/product/(.*)$ /prods.php?id=${product2id:$1|NOTFOUND} [PT]
• productmap.txt
##
## Product to ID map file
##
television 993
stereo 198
fishingrod 043
basketball 418
telephone 328
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Luật viết lại URL
• c-flags:
nocase| NC Không phân biệt hoa thường 
khi so sánh TestString với CondPattern
ornext | OR Kết hợp theo logic OR với điều 
kiện liền sau. 
“” Kết hợp logic AND với điều kiện liền 
sau
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Luật viết lại URL
• r-flags:
nocase| NC Không phân biệt hoa thường khi so sánh 
chain|C Tạo chuỗi luật với luật tiếp theo. Nếu một luật không khớp, 
các luật phía sau trong chuỗi sẽ bị bỏ qua.
last|L Dừng quá trình viết lại, không áp dụng thêm các luật khác
next|NQuay về luật thứ nhất
forbidden|F Trả về response có mã 403 FORBIDDEN
gone|G Trả về response có mã 410 GONE
redirect|R[=code] Chuyển hướng
skip|S=num Bỏ qua num luật tiếp sau nếu luật hiện tại khớp
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Một số chỉ thị khác
• RewriteBase URL-path
Tiền tố của URL được dùng trong chỉ thị 
RewriteRule thay thế đường dẫn tương 
đối
• RewriteEngine on|off
Bật hoặc tắt viết lại URL
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Ví dụ
Options +FollowSymLinks 
RewriteEngine on
RewriteBase /labs/webapp-
development/cources/2013-spring-int3306-2/ 
RewriteRule ^std/[A-Za-z\-]+_(.*)\.html$ 
std/viewStd.php?std_id=$1 
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.
Tiếp theo
Web Service
Lê Đình Thanh, Bài giảng Phát triển ứng dụng web.

File đính kèm:

  • pdfbai_giang_phat_trien_ung_dung_web_bai_7_xu_ly_trang_web_nang.pdf