ASP Tutorial P4 -Các hàm và đối tượng


Từ: 18:29 11/08/2012
Bài: 13
Cảm ơn: 16
Thích: 3

1. Một số hàm hữu dụng trong ASP

a. Các hàm xử lý văn bản

&: Để ghép các chuỗi với nhau ta dùng dấu &

<%

Dim a, b

A=”Hà Nội”

B=”2012”

Response.write a&b

‘kết quả in ra =”Hà Nội 2012”

%>

 

LTRIM, RTRIM, TRIM : Cắt bỏ các khoảng trắng thừa

Ltrim(xâu as String)  ‘Cắt bỏ khoảng trắng bên trái
Rtrim(xâu as String)  ‘Cắt bỏ khoảng trắng bên phải
Trim(xâu as String)   ‘Cắt bỏ khoảng trắng ở cả 2 bên

Ví dụ: 

<%
        dim a,b,c,d,e,f
        a=”
        Hello”
        b=Ltrim(a)                 ‘cắt bỏ hết các khoảng trắng bên trái

        c=”Hello
        ”
        d=Rtrim(a)                ‘cắt bỏ hết các khoảng trắng bên phải

        e=” Hello
         world
         ”
         f=Trim(a)                  ‘cắt bỏ hết các khoảng trắng thừa 2 bên và ở giữa
%>

LEN: Lấy chiều dài chuỗi

Len(xâu as String)

Ví dụ:

<%
            dim a,b

a=”Cộng hòa xã hội chủ nghĩa Việt Nam”

b=len(a)

%>


UCASE, LCASE: Chuyển chữ hoa thành chữ thường và ngược lại

Ucase(xâu as String) ‘Chuyển sang chữ hoa
Lcase(xâu as String)  ‘Chuyển sang chữ thường

Ví dụ:

<%

dim a,b,c,d

a=”hello”

b=Ucase(a)

‘b=”HELLO”

c=”GOODBYE”

d=Lcase(c)

‘d=”goodbye”

%>

 

 

LEFT, RIGHT, MID: Lấy một chuỗi con trong chuỗi lớn

LEFT(xâu as String, n as Integer)   ‘Lấy n kí tự bên trái của xâu
RIGHT(xâu as String, n as Integer)  ‘Lấy n kí tự bên phải của xâu
MID(xâu as String, n1 as Integer, n2 as Integer)    ‘Lấy n2 kí tự của xâu bắt đầu tại vị trí n1

 

Ví dụ: 
<%

Dim a,b,c,d

a=”Hello World”

b=left(a,5)                 ‘lấy 5 ký tự bên trái của a, kết quả b=”Hello”

c=right(a,5)               ‘lấy 5 ký tự bên phải của a, kết quả c=”World”

d=mid(a,7,1)             ‘lấy 1 ký tự của a từ vị trí thứ 7, kết quả d=”W”

%>

SPLIT,JOIN:: Hàm Split Cắt xâu thành nhiều đoạn bằng cách xác định kí tự ngăn cách ở trên và cho các đọan đó lần lượt vào một mảng. Ngược lại, hàm Join sẽ nối toàn bộ các phần tử trong mảng và chèn thêm vào kí tự ngăn cách xen giữa các phần tử

SPLIT(xâu as String, kí tự ngăn cách)

JOIN(mảng, kí tự ngăn cách)

Ví dụ: 

<%
x=”Hà Nội; Hải Phòng; HCM”
y=split(x;”;”)        ‘ Lúc này y là một mảng có 3 phần tử đánh số là 0,1,2
Response.write y(0)        ‘y(0) sẽ nhận giá trị  =“Hà Nội”
%>

<%
dim x=2
x(0)=”Hà Nội”
x(1)=”Hải Phòng”
x(2)=”HCM”
y=join(x,”-”)
Response.write y      ‘y sẽ nhận giá trị= “Hà Nội-Hải Phòng-HCM”
%>

CSTR(biến): Chuyển đổi (convert) giá trị của biến ở bất cứ kiểu gì về kiểu string

Ví dụ: 

<%
x=100
y=cstr(x)
Response.write y        ‘y sẽ nhận giá trị =”100”
%>

Các hàm khác: Space,String, StrReverse,StrComp,InStr,Replace

b. Các hàm toán học và Các toán tử

Cint: Chuyển sang kiểu Integer

<%

Dim a,b

a=”3”

b=cint(a)

‘b sẽ nhận giá trị =3

%>

Int: Hàm lấy phần nguyên của một số

<% 

Dim x=14.9

y=Int(x)     ‘kết quả y=14

%>

SQR(n): Hàm khai căn bậc 2

<%
dim y

y=sqr(9)

response.write y    ‘y sẽ nhận giá trị =3
%>

ROUND(số, n): Làm tròn số đến n chữ số thập phân

<%

y=round(1.35624,2)

response.write y

‘y sẽ nhận giá trị =1.35

%>

RND(): Trả về một số ngẫu nhiên  bất kì trong đoạn [0,1]

<%
y=rnd()
response.write y
‘y sẽ nhận giá trị bất kì trong đoạn, =1.435 chẳng hạn.
%>

Các hàm khác : Abs, Atn, Cos, Exp, Fix, Hex, Log, Oct, Randomize,
Round, Sin, Sqr, Tan

c.Các toán tử:

Toán tử MOD : Toán tử chia lấy phần dư
a mod b: lấy phần dư khi chia a cho b

<%
y=5 mod 4
response.write y
‘ y sẽ nhận giá trị =1
%>

Toán tử \ : Toán tử chia lấy phần nguyên
a\b: lấy phần nguyên khi chia a cho b

<%
y=7\2
response.write y
‘y sẽ nhận giá trị =3
%>

Toán tử AND: Thực hiện phép “và” giữa 2 kiểu logic

<%
y=(7>2) and (5>4)
response.write y
‘ y nhận giá trị =”True”
%>

Toán tử OR: Thực hiện phép “hoặc” giữa 2 kiểu logic

<%
y= (6>2) or (9<5)
response.write y
‘ y nhận giá trị = “True”
%>

c. Các hàm xử lý ngày tháng và thời gian

Cdate: Chuyển sang kiểu ngày tháng

<%

Dim a, b

a=”22/1/2004”          ‘a đang được hiểu là một chuỗi

b=Cdate(a)               ‘chuyển chuỗi a sang đúng kiểu ngày tháng

%>

Date, Time, Now: Lấy ngày, giờ hiện hành trên server

Date()      ‘ trả về ngày hiện hành
Time()     ‘trả về giờ hiện hành
Now()      ‘trả về ngày và giờ hiện hành

Ví dụ:

<%

Response.write “Hom nay la ngay: ” &Date

Response.write “Bay gio la”&Time

Response.write Now

%>
hoặc
<%
dim a,b,c
a=Date()
b=Time()
c=Now()
Response.write a        ‘a sẽ =9/26/2012

Response.write b        ‘b sẽ =”AM 10:40:111

Response.write c      ‘c sẽ = 9/26/2012 AM 10:40:111

%>

Weekday(ngày): Trả về thứ trong tuần ứng với ngày đã cho 1=chủ nhật, 2=thứ 2, …

<%
y=weekday(date())
response.write y
‘y sẽ =3 nghĩa là thứ 3
%>

Các hàm khác: DateAdd, DateDiff, DatePart, Year, Month, Day, Hour, Minute, Second

d. Các hàm kiểm tra:

Các hàm này cho phép kiểm tra kiểu của biến và biểu thức
Isdate: Kiểm tra có phải đúng kiểu ngày tháng không?

<%

Dim a

a=”1/1/2004”

If Isdate(a) then

Response.write “a đúng là kiểu ngày tháng ”

End if

%>

IsNumeric: Kiểm tra có phải đúng kiểu số không?

<%

Dim a

A=”13”

If IsNumeric(a) then

Response.write “a đúng là kiểu số”

End if

%>

Các hàm khác: IsArray,IsEmpty,IsNull,IsObject

f. Các hàm về mảng

LBOUND(mảng) : Trả về chỉ số nhỏ nhất của mảng
UBOUND(mảng): trả về chỉ số lớn nhất của mảng

<%
dim x(10)
response.write lbound(x)
‘ y sẽ nhận giá trị =0
response.write ubound(x)
‘x sẽ nhận giá trị = 10
%>

e. Các hàm format

Các hàm này cho phép định dạng dữ liệu
FormatDateTime ‘Dữ liệu hiển thị kiểu ngày tháng
FormatCurrency  ‘Dữ liệu hiển thị kiểu tiền tệ
FormatNumber    ‘Dữ liệu hiển thị kiểu số
FormatPercent    ‘Dữ liệu hiển thị kiểu phần trăm

---------------------------------------------------------------------------------------------------

2. Các đối tượng xây dựng sẵn (built-in objects) trong ASP

Đối tượng là một nhóm các hàm và biến.
Một số đối tượng đã được xây dựng sẵn và có thể sử dụng ngay mà không cần khởi tạo: Request, Response, Session, Application, Server.
Một số đối tượng cần khởi tạo nếu muốn sử dụng Dictionary, Connection, Recordset...

2.1 Đối tượng Request

Request và Response là 2 đối tượng được dùng nhiều nhất trong lập trình ASP, dùng trao đổi dữ liệu giữa trình duyệt và server.
Request cho phép lấy về các thông tin từ client. Khi browser gửi một yêu cầu trang web lên server ta gọi là 1 request
Chúng ta thường sử dụng các lệnh Request sau
a)  Request.QueryString
Cho phép server lấy về các giá trị được gửi từ người dùng qua URL hoặc form (method GET).
Ví dụ ở trang home.asp chúng ta đặt một dòng liên kết sang trang gioithieu.asp với thẻ sau:
 
<a href=”gioithieu.asp?tacgia=Tran Van A”>
Nhấn vào đây để sang trang giới thiệu
</a>
biến “tacgia” có giá trị là “Tran Van A” được người dùng gửi tới server kèm theo URL (người dùng có thể gõ thẳng địa chỉ
“http://localhost/alias/gioithieu.asp?tacgia=Tran Van A” trên thanh Address của trình duyệt)
Server muốn nhận lại giá trị này thì dùng request.QueryString ở trang gioithieu.asp
<%
dim a
a=request.querystring(“tacgia”) ‘lúc này a có gía trị là “Tran Van A”
response.write “Tác giả của trang home.asp là: ” &a
%>
 
Tương tự như vậy nếu người dùng gửi giá trị Tran Van A thông qua một biến trong form và chọn method GET

 

<form method=”get” action =”gioithieu.asp”>
<input type=”text” name=”tacgia” value=”Tran Van A”>
<input type=”submit” name=”submit” value=”Nhan vao day de sang trang gioi thieu”>
</form>

 

 
b) Request.Form
Cho phép server lấy về các giá trị được gửi từ người dùng qua form (method POST).
Chẳng hạn file form.asp:

 

<form method=”POST” action =”xulyform.asp”>
<input type=”text” name=”User”>
<input type=”submit” name=”submit” value=”Nhan vao day de sang trang
gioi thieu”>
</form>

 

File xulyform.asp làm nhiệm vụ xử lý thông tin từ Form này sẽ dùng câu lệnh request.form để nhận lại thông tin người dùng đã gõ vào:

 

<%Dim x
x=Request.form(“User”) %>
response.write “Tên người dùng là: ”&x
%>

 

2.2 Đối tượng Response

Đối tượng Response dùng để gửi các đáp ứng của server cho client.
Chúng ta thường dùng một số lệnh Response sau:
a)  Response.Write
Đưa thông tin ra màn hình trang web
Ví dụ để đưa câu chào Hello ra màn hình ta dùng lệnh sau:

<%response.write “Hello”%>

 
Hiển thị thời gian trên server ra màn hình:
<%response.write now%>
hoặc
<%=now%>
 
now là hàm lấy ngày giờ hệ thống trên server
 
b) Response.Redirect
Chuyển xử lý sang một trang Asp khác.
Ví dụ trang xulyform.asp sau khi kiểm tra form đăng nhập thấy người dùng không có quyền vào website thì nó sẽ chuyển cho file Error.asp(file này hiển thị một thông báo lỗi user không có quyền truy cập)

<% Response.redirect “error.asp” %>

 
c) Response.End
Ngừng xử lý các Script. Dùng lệnh này khi muốn dừng xử lý ở một vị trí nào đó và bỏ qua các mã lệnh ASP ở phía sau. Đây là cách rất hay dùng trong một số tình huống, chẳng hạn như debug lỗi.

2.3 Đối tượng Session

Session là một phiên làm việc giữa từng người dùng và web server, nó bắt đầu khi người đó lần đầu tiên truy cập tới 1 trang web trong website và kết thúc khi người đó rời khỏi website hoặc không tương tác với website trong một khoảng thời gian nhất định (time out). Như vậy tại một thời điểm một website có bao nhiêu người truy cập thì có bấy nhiêu phiên ứng với mỗi người, các phiên này độc lập nhau. Để lưu những thông tin tác dụng trong 1phiên, người ta dùng đối tượng Session, ví dụ khi một user bắt đầu session với việc login vào hệ thống, và user đã login đó cần được hệ thống ghi nhớ trong toàn phiên làm việc (nhằm tránh việc người dùng phải đăng nhập lại

mỗi khi đưa ra một request).Giá trị của biến kiểu session có phạm vi trong tất cả các trang ASP của ứng dụng, nhưng không có tác dụng đối với phiên làm việc khác.
Ví dụ, sử dụng biến session sau đây đếm số lần 1 người đã truy cập vào trang web:

<% session(“x”)=session(“x”)+1 %>

session(“x”) đại diện cho số lần mà một user đã truy cập vào trang home.asp. Với 2 người dùng khác nhau thì giá trị session(“x”) lại khác nhau.
Thật vậy , A có thể truy cập 10 lần (session(“x”) =10) trong khi B có thể truy cập 2 lần thôi (session(“x”) =2)
 
Server kết thúc và hủy bỏ đối tượng session khi:
- Người dùng không triệu gọi các trang của ứng dụng hoặc cập nhật làm mới (refresh) lại thông tin của trang trong một thời gian nhất định. Khi một session hết thời gian hiệu lực nó sẽ được xem như hết hạn sử dụng ,tất cả các biến lưu trong session và bản thân session sẽ bị hủy bỏ. Có thể kiểm tra và tăng giảm thời gian Timeout của Session tính bằng giây như sau:

 

<%
Session.Timeout = 500
%>

 

- Trang ASP gọi đến phương thức Abandon của Session:

 

<%
Session.Abandon
%>

 

 

Việc khởi tạo và kết thúc 1 biến session có thể viết trong các hàm sự kiện Session_OnStart và Session_OnEnd được định nghĩa trong file global.asa

2.4 Đối tượng Application

Application đại diện cho toàn bộ ứng dụng, bao gồm tất cả các trang web trong website. Để lưu trữ những thông tin có tác dụng trong toàn ứng dụng, tức là có giá trị trong tất cả các trang asp và tất cả các phiên, người ta dùng đối tượng Application.
Điểm khác của biến application so với biến session là session chỉ có tác dụng đối với mỗi phiên, còn biến application có tác dụng với mọi phiên.
Ví dụ, để đếm xem có bao nhiêu người truy cập vào website, chúng ta có thể dùng một biến Application. Mỗi khi một người dùng mới truy cập vào website ta tăng biến này lên 1 đơn vị để chỉ rằng đã có thêm 1 người truy cập.

<% application(“x”)=application(“x”)+1 %>

Trang home.asp muốn hiển thị số người truy cập chỉ cần in giá trị của biến này:

 

<%
response.write “Số người đã truy cập vào website là:”&application(“x”)
%>

Với 2 phiên khác nhau thì giá trị application(“x”) là như nhau.

Thật vậy , A và B khi truy cập vào trang home.asp đều thấy: “Số người đã truy cập vào website là 3” (trong trường hợp application(“x”) =3) Việc khởi tạo và kết thúc 1 biến application có thể viết trong các hàm sự kiện Application_onStart và Application_onEnd được định nghĩa trong file global.asa

 

Khóa Application:
Do biến application có thể được dùng chung bởi nhiều phiên nên sẽ có trường hợp xảy ra xung đột khi có 2 phiên cùng thay đổi giá trị một biến application.
Để ngăn chặn điều này chúng ta có thể dùng phương thức Application.lock để khóa biến application trước khi thay đổi nó. Sau khi sử dụng xong biến này có thể giải phóng khóa bằng phương thức application.unlock (xem ví dụ sau).

2.5 File Global.asa

File này là file tùy chọn chứa các khai báo đối tượng, biến có phạm vi toàn ứng dụng. Mã lệnh viết dưới dạng Script. Mỗi ứng dụng chỉ được phép có nhiều nhất 1 file Global.asa, nằm ở thư mục gốc của ứng dụng. Người ta thường dùng global.asa trong trường hợp muốn có những xử lý khi một session bắt đầu hay kết thúc, một application bắt đầu hay kết thúc, thông qua các hàm sự kiện :
Application_Onstart : hàm sự kiện này xảy ra khi ứng dụng asp bắt đầu hoạt động, tức là khi người dùng đầu tiên truy cập tới trang web đầu tiên khi ứng dụng hoạt động.
Session_Onstart: hàm sự kiện này xảy ra mỗi khi có một người dùng mới truy cập vào ứng dụng (bắt đầu 1 session)
Session_OnEnd: hàm sự kiện này xảy ra mỗi khi 1 người dùng kết thúc session của họ
Application_OnEnd: hàm sự kiện này xảy ra khi ứng dụng dừng.
 
File Global.asa có cấu trúc như sau:

 

<script language="vbscript" runat="server">
Sub Application_OnStart
‘..........
End sub
Sub Application_OnEnd
‘.............
End Sub
Sub Session_OnStart
‘.........
Application("x")=Application("x")+1
End sub
Sub Session_OnEnd
‘............
End Sub
</script>
Ví dụ sau đây sẽ đếm số người dùng hiện đang truy cập website. Số người dùng được lưu trữ trong biến Application(“songuoi”). Ở bất cứ đâu trong ứng dụng nếu muốn hiển thị số người dùng chúng ta chỉ việc chèn lệnh hiển thị nó:
<%=Application(“songuoi”)%>
Ngoài ra ứng dụng cũng cho phép đếm số lần 1 người đã truy cập website trong phiên làm việc của họ. Số lần được lưu trữ trong biến Session(“solan”)

Global.asa

<script language="vbscript" runat="server">
Sub Application_OnStart
Application("songuoi")=0
End Sub
 
Sub Session_OnStart
Application.Lock
Application("songuoi")=Application("songuoi")+1
Application.UnLock
 
Session(“solan”)=0
End Sub
 
Sub Session_OnEnd
Application.Lock
Application("songuoi")=Application("songuoi")-1
Application.UnLock
End Sub
 
Sub Application_OnEnd
End Sub
 
</script>
 
Home.asp
<html>
<body>
<p>
Có <%response.write(Application("songuoi"))%>
người đang truy cập website
</p>
<%session(“solan”)= session(“solan”)+1 %>
<p>
Bạn đã truy cập trang này <%response.write(session("solan"))%>
lần!
</p>
</body>
</html>

2.6 Đối tượng Dictionary

Đối tượng Dictionary lưu trữ thông tin theo từng cặp khóa/ giá trị. Nó khá giống với mảng nhưng có khả năng xử lý linh hoạt đối với những cặp dữ liệu có quan hệ kiểu từ điển (cặp khóa/ giá trị ví dụ như : mã Sinh viên/ tên Sinh viên), trong đó khóa được xem là từ cần tra và giá trị chính là nội dung của từ tra được trong từ điển.
Muốn sử dụng đối tượng Dictionary chúng ta phải khởi tạo nó:

 

<%
set d=server.createObject("Scripting.Dictionary")
d.add "work","Lam viec"
d.add "learn","Hoc tap" ‘tương tự như mảng nhưng mỗi phần tử là một cặp khóa/giá trị
response.write "work nghĩa tiếng Việt là: "&d.item("work")
response.write "learn nghĩa tiếng Việt là: "&d.item("learn")
set d=nothing
%>
Một số ứng dụng của đối tượng này như dùng mô phỏng giỏ hàng chứa hàng hóa(shopping cart) với cặp khóa/giá trị là: ProductID/Quantity , sổ địa chỉ với cặp khóa/giá trị là: CustomerName/Address.

2.7 Đối tượng Server

Đối tượng Server được dùng để truy cập các thuộc tính và phương thức của server .Ta thường dùng 2 lệnh sau
a) Server.CreateObject
Khởi tạo 1 đối tượng.
Ví dụ:
Tạo một đối tượng Connection:

<%Set conn=Server.CreateObject(“ADODB.Connection”)%>

Tạo một đối tượng Dictionary:

<%set d=server.createObject("Scripting.Dictionary")%>

 
b) Server.Mappath
Biến đường dẫn tương đối thành tuyệt đối.
Ví dụ:

 

<%
str= server.mappath("nhanvien.mdb")
Response.write str
%>
Sẽ cho kết quả: “C:\WEB\nhanvien.mdb” trong trường hợp file nhanvien.mdb nằm trong thư mục C:\WEB
Ta thường áp dụng server.mappath trong những trường hợp xử lý đường dẫn tương đối,
ví dụ là chuỗi kết nối vào database

 connstr="provider=microsoft.jet.oledb.4.0; data source="&server.mappath("nhanvien.mdb")&";" 

 

__________________________-!- -!- -!-__________________________