Tải bản đầy đủ (.pdf) (79 trang)

XÂY DỰNG CỔNG THÔNG TIN ĐIỆN TỬ MUA BÁN, RAO VẶT TRỰC TUYẾN CHO CÔNG TY TRUYỀN THÔNG VÀ GIẢI TRÍ HÒANG TRẦN – HÀ NỘI

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.53 MB, 79 trang )

MỤC LỤC
MỤC LỤC............................................................................................................................................ 0
LỜI NÓI ĐẦU ..................................................................................................................................... 2
DANH SÁCH HÌNH VẼ VÀ BẢNG BIỂU ......................................................................................... 4
DANH SÁCH HÌNH VẼ.................................................................................................................. 4
DANH SÁCH BẢNG BIỂU............................................................................................................. 5
CHƯƠNG 1: JAVA VÀ JSP (JAVA SERVER PAGE) ...................................................................... 6
1.1. TỔNG QUAN VỀ JAVA........................................................................................................... 6
1.2. CƠ BẢN VỀ JAVA ................................................................................................................... 6
1.2.1. Cấu trúc của một chương trình Java chuẩn....................................................................... 6
1.2.2. Các lệnh cơ bản trong Java................................................................................................ 7
1.2.2.1. Lệnh if và if…else....................................................................................................................... 7
1.2.2.2. Lệnh switch…case...................................................................................................................... 7
1.2.2.3. Lệnh for...................................................................................................................................... 8
1.2.2.4. Lệnh while.................................................................................................................................. 9
1.2.2.5. Lệnh do…while .......................................................................................................................... 9

1.2.3. Lớp trong Java ................................................................................................................... 9
1.2.4. Kế thừa trong Java............................................................................................................10
1.3. CƠ BẢN VỀ JAVA SERVER PAGE (JSP)..........................................................................11
1.3.1. Cấu trúc cơ bản của JSP...................................................................................................11
1.3.2. Biên dịch trang JSP ..........................................................................................................11
1.3.3. Kịch bản (script)................................................................................................................12
1.3.4. Cấu trúc lệnh của JSP.......................................................................................................13
CHƯƠNG 2: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU ORACLE ..............................................................14
2.1 TỔNG QUAN VỀ ORACLE.....................................................................................................14
2.2. CÁC CHỨC NĂNG CƠ BẢN CỦA ORACLE ........................................................................14
2.3. ORACLE VÀ CÔNG NGHỆ CLIENT/SERVER ...................................................................14
2.3.1. Ba ưu điểm của kiến trúc công nghệ Clienr/Server so với kiến trúc công nghệ máy lớn ...14
2.3.2. Ưu điểm của thủ tục lưu trữ trong với một khối lệnh PL/SQL ..........................................15
2.3.3. Chức năng của NET8........................................................................................................15


2.4. CẤU TRÚC CỦA ORACLE ....................................................................................................16
2.5. PL/SQL ....................................................................................................................................16
2.5.1. Cấu trúc của PL/SQL........................................................................................................16
2.5.2. Con trỏ (Cursor)................................................................................................................17
2.6. SQL*PLUS ..............................................................................................................................18
2.6.1. Các cách kết thúc một lệnh SQL trong SQL*PLUS...........................................................18
2.6.2. Thêm một hàng mới vào bộ đệm của SQL*Plus................................................................19
2.6.2. Biến liên kết REFCURSOR và cách sử dụng ....................................................................19
2.7. KẾT NỐI ORACLE VỚI JSP .................................................................................................20
CHƯƠNG 3:AJAX VÀ CSS...............................................................................................................22
3.1. AJAX........................................................................................................................................22
3.1.1 Gới thiệu về AJAX..............................................................................................................22
3.1.2. HTTP Requests .................................................................................................................23
3.1.3. Đối tượng XMLHttpRequest..............................................................................................23
3.1.3.1 Thuộc tính onreadystatechange ................................................................................................. 23
3.1.3.2. Thuộc tính readyState............................................................................................................... 24
3.1.3.3. Thuộc tính responseText........................................................................................................... 24
3.1.3.4. Các trình duyệt hỗ trợ............................................................................................................... 25

3.1.4. Gửi yêu cầu tới Server.......................................................................................................26
3.1.5. Script phía Server ..............................................................................................................28
3.1.6. Kết nối với cơ sở dữ liệu ....................................................................................................29
3.1.6.1. Giải thích ví dụ ......................................................................................................................... 29
3.1.6.2. Mã JavaScript........................................................................................................................... 30
3.1.6.3. Trang JSP phía Server.............................................................................................................. 31

3.2. CSS (CASCADING STYLE SHEET) .....................................................................................33


3.2.1. Giới thiệu về CSS ..............................................................................................................33

3.2.2. Tạo và chèn các định nghĩa CSS.......................................................................................33
3.2.2.1. Định nghĩa và khai báo CSS ngoại ........................................................................................... 33
3.2.2.1. Định nghĩa và sử dụng CSS nội................................................................................................ 34
3.2.2.1. Khai báo kiểu CSS trực tiếp (inline).......................................................................................... 34

CHƯƠNG 4: XÂY DỰNG ỨNG DỤNG CỔNG THÔNG TIN ĐIỆN TỬ MUA BÁN RAO VẶT
TRỰC TUYẾN ...................................................................................................................................35
4.1. GIỚI THIỆU............................................................................................................................35
4.2. PHÂN TÍCH HỆ THỐNG .......................................................................................................35
4.2.1. Khảo sát hệ thống ban đầu................................................................................................35
4.2.2. Các chức năng của website ...............................................................................................35
4.2.3. Biểu đồ phân cấp chức năng .............................................................................................36
4.2.4. Biểu đồ luồng dữ liệu ........................................................................................................36
4.2.4.1. Biểu đồ luồng dữ liệu mức đỉnh................................................................................................ 36
4.2.4.2. Biểu đồ luồng dữ liệu mức dưới đỉnh........................................................................................ 37
4.2.4.2.1. Chức năng “thành viên” .................................................................................................. 37
4.2.4.2.2. Chức năng “đăng bài” ..................................................................................................... 38
4.2.4.2.3. Chức năng “Hiển thị bài viết” ......................................................................................... 38
4.2.4.2.3. Chức năng “Tổng hợp gởi E-mail báo cáo”..................................................................... 39

4.2.5. Mô hình quan hệ...............................................................................................................39
4.2.5. Thiết kết cơ sở dữ liệu .......................................................................................................40
4.2.5. Lược đồ quan hệ giữa các bảng ........................................................................................43
4.3. XÂY DỰNG ỨNG DỤNG........................................................................................................45
4.3.1. Các thư viện cần thiết cho ứng dụng.................................................................................45
4.3.2. Xây dựng các lớp ứng dụng xử lý dữ liệu cho ứng dụng ...................................................45
4.3.2.1. Lớp ConnectDB........................................................................................................................ 45
4.3.2.2. Lớp SmtpGmail......................................................................................................................... 47
4.3.2.2. Các lớp khác............................................................................................................................. 48


4.3.3. Xây dựng các trang nội dung JSP .....................................................................................48
4.3.3.1. Sử dụng JavaScript và áp dụng AJAX vào website.................................................................... 49
4.3.3.2. Sử dụng Cascading Style Sheet (CSS)....................................................................................... 50

4.3.4. Thiết kế các trang JSP.......................................................................................................51
4.3.4.1. Modul đăng ký và quản lý thành viên ....................................................................................... 51
4.3.4.2. Modul đăng bài......................................................................................................................... 64
4.3.4.3. Modul gửi báo cáo tổng kết đến tất cả các thành viên ............................................................... 71

KẾT LUẬN.........................................................................................................................................77
TÀI LIỆU THAM KHẢO ..................................................................................................................78

1


LỜI NÓI ĐẦU
Web là công nghệ trên Internet cho phép hiển thị thông tin một cách sinh
động, gần gũi với con người hơn trên một trang thông tin gọi là trang Web. Trang
Web được trình bày trên các bộ trình duyệt Web (Browser) trên các máy Client.
Trang Web chính là các file dạng Text được cấu trúc hoá theo ngôn ngữ HTML.
Hiện nay và tương lai thì Internet rất phổ biến và ngày càng có nhiều
người dùng. Internet được áp dụng vào tất cả các lĩnh vực trong cuộc sống.
Nhưng nổi bật nhất là lĩnh vực giải trí đa phương tiện và thương mại điện tử.
Vì vậy em đã quyết định xây dựng đồ án là một ứng dụng “Cổng thông tin
điện tử trực tuyến cho Công ty Truyền thông và Giải trí Hoàng Trần”. Đồ án sẽ
tập chung và giới thiệu một cách tổng quan nhất để xây dựng ứng dụng này.
Trong đồ án cũng chỉ đưa ra những thư viện và chức năng tổng quát và cốt lõi
nhất.
Hiện nay có rất nhiều các website có chức năng và tính năng tương
tự.Các Website này hoạt động rất hiệu quả và đem lại nguồn thu rất lớn cho các

công ty và cá nhân.
Website mà đã được xây dựng là thành quả của em khi tiến hành thực tập
(làm việc) tại công ty Truyền thông và Giải trí Hoàng Trần ở Hà Nội. Website
được đặt trên tên miền www.daoquanhthitruong.com.
Khi thực hiện website này em cũng có sử dụng các công cụ để thiết kế và
viết mã của website. Các công cụ này gồm: Netbean5.5, JBuilder X, Macromedia
Dreamweaver 8, Photoshop CS2,…
Ngoài ra em cũng có sử dụng một số thư viện có sẵn để phục vụ các chức
năng như là upload, gửi mail,…
Trong tương lai em và công ty sẽ tiếp tục phát triển và nâng cấp các chức
năng có sẵn cũng như là xây dựng mới để cho website hoạt động hiệu quả và
phong phú hơn.
Khi thực hiện đồ án này em đang thực tập (làm việc) tại công ty Truyền
Thông và Giải Trí Hoàng Trần ở Hà Nội. Nên em đã được sự giúp đỡ rất nhiều từ

2


các thầy cô trong khoa, các đồng nghiệp ở công ty Truyền thông và Giải trí
Hoàng Trần ở Hà Nội.
Đặc biệt là Thầy giáo Phùng Trung Nghĩa ở bộ môn Điện tử - Viễn thông
đã giúp đỡ và định hướng em trong toàn bộ thời gian thực tập cũng như là xây
dựng đồ án. Ngoài ra còn có anh Hoàng Đình Quy, phó giám đốc công ty Truyền
thông và Giải trí Hoàng trần đã tận tình hướng dẫn kỹ thuật cho em khi em xây
dựng website “Cổng thông tin điện tử mua bán rao vặt cho công ty Truyền thông
và Giải trí Hoàng Trần”.
Sau cùng em cũng xin chân thành cảm ơn toàn thể các thầy cô, các bạn
đồng nghiệp trong công ty và các bạn xinh viên đã giúp đỡ và góp ý kiến cho cho
em hoàn thành đồ án cũng như là website như đã trình bày.


3


DANH SÁCH HÌNH VẼ VÀ BẢNG BIỂU
DANH SÁCH HÌNH VẼ
TÊN HÌNH

MÔ TẢ

TRANG

1.1

Mô hình kế thừa trong Java

11

1.2

Quy trình biên dịch trang JSP

13

3.1

Mô hình hoạt động của AJAX

23

3.2


Kết nối với cơ sở dữ liệu với AJAX

30

4.1

Biểu đồ phân cấp chức năng của ứng dụng

38

4.2

Biểu đồ luồng dữ liệu mức đỉnh

39

4.3

4.4

4.5

4.6

Biểu đồ luồng dữ liệu mức dưới đỉnh chức năng
“thành viên”
Biểu đồ luồng dữ liệu mức dưới đỉnh chức năng
“đăng bài”
Biểu đồ luồng dữ liệu mức dưới đỉnh chức năng

“Hiển thị”
Biểu đồ luồng dữ liệu mức dưới đỉnh chức năng
“Tổng hợp và gửi Email báo cáo ”

39

40

40

41

4.7

Mô hình quan hệ thành viên - bài viết

41

4.8

Mô hình quan hệ thành Quốc Gia - Tỉnh -Thành viên

41

4.9

Mô hình quan hệ Loại bài viết – Bài viết

42


4.10

Mô hình quan hệ thực thể của ứng dụng

42

4.11

Lư ợc đồ quan hệ dữ liệu

46

4


4.12

Giao diện của ứng dụng

50

4.13

Trang quản lý thông tin thành viên

61

4.14

Trang đăng bài


66

4.15

Kết quả gửi E-mail

78

DANH SÁCH BẢNG BIỂU
TÊN BẢNG

MÔ TẢ

TRANG

3.1

Thuộc tính readyState

25

4.1

Bảng dữ liệu quản lý thành viên

42

4.2


Bảng dữ liệu quản lý tỉnh

43

4.3

Bảng dữ liệu quản lý quốc gia

43

4.4

Bảng dữ liệu quản lý loại bài viết

43

4.5

Bảng dữ liệu quản lý bài viết qua tổng đài 1900555508

43

4.6

Bảng dữ liệu quản lý bài viết

44

4.7


Bảng dữ liệu quản lý bài viết qua tổng đài 1900555508

45

5


CHƯƠNG 1:

JAVA VÀ JSP (Java Server Page)
1.1. TỔNG QUAN VỀ JAVA
Java được phát triển vào năm 1995 bởi Sun Microsystem. Ban đầu Java
được thiết kế để sử dụng cho các thiết bị có phần cứng giới hạn như là các thiết
bị điện tử dân dụng, các thiết bị điện tử điện lạnh, …
Nhưng ngay lập tức người ta đã ta thấy được sức mạnh của nó và đã phát
triển nó để có thể làm được nhiều thứ khác như ngày nay. Ngày nay Java cũng
vẫn là ứng cử viên lớn cho cho việc phát triển các ứng dụng dành cho các thiết bị
có phần cứng hạn chế đặc biệt là các ứng dụng cho các thiết bị di động. Không
những thế Java còn được sử dụng để xây dựng các ứng dụng mạng và Internet
như là các hệ thống Client-Server hay Website, ….

1.2. CƠ BẢN VỀ JAVA
Java là ngôn ngữ lập trình hướng đối tượng. Nó được thiết kế thừa kế các
ưu điểm của các ngôn ngữ được phát triển trước nó như là: Pascal, C\C++, …
Ưu điểm vượt trội của Java so với C++ là nó là một ngôn ngữ nhỏ gọn các
thư viện của được thiết kế thành các gói (pagket). Nếu cần sử dụng gói nào thì
chỉ việc nhập khẩu (import) nó. Java là ngôn ngữ đơn thừa kế nên tránh được một
số hậu quả chết người do nhầm lẫn, không kiểm soát được của người lập trình.
Tiếp theo sẽ là các kiến thức cơ bản về Java.


1.2.1. Cấu trúc của một chương trình Java chuẩn
Để mô phỏng cấu trúc của một chương trình Java chuẩn cũng giống như
với bao ngôn ngữ lập trình khác đó là chương trình Hello World. Và đây là
chương trình Hello World kinh điển.
//File name HelloWorld.java
class HelloWorld{
public static void main(String[] args){
System.out.println(“Hello World”);
}
}

6


Hãy ghi file trên với tên HelloWorld.java và sử dụng trình JDK để biên dịch và
chạy chương trình trên. Kết quả là chương trình sẽ in ra màn hình dòng chữ:
Hello World

1.2.2. Các lệnh cơ bản trong Java
Về cơ bản cấu trúc các lệnh của Java giống với C++. Dưới đây là chi tiết
cấu trúc và các các sử dụng của các lệnh trong Java.
1.2.2.1. Lệnh if và if…else
Lệnh if là lệnh rẽ nhánh với điều kiện đã cho. Cấu trúc như sau:
if(điều kiện rẽ nhánh){
//các câu lệnh xử lý dữ liệu
}

Ví dụ:
if(i==10){
System.out.println(“Mười”);

}

Lệnh if…else cũng là lệnh rẽ nhánh giống như if. Nhưng nếu điều kiện rẽ
nhánh sai thì chương trình sẽ thự c hiện các câu lệnh trong phát biểu else.
Ví dụ:
if(i==10){
System.out.println(“Mười”);
}else{
System.out.println(“Không phải Mười”);
}

1.2.2.2. Lệnh switch…case
Lệnh này cũng là lệnh rẽ nhánh.
Cấu trúc của lệnh như sau:
switch(điều kiện rẽ nhánh){
case trường hợp 1:
//Các câu lệnh xử lý dữ liệu
break;
case trường hợp 2:
//các câu lệnh xử lý dữ liệu
break;
7



default:
//Các câu lệnh xử lý dữ liệu.
break;
}


Lệnh này sẽ thực hiện kiểm tra điều kiện. Nếu điều kiện là trường hợp 1
thì nó sẽ thực hiện các câu lệnh tương ứng với trường hợp 1. Tương tự như thế
cho các trường hợp tiếp theo. Nếu không có trường hợp nào trùng với các trường
hợp đã đưa ra thì lệch sẽ thực hiện các câu lệnh ở trường hợp default.
Ví dụ:
switch(so){
case 1:
System.out.println(“Một”);
break;
case 2:
System.out.println(“Hai”);
break;
default:
System.out.println(“Rất nhiều”);
break;
}

1.2.2.3. Lệnh for
Đây là lệnh lặp được sử dụng khi chúng ta biết trước số lần lặp. Cấu trúc
của lệnh như sau:
for(biến chạy; điều kiện dừng; tăng biến chạy){
//Các câu lệnh xử lý dữ liệu
}

Ví dụ:
for(int i=0; i<10; i++){
System.out.println(i);
}

8



1.2.2.4. Lệnh while
Đây là lệnh lặp không biết trước số lần lặp. Lệnh lặp khi điều kiện đúng
và thoát khỏi lệnh khi điều kiện sai. Cấu trúc lệnh như sau:
while(điều kiện lặp){
//Các câu lệnh xử lý dữ liệu
}

Ví dụ:
int i = 0;
while(i<10){
System.out.println(i);
}

1.2.2.5. Lệnh do…while
Đây cũng là lệnh lặp không biết trước số lần lặp. Nhưng nó khác câu lệnh
while là nó thực hiện khối lệnh trong thân vòng lặp trước khi thực hiện kiểm tra
điều kiện lặp. Cấu trúc lệnh như sau:
do{
//Các câu lệnh xử lý dữ liệu
}while(điều kiện lặp)

Câu lệnh sẽ lặp khi điều kiện lặp còn đúng.
Ví dụ:
int i=0;
do{
System.out.println (i);
i++;
}while(i<10);


1.2.3. Lớp trong Java
Java là ngôn ngữ lập trình hướng đối tượng lên lớp là một đặc trưng nổi
trội cơ bản. Lớp được dùng để thiết kế lên các đối có các thuộc tính đặc trưng
của đối tượng đó. Để khai báo một lớp chúng ta dùng từ khóa class. Cấu trúc cơ
bản của một lớp trong Java.
class Text1 {
//Các thuộc tính và phương thức của đối tượng.
}
9


1.2.4. Kế thừa trong Java
Java là ngôn ngữ đơn kế thừa. Để khai báo kế thừa trong Java chúng ta sử
dụng từ khóa extends. Cấu trúc cơ bản của một lớp kế thừa như sau:
class A{
//Các thuộc tính và phương thức của lớp A.
}
class B extends A{
//Các thuộc tính và phương thức của lớp B.
}
class C extends A{
//Các thuộc tính và phương thức của lớp C.
}

Khi này thì đối tượng của lớp B được kế thừa các thuộc tính và phương thức của
lớp A và lớp C cũng được kế thừa các thuộc tính và phương thức của lớp A. Do
vậy mà người ta gọi lớp A là lớp cha còn lớp B, C là lớp con. Chúng ta có sơ đồ
mô tả sự kế thừa của ví dụ trên như hình 1.1.
class A

Các thuộc tính
Các phương thức

class B

class C

Các thuộc tính

Các thuộc tính

Các phương thức

Các phương thức

Hình 1.1 Kế thừa trong Java

10


1.3. CƠ BẢN VỀ JAVA SERVER PAGE (JSP)
Java Server Page (JSP) là một công nghệ của Java nhằm phục vụ cho việc
thiết kê các trang Web có nội dung động hoạt động theo mô hình Client-Server
trên Internet. JSP là một Server Script được kết hợp với các mã HTML.Tiền thân
của JSP là Servlet, Servlet thực chất là các lớp Java được thiết kế để phục vụ việc
tạo ra các trang Web có nội dung động. Nhưng mà nó có một nhược điểm là rất
khó cho việc tạo giao diện người dùng theo ý muốn cho trang Web. Do vậy mà
JSP đã ra đời nhằm khắc phục các hạn chế này của Servlet. Nhưng chúng ta cần
chú ý rằng trước khi đưa ra kết quả cuối cùng để hiển thị thành một trang như
mong đợi thì các trang JSP được biên dịch sang các trang Servlet rồi mới chuyển

thành các file .class rồi thực thi các file .class.

1.3.1. Cấu trúc cơ bản của JSP
Vì JSP là một Server Script nên nó được kết hợp sử dụng cùng với các mã
HTML và file của nó được ghi với phần mở rộng là .jsp. Dưới đây là cấu trúc cơ
bản.
<!-- Các mã HTML -->
<%
//Các mã lệnh JSP
%>
<!-- Các mã HTML -->

Ví dụ:
<html>
<head><title>My JSP</title></head>
<body>
<%
out.print(“Hello World”);
%>
</body>
</html>

1.3.2. Biên dịch trang JSP
Khi người dùng triệu gọi trang JSP lần đầu tiên, Web Server triệu gọi trình biên
dịch dịch trang JSP (trong trường hợp này là JDK) thành tập tin Java, tiếp đến tập
tin Java (Java Servlet) này sẽ được biên dịch ra class. Sau đó, class này thực thi
11


và trả về kết quả cho người sử dụng. Quá trình đó được mô hình hóa như hình

1.2 dưới đây.

Hình 1.2 Quy trình biên dịch trang JSP

1.3.3. Kịch bản (script)
Nội dung của JSP có thể khai báo lẫn lộn với mã HTML, chính vì vậy chúng ta
sử dụng cặp <%= %> để khai báo mã JSP. Ví dụ:
1-Giá trị biến str: <%=str%>
2-Giá trị biến i: <%=i%>
3-Giá trị cụ thể: <%=10%>

Trong trường hợp có nhiều khai báo, chúng ta sử dụng Scriptlet, điều này có
nghĩa là sử dụng cặp dấu như sau <%%> với khai báo JSP với cú pháp của Java.
Khai báo này là Scriptlet
<%
int = 0;
String str = “SELECT * FROM ABC”;
out.println(str);
%>

Còn khai báo sau là script: <%=i%>
12


1.3.4. Cấu trúc lệnh của JSP
Cấu trúc của các lệnh trong JSP hoàn toàn giống với cấu trúc lệnh trong Java.
JSP có tất cả các lệnh cơ bản của Java. Chúng ta cũng có thể sử dụng lớp trong
JSP bằng cách sử dụng các đối tượng của lớp.

13



CHƯƠNG 2:

HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU ORACLE
2.1 TỔNG QUAN VỀ ORACLE
Hệ quản trị cơ sở dữ liệu Oracle là sản phẩm của công ty Oracle. Đây là hệ quản
trị lớn và mạnh nhất trên thế giới hiện nay. Trong cấu trúc của hệ quản trị này
được tích hợp rất nhiều các công cụ. Oracle được đánh giá là hệ quản trị hiệu quả
nhất trong các vấn đề bảo mật, xử lý giao dịch với cường độ cao,…
Oracle là hệ quản trị rất đang năng. Nó vừa là hệ quản trị cơ sở dữ liệu quan hệ
đồng thời nó cũng có thể được áp dụng vào các cơ sở dữ liệu phân tán.
Đặc biệt là tính tương thích của nó với Java có thế nói là rất tuyệt vời. Chính vì
thế mà em quyết định sử dụng Oracle trong ứng dụng Website mà em đã thực
hiện.

2.2. CÁC CHỨC NĂNG CƠ BẢN CỦA ORACLE
 Lưu trữ dữ liệu.
 Tạo ra và duy trì cấu trúc dữ liệu.
 Cho phép nhiều người dùng truy xuất đồng thời.
 Hỗ trợ tính bảo mật và riêng tư.
 Cho phép lấy ra và xử lý các dữ liệu lưu trữ.
 Cho phép nhập và nạp dữ liệu.
 Cung cấp cơ chế chỉ mục (index) hệu quả để lấy nhanh các dữ liệu lựa
chọn.
 Cung cấp tính nhất quán giữa các bản ghi khác nhau.
 Bảo vệ dữ liệu khỏi mất mát bằng các quá trình sao lưu (backup) và phục
hồi (recovery).

2.3. ORACLE VÀ CÔNG NGHỆ CLIENT/SERVER

2.3.1. Ba ưu điểm của kiến trúc công nghệ Clienr/Server so với kiến
trúc công nghệ máy lớn
Cấu trúc Clienr/Server đưa ra một số ưu điểm so với các kiến trúc cũ:
 Nó hỗ trợ việc sử dụng nhiều chủng loại máy client khác nhau. Trong môi
trường ngày nay, người sử dụng có thể dùng Windows NT, Windows XP,
14


một máy Mac, hay một trạm UNIX, tất cả đều có thể nối với cùng một
Server.
 Trách nhiệm tính toán được phân bổ một cách hợp lý giữa client và server.
Máy client có trách nhiệm điều khiển giao diện người dùng- hiển thị các
thông tin, hợp lệ hóa đầu vào và cung cấp sự phản hồi (feedback) hợp lýtrong khi máy server được dùng như một server cơ sở dữ liệu.
 Nó độc lập với thủ tục mạng, hệ điều hành ở máy server và hệ điều hành ở
máy client. Sự độc lập này cho ta sự linh động lớn trong việc lựa chọn các
thành phần phần cứng và phần mềm của một hệ thống mới hay khi thực
hiện một ứng dụng client/server trên một cơ sở phần cứng đã tồn tại.

2.3.2. Ưu điểm của thủ tục lưu trữ trong với một khối lệnh PL/SQL
 Gọi một thủ tục lưu trữ trong từ một ứng dụng client giảm đáng kể mật độ
lưu thông mạng. Thay vì ứng dụng gởi một khối chương trình PL/SQL từ
client, thì chỉ cần một lệnh gọi đơn đến thủ tục hay hàm với một danh sách
tham số tùy ý.
 Các thủ tục lưu trữ trong cung cấp một cơ chế bảo mật hiệu quả và tiện
lợi. Một trong những đặc trưng của thủ tục lưu trữ trong với PL/SQL là nó
luôn thực hiện với đặc quyền (privilege) của chủ nhân thủ tục (procedure).
Diều này ngăn các user không không có quyền đọc mã thủ tục truy xuất
các đối tượng đặc quyền. . Đặc tính này thường dùng để giảm lượng giám
sát cấp phát quền mà DBA phải làm.
 Cả hai dạng text đã được biên dịch của thủ tục lưu trữ trong đều nằm trong

cơ sở dữ liệu. Do dạng biên dịch của thủ tục có sẵn và sẵn sàng thực hiện,
nhu cầu phân tích cú pháp và biên dịch PL/SQL lúc thực thi (runtime)
được giảm nhẹ.

2.3.3. Chức năng của NET8
Net8 là một phần mềm kết nối cơ sở dữ liệu dùng để cung cấp các thông
tin cơ sở dữ liệu xác thực, tối ưu trên mọi thủ tục mạng thông dụng. Net8 được
thiết kế để cung cấp tính trong suốt của server cho bất kỳ nút nào bên trong một
ứng dụng mạng và sử dụng các thành phần nằm trên cả hai phía client và server
của một ứng dụng.

15


Ngoài việc cung cấp sự kết nối giữa máy client và server trong môi trường
client/server, server cũng sử dụng Net8 để giao dịch các chuyển tác phân tán
(distributed transaction), các phép gọi thủ tục từ xa và sao lưu bảng (replication)
với các server khác. Các server tham chiếu đến các server khác bằng cách sử
dụng các liên kết cơ sở dữ liệu (database link) để định nghĩa tên của các cơ sở dữ
liệu từ xa. Các liên kết cơ sở dữ liệu đơn giản hóa quá trình phân tán bằng cách
cung cấp sự truy xuất trong suốt các đối tượng từ xa như các bảng và thủ tục, cho
phép một ứng dụng tham chiếu chúng như thể chúng nằm ở cơ sở dữ liệu cục bộ
của ứng dụng.

2.4. CẤU TRÚC CỦA ORACLE
Cấu trúc của Oracle bao gồm phần cứng và phần mềm. Phần cứng là một
máy tính để cài đặt Oracle lên đó.
Phần mềm là sức mạnh của Oracle. Trong hệ thống của Oracle đặc biết được
thiết kế gồm có các tập tin Redo Log. Các tập tin này sẽ được sử dụng để phục
hồi lại hệ thống khi hệ thống gặp sự cố.

Cấu thành của một thể hiện của Oracle như sau: Mỗi lúc một cơ sở dữ liệu
được tạo ra, một system global area (SGA) được định vị và các quá trình chạy
nền (background) của Orale được khởi động. Sự kết hợp giữa các quá trình
background và các bộ nhớ đệm gọi là một thể hiện của Oracle.

2.5. PL/SQL
Để truy truy xuất dữ liệu ngoài ngôn ngữ SQL cơ bản Oracle còn sử dụng
PL/SQL. Khi sử dụng PL/SQL để truy xuất dữ liệu có một số ưu điểm sau:
 PL/SQL được quản lý tập chung trong cơ sở dữ liệu Oracle. DBA quản lý
source code và đặc quyền thực hiện với cú pháp tương tự khi quản lý các
đối tượng cơ sở dữ liệu khác.
 PL/SQL giao tiếp tự nhiên với các đối tượng cơ sở dữ liệu khác.
 PL/SQL dễ đọc và có nhiều đặc trưng modul hóa code và quản lý lỗi.

2.5.1. Cấu trúc của PL/SQL
Bất kỳ một khối PL/SQL nào cũng có ba thành phần. Những thành phần
này là: thành phần khai bào biến, phần thực thi và trình xử lý exception.

16


 Phần khai báo biến chứa phần định danh tất cả các cấu truc biến sẽ được
sử dụng trong khối code. Một biến có thể là một kiều dữ liệu bất kỳ có
sẵn trong Oracle, cũng như một số kiểu đặc biệt của PL/SQL.
 Phần thực thi của một khối lệnh PL/SQL được bắt đầu với từ khóa begin
và kết thúc với từ khóa end hoặc với toàn bộ khối lệnh với từ khóa
exception.

 Thành phần cuối cùng của khối lệnh PL/SQL là trình xử lý exception.
Phần mã này định nghĩa tất cả các lỗi có thể xảy ra trong khối và chỉ định

chúng lên được xử lý như thế nào. Trình xử lý exception là một tùy chọn
trong PL/SQL.
Trong Oracle có định nghĩ có bốn loại khối mã lệnh là:
 Procedure- một chuỗi các lệnh nhận và/hoặc trả về không hay nhiều biến.
 Function- một chuỗi các lệnh nhận không hoặc là nhiều biến trả về một
giá trị.
 Packge- một tập các thủ tục và các hàm có hai phần, một danh sách đặc tả
các hàm và các thủ tục có sẵn cùng các thông số của nó, và một phần thân
chứa mã thực sự của các thủ tục và các hàm.
 Trigger- một chuỗi các lệnh PL/SQL gắn với một bảng cơ sở dữ liệu mà
được thực hiện khi một sự kiện (select, update, insert, delete) xảy ra.
PL/SQL có sử dụng một số vòng lặp như sau:
 Lệnh loop- exit.
 Lệnh while- loop.
 Lệnh for- loop.

2.5.2. Con trỏ (Cursor)
Trong PL/SQL có hai loại con trỏ là con trỏ ngầm và con trỏ tường minh.
 Con trỏ ngầm là một địa chỉ không đặt tên của khối lệnh SQL được xử lý
bởi Oracle và/hoặc cơ chế thực thi PL/SQL. Mọi lệnh SQL đều thực hiện
trong một con trỏ ngầm, bao gồm các lệnh update, insert, delete và các
lệnh select không thực hiện trong một con trỏ tường minh. Một số thuộc
tính của con trỏ ngầm:

17


o %notfound chỉ định không tìm ra hàng nào. Giá trị thẻ trả về là
TRUE hay FALSE, ngược lại với %found.


o %rowcount chỉ định số hàng đã được xử lý bởi con trỏ. Trả về một
giá trị số.
o %found chỉ định có tìm được hàng nào không. Giá trị trả về là
TRUE hay FALSE, ngược lại với %notfound.

o %isopen chỉ định con trỏ đề cập đến có mở và sẵn sàng sử dụng
hay không. Trả về là TRUE hay FALSE.
 Con trỏ tường minh là con trỏ được đặt tên bởi người lập trình. Nó chính
là một lệnh select được đặt tên. Bất kỳ lệnh select nào cũng có thể sử
dụng trong một con trỏ tường minh bằng cách sử dụng cú pháp CURSOR
cursor_name IS. Khi một lệnh select được đặt trong một con trỏ tường

minh, người lập trình có toàn quyền điều khiển trên sự thực hiện lệnh.
DECLARE
CURSOR employee_cursor IS
SELECT * FROM EMPLOYEE;

2.6. SQL*PLUS
SQL*PLUS là một tiện ích của Oracle nhằm phục vụ cho việc thao với cơ
sở dữ liệu Oracle. Như là thực thi các câu truy vấn SQL hay là dành cho lập trình
các khối lệnh PL/SQL.

2.6.1. Các cách kết thúc một lệnh SQL trong SQL*PLUS
Chúng ta có thể kết thúc một lệnh SQL theo một trong ba cách sau:
 Với một dấu chấm phẩy (;).
 Với một dấu slash (/) nằm một mình trên một hàng.
 Với một hành trống.
Chấm phẩy ở cuối hàng cuối cùng của lệnh và nhấn Enter. SQL*Plus sẽ xử lý
lệnh và đưa nó vào bộ đệm của SQL (SQL buffer). Nếu chúng ta vô ý nhấn Enter
trước khi gõ dấu chấm phẩy, SQL*Plus sẽ nhắc chúng ta bằng một hàng có đánh

số. Gõ dấu chấm phẩy và nhấn Enter lần nữa để chạy lệnh.
Một dấu slash (/) nằm một mình trên một dòng cũng báo cho SQL SQL*Plus
biết chúng ta muốn chạy lệnh. Khi nhấn Enter ở hàng cuối cùng SQL*Plus sẽ
18


nhắc chúng ta bằng một hàng tiếp theo có đánh số, nhấn slash (/) và nhấn Enter
một lần nữa, SQL*Plus sẽ thực hiện lệnh đồng thời đưa nó vào SQL buffer.
Một hàng trống báo cho SQL*Plus biết rằng chúng ta đã chấm dứt đưa
lệnh vào, nhưng chưa muốn chạy nó. Khi nhấn Enter ở hàng cuối cùng,
SQL*Plus sẽ nhắc chúng ta bằng một hàng tiếp theo có đánh số. Nhấn Enter một
lần nữa, SQL*Plus sẽ hiện trở lại dấu nhắc lệnh. Lệnh bạn vừa gõ vào không
được thực hiện mà chỉ đưa vào SQL buffer. Nếu lúc này bạn lại đưa một lệnh
khác, SQL*Plus sẽ ghi đè lên lệnh vừa rồi.

2.6.2. Thêm một hàng mới vào bộ đệm của SQL*Plus
Để chèn một hàng mới vào hàng hiện hành, sử dụng lệnh INPUT. Để chèn
một hàng trước hàng 1, nhập vào số không (“0”) và theo sau là chuỗi text.
SQL*Plus chèn hàng vào đầu buffer và hàng này trở thành hàng 1.
SQL>0 SELECT EMPNO

Giả sử bạn muốn thêm một hàng thứ 4 vào lệnh SQL bạn đã sử dụng ở ví dụ
trước. Do hàng thứ 3 là hàng hiện hành, nhập vào INPUT (có thể viết tắt là I) và
nhấn Enter. SQL*Plus nhắc bạn hàng mới:
SQL>INPUT
4

Nhập vào hàng mới rồi nhấn Enter. SQL*Plus lại nhắc bạn lẫn nữa với hàng mới:
4 ORDER BY SAL
5


Nhấn Enter lần nữa để chỉ định rằng bạn không nhập vào thêm hàng nào nữa, và
sau đó sử dụng RUN để kiểm tra và chạy lại truy vấn.

2.6.2. Biến liên kết REFCURSOR và cách sử dụng
Các biến liên kết REFCURSOR của SQL*Plus cho phép điền và định dạng
các kết quả của một lệnh SELECT chứa trong một khối PL/SQL.
Các biến liên kết REFCURSOR cũng có thể sử dụng để tham trỏ các biến
con trỏ PL/SQL trong các thủ tục lưu trữ trong. Điều này cho phép bạn lưu các
lệnh SELECT trong cơ sở dữ liệu và tham trỏ chúng từ SQL*Plus.
Một biến liên kết REFCURSOR cũng có thể trả về từ một hàm (function). Để tạo
ra, tham trỏ và hiển thị một biến liên kết REFCURSOR, đầu tiên khai bào một biến
liên kết cục bộ kiểu dữ liệu REFCURSOR:
19


SQL>VARIABLE dept_sel REFCURSOR

Tiếp theo là nhập vào khối lệnh PL/SQL sử dụng biến liên kết trong một lệnh
OPEN… FOR SELECT. Lệnh này mở một biến con trỏ và thực hiện chuỗi truy

vấn.

2.7. KẾT NỐI ORACLE VỚI JSP
Có hai cách để Java và JSP có thể kết nối được với Oracle đó là thông qua
ODBC hoặc là JDBC. Ở đây em xin trình bày cách kết nối qua JDBC. Để kết nối
được với Oracle thì chúng ta phải có thư viện kết nối JDBC. Thư viện này có
được đóng gói trong một file classess12.jar hoặc là classess12.zip.
Sau đây là một ví dụ với Java:
import java.sql.*;

import oracle.jdbc.driver.*;

public class ConnectDB
{
String
driver="jdbc:oracle:thin:@10.0.0.47:1529:ora";
String userdb="smsgw";
String passdb="admsms3456";
Connection conn=null;
String sql="Select * from bangdl";
ResultSet rs;
Statement stmt=null;
try{
DriverManager.registerDriver(new
oracle.jdbc.OracleDriver());

conn=DriverManager.getConnection(driver,userdb,pa
ssdb);
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
while(rs.next()){
System.out.println(rs.getString(1));
}
20


rs.close();
stmt.close();
conn.close();
}catch(SQLException e){}


21


CHƯƠNG 3:AJAX VÀ CSS
3.1. AJAX
3.1.1 Gới thiệu về AJAX
AJAX là cụm từ viết tắt của Asynchronous JavaScript anh XML. AJAX
không là một ngôn ngữ lập trình mới. Nhưng nó là một công nghệ cho việc tạo
các ứng dụng Web tốt hơn, nhanh hơn và thân thiện hơn.
Với AJAX, mã JavaScript của chúng ta có thể truyền thông trực tiếp với server,
sử dụng đối tượng JavaScript XMLHttpRequest. JavaScript có thể chuyển đổi
giữ liệu với server mà không cần tải lại trang.
AJAX sử dụng phương thức truyền (HTTP requests) dữ liệu không đồng bộ giữa
trình duyệt và web server. Hình 3.1 là mô hình của công nghệ này.

Hình 3.1Mô hình hoạt động của AJAX
AJAX được dựa trên các chuẩn về web hiện nay gồm:
 JavaScript.
 XML.
 HTML.
 CSS.
Các chuẩn web được sử dụng trong AJAX đã được định nghĩa rất tốt, và được hỗ
trợ bởi phần lớn các trình duyệt.

22


3.1.2. HTTP Requests
Trong việc viết mã JavaScript truyền thống, nếu bạn muốn lấy bất cư

thông tin gì từ cơ sở dữ liệu hoặc một file trên server, hoặc gửi thông tin người sử
dụng tới server, bạn sẽ phải tạo lên một form HTML và POST hay GET dữ liệu
lên server. Người dùng sẽ nhấn vào nút “Submit” để gửi/nhận thông tin. Chờ cho
server phản hồi rồi một trang mới sẽ được tải với các kết quả.
Bởi vì server trả lại một trang mới vào mỗi thời điểm mà người dùng submit dữ
liệu do vậy mà các ứng dụng web sẽ chạy chậm và không thân thiện đối với
người sử dụng.
Với AJAX, JavaScript có thể giao tiếp trực tiếp với server, thông qua đối
tượng JavaScript XMLHttpRequest.
Với HTTP request, một trang web có thể tạo một yêu cầu gửi và trả lời từ server
mà không cần tải lại trang.
Với đối tượng XMLHttpRequest người phát triển web có thể cập nhật trang với
dữ liệu từ server sau khi trang đã được tải.
Đối tượng XMLHttpRequest được hỗ trợ trong Internet Explorer 5.0 trở
lên, Safari 1.2, Mozilla 1.0/Firefox, Opera 8 trở lên, và Netscape 7.

3.1.3. Đối tượng XMLHttpRequest
Trước khi gửi dữ liệu tới server, chúng ta sẽ xem sét ba thuộc tính rất quan trọng
của đối tượng XMLHttpResquest.
3.1.3.1 Thuộc tính onreadystatechange
Sau khi yêu cầu tới server chúng ta cần một hàn có thể truy lục dữ liệu
được trả về từ server.
Thuộc tính onreadystatechange lưu trữ hàm sẽ sử lý dữ liệu rồi trả về từ
server. Mã dưới đây là định nghĩa một hàm rỗng và thiết lập thuộc tính
onreadystatechange vào thời điểm chạy.
xmlHttp.onreadystatechange=function()
{
// We are going to write some code here
}


23


3.1.3.2. Thuộc tính readyState
Thuộc tính readyState nắm giữ trạng thái phản hồi (response) từ server.
Tại mỗi thời điểm readyState thay đổi, hàm onreadystatechange sẽ được thực thi.
Các giá trị của thuộc tính readyState có thể có:
Trạng thái

Mô tả

0

Yêu cầu chưa được khởi tạo

1

Yêu cầu đã được thiết lập

2

Yêu cầu đã được gửi

3

Yêu cầu đang được xử lý

4

Hoàn thành yêu cầu

Bảng 3.1 Thuộc tính readyState

húng ta thêm một lệnh if vào hàm onreadystatechange để kiểm tra xem yêu cầu
đã hoàn thành hay chưa.
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
{
// Get the data from the server's response
}
}

3.1.3.3. Thuộc tính responseText
Dữ liệu được gửi lại từ server có thể truy cập được thông qua thuộc tính
responseText.
Như đoạn mã sau gán giá trị của trường input tên là “time” với responseText
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
{
document.myForm.time.value=xmlHttp.responseText;
}
}

24


×