Tóm lại với tốc độ phát triển ngày càng tăng của mạng máy tính, thì việc thiết kế và cài đặt các ứng dụng cho người dùng là rất cần thiết. Vì vậy ý tưởng học qua mạng tuy không phải là mới nhưng phần nào cũng giúp học viên thuận tiện trong việc học tập qua mạng , tiết kiệm được thời gian đến trường nhưng vẫn có đầy đủ kiến thức ,hạn chế chi phí và tổ chức thi cử trong các kì thi .
70 trang |
Chia sẻ: baoanh98 | Lượt xem: 834 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Đề tài Thiết kế website môn lập trình mạng 1 với servlet và jsp, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
i của giáo viên
Kế đến giáo viên cũng có thể đăng nhập vào hệ thống để thay đổi Password của mình
Hình 1.10 . Lược đồ tuần tự thứ ba của giáo viên
Chức năng Admin:
Lược đồ dưới đây mô tả chi tiết các chức năng của Admin khi họ vào trang web
Đầu tiên Admin cũng phải đăng nhập vào hệ thống để thực hiện quyền của mình
Hình 1.11 . Lược đồ tuần tự thứ nhất của Admin
Sau khi đã đăng nhập thành công thì Admin thực thi quyền đầu tiên của mình là cập nhật chương trình học vào hệ thống để học viên có thể tiếp cận những chương trình mới
Hình 1.12 . Lược đồ tuần tự thứ hai của Admin
Ngoài ra Admin có quyền cập nhật giáo viên mới vào hệ thống
Hình 1.13 . Lược đồ tuần tự thứ ba của Admin
Sau cùng Admin cũng có quyền thay đổi thông tin Password của chính mình
Hình 1.14 . Lược đồ tuần tự thứ tư của Admin
Sơ đồ hoạt động (Activity Model):
Hình 1. 15 . Sơ đồ hoạt động
Với sơ đồ (hình 1. 15) trên đây cho ta thấy chi tiết hơn về họat động của hệ thống kể từ khi học viên bắt đầu đăng ký vào học. Để làm rõ hơn nữa các chức năng hệ thống ta bước vào phần thiết kế dữ liệu sẽ mô tả chi tiết các class và xử lý cài đặt chương trình sau đây.
Sơ Đồ Entity Relationship:
Để thể hiện rỏ hơn quan hệ giữa các lớp ta sữ dụng công cụ Together tạo ra sơ sau
THIẾT KẾ DỮ LIỆU:
Mô tả chi tiết các Table trong cơ sở dữ liệu
Table Users
Users ( Usernames , Passwords , Quyen )
STT
THUỘC TÍNH
GIÁ TRỊ
KIỂU
RÀNG BUỘC
DIỄN GIẢI
1
Usernames
Not null
Varchar(50)
Khóa chính
Têân đăng nhập vào hệ thống phân biệt với những tên đăng nhập khác
2
Passwords
Not
null
Varchar(50)
Ứng với mỗi tên đăng nhập có một mật khẩu riêng
3
Quyen
Null
Int(4)
Quyền được ưu tiên khi đăng nhập (1:Admin; 2:Giáoviên;
3: Họcvien)
Table Giaovien
Giaovien(Magiaovien,Tengiaovien,Email,Usernames)
STT
THUỘC TÍNH
GIÁ TRỊ
KIỂU
RÀNG BUỘC
DIỄN GIẢI
1
Magiaovien
Not null
Int (4)
Khoá chính
Mỗi giáo viên có một Mã số riêng để phân biệt với giáo viên khác
2
Tengiaovien
Null
Varchar(50)
Ứng với mỗi mã giáo viên là tên của giáo viên
3
Email
Null
Varchar(50)
Email của giáo viên
4
Usernames
Not
null
Varchar(50)
Tên đăng nhập của giáo viên khi vào hệ thống
Table Hocvien
Hocvien(Mahocvien,Tenhocvien,Email,Usernames)
STT
THUỘC TÍNH
GIÁ TRỊ
KIỂU
RÀNG BUỘC
DIỄN GIẢI
1
Mahocvien
Not null
Int(4)
Khóa chính
Mỗi học viên có một mã số riêng để phân biệt với học viên khác
2
Tenhocvien
Not null
Varchar
(50)
Ứng với mỗi học viên là tên của học viên
3
Email
Null
Varchar
(50)
Email của học viên
4
Usernames
Not
null
Varchar
(50)
Tên đăng nhập của học viên vào hệ thống
Table Hoc
Hoc(Machuong,Mahocvien,Lanthi,Diem)
STT
THUỘC TÍNH
GIÁ TRỊ
KIỂU
RÀNG BUỘC
DIỄN GIẢI
1
Machuong
Not null
Int(4)
Khóa chính
Có nhiều chương được phân biệt theo mã chương
2
Mahocvien
Not null
Int(4)
Khóa chính
Có nhiều học viên theo học được phân biệt theo Mã học viên
3
Lanthi
Not Null
Int(4)
Khóa chính
Số thứ tự lần thi sau khi học mỗi chương
4
Diem
Null
Float
Điểm thuộc về lần thi sau mỗi chương
Table Chuong
Chuong(Machuong,Tenchuong,Noidungtomtat,Hinh,Chuongtruoc,
Chuong sau)
STT
THUỘC TÍNH
GIÁ TRỊ
KIỂU
RÀNG BUỘC
DIỄN GIẢI
1
Machuong
Not null
Int(4)
Khoá chính
Mỗi chương có một mã số riêng để phân biệt chương khác
2
Tenchuong
Null
Varchar
(50)
Ứng với mỗi chương là tên chương
3
Noidungtomtat
Null
Varchar
(7000)
Mỗi chương có một nội dung tóm tắt
4
Hinh
Null
Varchar(50)
Hình vẽ của chương ( nếu có )
5
Chuongtruoc
Null
Int (4)
Mỗi chương có một mã số chương liền trước
6
Chuongsau
Null
Int(4)
Mỗi chương có một mã số chương liền sau
Table Demuc
Demuc(Mademuc,Tendemuc,Noidungdemuc,Machuong,Hinh)
STT
THUỘC TÍNH
GIÁ TRỊ
KIỂU
RÀNG BUỘC
DIỄN GIẢI
1
Mademuc
Not null
Int(4)
Khóa chính
Mỗi đề mục có một mã đề mục riêng để phân biệt với đề mục khác
2
Tendemuc
Null
Varchar
(50)
Ứng với mỗi đề mục có tên đề mục
3
Noidungdemuc
Null
Varchar
(7000)
Mỗi đề mục có nội dung đề mục
4
SourceCode
Null
Varchar
(7000)
Source Code cuả mỗi đề mục
5
Machuong
Null
Int(4)
Khóa ngoại
Mã đề mục thuộc về mã chương nào
6
Hinh
Null
Varchar
(50)
Hình vẽ ứng với mỗi đề mục ( nếu có)
Table Tieumuc
Tieumuc(Matieumuc,Tentieumuc,Noidungtieumuc,Mademuc,Hinh)
STT
THUỘC TÍNH
GIÁ TRỊ
KIỂU
RÀNG BUỘC
DIỄN GIẢI
1
Matieumuc
Not null
Int(4)
Khóa chính
Mỗi tiêu mục có một mã số riêng để phân biệt với tiểu mục khác
2
Tentieumuc
Null
Varchar
(50)
Mỗi tiểu mục có tên tiểu mục
3
Noidungtieumuc
Nul
Varchar
(7000)
Ứng với mỗi tiểu mục có nội dung
4
Mademuc
Null
Int(4)
Tiểu mục thuộc về mã đề mục nào ?
5
Hinh
Null
Varchar
(50)
Hình vẽ minh họa cho tiểu mục ( nếu có )
Table Hocvienduthi
Hocvienduthi(Mahocvien,Madethi,Lanthicuoi,Diem)
STT
THUỘC TÍNH
GIÁ TRỊ
KIỂU
RÀNG BUỘC
DIỄN GIẢI
1
Mahocvien
Not null
Int(4)
Khóa chính
Mỗi học viên có một mã số riêng để phân biệt với học viên khác (trong kỳ thi cuối khóa)
2
Madethi
Not Null
Int(4)
Ứng với mã học viên có một mã đề thi riêng
3
Lanthicuoi
Not Null
Int(4)
Số thứ tự lần thi sau mỗi khóa học
4
Diem
Null
Float
Điểm thuộc lần thi đó
Table Chitietdethi
Chitietdethi(Macauhoi,Madethi)
STT
THUỘC TÍNH
GIÁ TRỊ
KIỂU
RÀNG BUỘC
DIỄN GIẢI
1
Macauhoi
Not null
Int(4)
Khóa chính
Mã câu hỏi thuộc nhiều đề thi, phân biệt với những câu hỏi khác
2
Madethi
Not null
Int(4)
Khóa chính
Một đề thi gồm nhiều câu hỏi , phân biệt với những đề thi khác.
Table Đề thi
Dethi(Madethi,Socaukho,Socaude,Socautrungbinh, Machuong,Magiaovien)
STT
THUỘC TÍNH
GIÁ TRỊ
KIỂU
RÀNG BUỘC
DIỄN GIẢI
1
Madethi
Not null
Int(4)
Khóa chính
Mỗi đề thi có một mã số riêng để phân biệt với đề thi khác
2
Socaukho
Null
Int(4)
Số câu hỏi khó thuộc về mã đề thi
3
Socaude
Null
Int(4)
Đề thi gồm bao nhiêu câu hỏi dễ ?
4
Socautrungbinh
Null
Int(4)
Số câu hỏi trung bình có trong đề thi
5
Machuong
Null
Int(4)
Đề thi thuộc mã chương gì ?
6
Magiaovien
Null
Int(4)
Gíao viên nào ra đề thi ?
Table Cauhoi
Cauhoi(Macauhoi,Noidungcauhoi,Machuong,Magiaovien,Mucdo)
STT
THUỘC TÍNH
GIÁ TRỊ
KIỂU
RÀNG BUỘC
DIỄN GIẢI
1
Macauhoi
Not null
Int(4)
Khóa chính
Mỗi câu hỏi có moat mã số riêng để phân biệt với câu hỏi khác
2
Noidungcauhoi
Null
Varchar
(7000)
Mỗi câu hỏi có nội dung riêng
3
Machuong
Null
Int(4)
Khóa ngọai
Câu hỏi thuộc về mã chương nào .
4
Magiaovien
Null
Int(4)
Khóa ngoại
Mã giáo viên soạn câu hỏi
5
Mucdo
Null
Int(4)
Mỗi câu hỏi có mức độ khó riêng
Table Cautraloi
Cautraloi(Macauluachon,Noidungcauluachon,Macauhoi)
STT
THUỘC TÍNH
GIÁ TRỊ
KIỂU
RÀNG BUỘC
DIỄN GIẢI
1
Macauluachon
Not null
Int(4)
Khóa chính
Mỗi câu lựa chọn có một mã riêng phân biệt với những câu lựa chọn khác
2
Noidungcauluachon
Null
Varchar
(7000)
Ứng với mỗi mã câu lựa chọn có nội dung câu lựa chọn
Table Chonlua
Chonlua(Macauhoi,Macauluachon,Ghichu)
STT
THUỘC TÍNH
GIÁ TRỊ
KIỂU
RÀNG BUỘC
DIỄN GIẢI
1
Macauhoi
Not null
Int(4)
Khóa chính
Mỗi câu hoỉ có mã câu hoỉ riêng
2
Macauluachon
Not Null
Int(4)
Khóa chính
Ứng với mỗi mã câu hoỉ có nhiều mã câu lựa chọn
3
Ghichu
Null
Int(4)
Đáp áp đúng ứng với mỗi mã câu hoỉ
CHƯƠNG II : CÀI ĐẶT CHƯƠNG TRÌNH
SƠ ĐỒ PHÂN RÃ CHỨC NĂNG HỆ THỐNG :
WEB SITE HỌC QUA MẠNG
CHỨC NĂNG ADMIN
CHỨC NĂNG HỌC VIÊN
CHỨC NĂNG GIÁO VIÊN
ĐĂNG KÍ HỌC
HỌC
THI
ĐĂNG KÍ THI
XEM ĐIỂM THI
CẬP NHẬT THÔNG TIN
DẠO XEM WEB
CẬP NHẬT CHƯƠNG TRÌNH HỌC
CẬP NHẬT GIÁO VIÊN
CẬP NHẬT ĐỀ THI
THAY ĐỔI MẬT KHẨU
THAY ĐỔI PASSWORD
Hình 2. 1. Sơ đồ phân rã chức năng hệ thống
CÀI ĐẶT CHƯƠNG TRÌNH :
Phần học viên :
Từ sơ đồ tuần tự ứng với phần học viên (hình 1. 3) ở chương 1 , ứng với lược đồ đầu tiên thì học viên muốn vào học phải đăng ký vào học , để làm rõ hơn chức năng này ta có đọan xử lý sau:
Xử lý đăng ký
Bước 1: khai báo kết nối cơ sở dữ liệu
Khai báo trình điều khiển và thông tin cần thiết để kết nối với cơ sở dữ liệu
Drivername=”sun. jdbc. Odbc. jdbcOdbcDriver”
URL=”jdbc: odbc: HOCQUAMANG”
Usernames=”sa”
Password =””
Bước 2 : Khai báo các tham số nhận từ request như :
Tenhocvien=request. getParameter(“txtTenhocvien”)
Tương tự cho email, tên đăng nhập(Usernames) , mật khẩu (Password) ., đồng thời cấp quyền cho học viên bằng 0
( Int quyen=0)
Bước 3 : Khai báo các đối tượng cần thiết để tạo kết nối
Class. forName(Drivername). newInstace();
Connection Cn=null
Cn = DriverManage. getConnection(URL,”Usernames”,”Password”)
Statement st=null
ResultSet Rs=null
Bước 4 : Thực thi câu lệnh SQL xem học viên đã đăng ký chưa
String SQL=” Select Usernames From Hocvien
where Usernames=’”+tendangnhap+”’
String SQL1=” Select Usernames From Hocvien
where Usernames=’”+tendangnhap+”’
Rs=st. executeQuery(SQL)
Rs=st. executeQuery(SQL1)
Kiểm tra nếu nếu tên đăng nhập (Usernames) này đã có rồi thì chuyển hướng nhảy đến trang báo lỗi
If( rs.next()) { response. SendRedirect(“Loi.html”) }
Và mời học viên đăng ký lại
Kiểm tra nếu chưa tồn tại thì ta thực hiện thêm học viên này vào cơ sở dữ liệu
Else { sql=Insert into Hocvien(Tenhocvien,Email ,Usernames) Value (‘”+tenhocvien+”’, ‘”+email+”’,’”+tendangnhap+”’)
Sql1=Insert into Users(Usernames, Password, quyen) Value(’”+tendangnhap+”’, ‘”+matkhau+”’,”+quyen+”)
Sau khi cập nhập học viên mới thành công sẽ chuyển đấn trang thành công
Bước 5 : Cuối cùng đóng các kết nối lại
Rs. close
Cn . close
Sau khi đã đăng nhập vào hệ thống với Usernames và Password của mình là họ đã có đầy đủ quyền tương ứng(hình 1.4). Đoạn Chương trình sau đây minh họa xử lý việc login của học viên khi đăng nhập vào hệ thống.
Xử lý Login vào hệ thống của học viên
Tương tự như đọan xử lý trên
Bước 1 : Khai báo kết nối cơ sở dữ liệu
Bước 2 : Khai báo các tham số nhận từ request
User=requesr. getParameter(“txtTendangnhap”)
Pass=requesr. getParameter(“txtPassword”)
Bước 3 : Khai báo các đối tượng cần thiết để kết nối
Bước 4 : Thực thi câu lệnh SQL so sánh xem có học viên này không nếu có thì chấp nhận và cho học viên này vào hệ thống
Select Mahocvien Form Hocvien Where Usernames=’”+User+”’
Nếu không có học viên này thì báo lỗi và mời học viên này đăng nhập lại hoặc đăng ký làm học viên thì mới được vào học
Bước 5 : Đóng các kết nối
Khi vào hệ thống với quyền tương ứng của mình học viên có quyền học và thi chương trình học(hình 1.5 ) để minh họa cho chức năng này ta có đọan xử lý
Xử lý chức năng học
Bước 1: Kết nối cơ sở dữ liệu
Bước 2 : Thực thi câu lệnh truy vấn cho việc chọn học phần cuả học viên
sql="SELECT Machuong,Tenchuong FROM Chuong"
Trong khi đã chọn được chương ta lấymã chương và tên chương hiển thị cho học viên chọn
while (rs.next()){
}
Bước 3 :Sau khi chọn học phần ,đối tượng request sẽ nhận tham số từ trang chuong1.jsp gởi đến bằng câu lệnh
String machuong=request.getParameter("Machuong")
và gởi trả về trang kqdemuc.jsp với các đề mục thuộc về chương mà học viên đã chọn .
String sql="SELECT Mademuc,Tendemuc FROM Demuc WHERE Machuong=" +machuong
Bước 4 : Tương tự như học viên chọn tiểu mục và nội dung tiểu mục
Bước 5 : Đóngkết nối
Xử lý chức năng Thi
Bước 1: kết nối cơ sở dữ liệu
Bước 2 : Thực thi câu lệnh sql và xử lý các giải thuật
Tạo đề thi với số thứ tự đề thi là ngẫu nhiên
int t=(int)Math.random()*10+1;
out.println("De thi so "+t)
Truy xuất câu hoỉ từ câu lệnh truy vấn sql:
String sql="Select Macauhoi,Noidungcauhoi From CauHoi ";
Khai báo 2 biến và 2 mảng chứa mã câu hoỉ và nội dung câu hoỉ :
String ma,noidung
int a[]=new int[100]
//Mảng chứa mã câu hỏi
String b[]=new String[100]
//Mảng chứa mã nội dung
Tạo recordset để lấy về mã câu hỏi và nội dung câu hỏi chưá vào 2 mảng
while( rs.next() )
{
ma=rs.getString("Macauhoi");
a[i]=Integer.parseInt(ma);
//phân tích mã câu hỏi thành số và đưa vào mảng
b[i]=rs.getString("Noidungcauhoi")
//phân tích nội dung câu hỏi và đưa vào mảng 2
i++;
}
Bước 4 : So sánh đáp án
Ứng với mỗi câu hỏi , cần hiển thị Ghichu , Macauluachon , Noidungcauluachon bằng câu lệnh truy vấn
sql1="SELECT Chonlua.Ghichu AS Ghichu, Cautraloi.Macauluachon, Cautraloi.Noidungcauluachon FROM Chonlua INNER JOIN Cautraloi ON Chonlua.Macauluachon = Cautraloi.Macauluachon Where Chonlua.Macauhoi="+a[r]+" And Chonlua.Macauluachon=Cautraloi.Macauluachon"
Bước 5 : Hiển thị kết quả
Bước 6 : Đóng kết nối
Ứng với đường đi từ sơ đồ học viên còn có thể login vào hệ thống để thay đổi thông tin và thay đổi Password của mình(hình 1.6 & hình 1.7) , đọan chương trình sau sẽ làm rõ chức năng này
Xử lý chức năng thay đổi Password
Bước 1:kết nối cơ sở dữ liệu
Bước 2 : xử lý câu lệnh sql
Lấy tên đăng nhập và mật khẩu cũ và mật khẩu mới do học viên nhập vào
String username=request.getParameter("txtUsername")
String oldPass=request.getParameter("txtOldPass")
String newPass=request.getParameter("txtNewPass")
Cập nhật lại mật khẩu mới dựa trên mật khẩu cũ và tên đăng nhập thông qua câu lệnh
SQL2="UPDATE Users SET Passwords='" + newPass + "'";
SQL2=SQL2 +" WHERE Passwords='" + oldPass + "'";
Nếu thay đồi thành công trả về trang thành công , nếu Usernames và Password cũ sai hệ thống sẻ trả về trang lỗi
Bước 3 : Đóng kết nối
Xử lý chức năng thay đổi thông tin
Bước 1: Kết nối cơ sở dữ liệu
Statement stmt = null
ResultSet rs=null
Connection con = null
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")
con = DriverManager.getConnection("jdbc:odbc:HOCQUAMANG","sa","")
stmt = con.createStatement()
Bước 2 : Khai báo các tham số nhận từ request
String Ma=request.getParameter("txtMa")
String Ten=request.getParameter("txtTen")
String EM=request.getParameter("txtEmail")
String SQL=""
Bước 3 : Thực thi câu lệnh SQL
SQL="UPDATE Hocvien SET Tenhocvien='"+Ten+"',Email='"+EM+"'";
SQL=SQL+ " WHERE Mahocvien="+Ma;
Nếu có học viên này thì hệ thống sẽ cập nhật lại thông tin cho học viên đó
Ngược lại hệ thống sẽ trảvề trang thông báo lỗi cho học viên để họ đăng nhập lai
Bước 4 : Đóng kết nối
Phần giáo viên :
Để minh họa các chức năng của giáo viên từ sơ đồ tuần tự
ở chương 1 ta sẽ vào phần cài đặt cho mỗi một chức năng riêng ứng với quyền của giáo viên.
Một giáo viên khi muốn vào hệ thống thì họ đăng nhập vào hệ thống (hình 1.8) với quyền tương ứng của mình thì họ mới vào được , để làm rõ hơn chức năng đăng nhập vào hệ thống với quyền tương ứng ta có đoạn xử lý sau
Xử lý đăng nhập vào quản trị hệ thống
Bước 1: Kết nối cơ sở dữ liệu
Bước 2: Khai báo các tham số nhận từ request
user=request.getParameter("txtuser")
pass= request.getParameter("txtpass")
quyen=request.getParameter("txtquyen")
Bước 3: Xử lý câu lệnh sql
String strSQL="select * from Users where Usernames='" +user+ "' and Passwords='" +pass+ "' and Quyen='"+quyen+"'"
rs=stmt.executeQuery(strSQL)
Bước 4 : So sánh quyền tương ứng với mỗi User
Nếu quyền = Admin hệ thống sẽ trả về trang quản trị cuả Admin với các chức năng tương ứng cuả Admin
Nếu qyuền = Giáo vien hệ thống sẽ trả về trang quản trị của Gíaovien
Nếu quyền = Hocvien hệ thống sẽ trả về trang ứng các chức năng cuả học viên
Ngược lại hệ thống trả về trang báo lỗi và mời bạn đăng nhập lại
Bước 4: Đóng kết nối
Sau khi đăng nhập vào hệ thống thành công thì giáo viên có quyền cập nhật mới câu hỏi vào ngân hàng câu hỏi để sinh ra đề thi mới cho học viên thi (hình 1.9), để làm rõ hơn điều này ta có đoạn chương trình sau
Xử lý cập nhật câu hỏi thi vào ngân hàng câu hỏi
Bước 1: kết nối cơ sở dữ liệu
Bước 2 : khai báo các tham số nhận từ request
String mch,nd,md,mc,mgv,sqlStr="";
mch=""+request.getParameter("txtMch")
nd=""+request.getParameter("txtNdung")
md=""+request.getParameter("txtmucdo")
mc=""+request.getParameter("txtCh")
mgv=""+request.getParameter("txtgv")
Bước 3: Thực thi câu lệnh sql
sqlStr="INSERT INTO Cauhoi(Noidungcauhoi,Mucdo,Machuong,Magiaovien)"
+"VALUES('"+nd+"','"+md+"',"+mc+","+mgv+")"
khi cập nhật nếu câu hỏi này đã có sẽ trả về trang lỗi còn nếu chưa có thì cập nhật câu hỏi mới vào ngân hàng câu hỏi
Sau cùng hệ thống sẽ trả về trang thành công khi ta cập nhật xong
Bước 4: Đóng kết nối
Tương tự như Học viên Giáo viên cũng có quyền thay đổi Password của mình (hình 1.10) khi cần thiết.
Phần Admin :
Tương tự đối với Admin là người có chức vụ cao nhất trong hệ thống ,sau khi đăng nhập vào hệ thống với quyền tương ứng , thì họ có quyền cập nhật vào chương trình học mới vào hệ thống ( hình 1.12) làm rõ chức năng này ta có đoạn xử lý sau
Xử lý cập nhật chương trình học mới vào hệ thống
Bước 1: kết nối cơ sở dữ liệu
Bước 2 : khai báo các tham số nhận từ request
String mc,tc,nd,hi,ct,cs,sqlStr="";
mc=""+request.getParameter("txtMchuong")
tc=""+request.getParameter("txtTchuong")
nd=""+request.getParameter("txtNdung")
ct=""+request.getParameter("txtCtruoc")
cs=""+request.getParameter("txtCsau")
hi=""+request.getParameter("txtHinh")
Bước 3: Thực thi câu lệnh sql
rsKiemtra=stmt.executeQuery("SELECT * FROM Chuong WHERE Machuong="+mc)
// neu chua ton tai thi chen chuong moi vao
if(!rsKiemtra.next()){
sqlStr="INSERT INTO Chuong(Tenchuong,Noidungtomtat,Chuongtruoc,Chuongsau,Hinh)”+"VALUES('"+tc+"','"+nd+"',"+ct+","+cs+",'"+hi+"')";
stmt.executeQuery(sqlStr)
khi cập nhật nếu chương này đã có sẽ trả về trang lỗi còn nếu chưa có thì cập nhật chương mới vào hệ thống
Sau cùng hệ thống sẽ trả về trang thành công khi ta cập nhật xong
Bước 4: Đóng kết nối
Ngoài chức năng cập nhật chương trình học mới Admin còn có thể cập nhật giáo viên mới vào hệ thống (hình 1.13) khi có một giáo viên mới vào. Điều này được thể hiện thông qua đoạn mã xử lý sau
Xử lý cập nhật giáo viên mới vào hệ thống
Bước 1: kết nối cơ sở dữ liệu
Bước 2 : khai báo các tham số nhận từ request
String tengiaovien=request.getParameter("tengiaovien")
String email=request.getParameter("email")
String tendangnhap=request.getParameter("usernames")
String matkhau=request.getParameter("passwords")
String quyen ="1"
String sql=""
Bước 3: Thực thi câu lệnh sql
String sql2="Select Usernames From Giaovien Where Usernames='"+tendangnhap+"'"
String sql3="Select Usernames From Users Where Usernames='"+tendangnhap+"'"
rs=stmt.executeQuery(sql3)
if(!rs.next()){
String sql1 = "INSERT INTO Users(Usernames,Passwords,Quyen) values('"+tendangnhap+"','"+matkhau+"',"+quyen+")";
stmt.executeUpdate(sql1)
rs=stmt.executeQuery(sql2)
if(!rs.next()){
sql="INSERT INTO Giaovien(Tengiaovien,Email,usernames)values('"+tengiaovien+"','"+email+"','"+tendangnhap+"')"
stmt.executeUpdate(sql)
}
Ngược lại khi cập nhật nếu giáo viên này đã có hệ thống sẽ trả về trang lỗi còn nếu chưa có thì cập nhật giáo viên mới vào hệ thống
Sau cùng hệ thống sẽ trả về trang thành công khi ta cập nhật xong
Bước 4: Đóng kết nối
Đồng thời Admin cũng có quyền thay đổi Password của mình (hình 1. 14) khi cần , phần xử lý này tương tự như phần xử lý password cuả học viên.
CHƯƠNG III :
DEMO WEB SITE DẠY HỌC TRỰC TUYẾN
Đến với Web Site Dạy học qua mạng , phía trình duyệt cần khởi động
Internet Explorer gõ điạ chỉ
Web Site học qua mạng môn Lập Trình Mạng được bắt đầu .
Tại trang chủ ,nếu chỉ dạo xem thông tin học phần , học viên chọn chức năng
sang trang khaiquathocphan.html.
chọn tại trang khaiquathocphan.html để vào trang xemhocphan.html.Trang này tóm tắt các học phần sẽ được giảng dạy phục vụ cho môn Lập Trình Mạng Cơ Sở .
Khi chọn học phần (trang hocphan.jsp), các đề mục thuộc học phần đó được liệt kê tại trang (kqdemuc.jsp)
hiển thị 4 phần học (Client Side Networking ,Server Side Networking, URL ,UDP), tương tự khi chọn đề mục thuộc học phần đã chọn ,tất cả tiểu mục được hiển thị (ở trang kqtieumuc..jsp ).
Vì học viên không đăng kí học nên tại trang kqtieumuc.jsp không hiển thị nội dung tiểu mục ,và hiện thông báo sẽ được xem chi tiết nếu học viên đăng kí học
Nếu muốn đăng kí học ,học viên có thể chọn hoặc đăng kí tại trangchu.html .
Tại trang chủ ,nếu muốn đăng kí học ,học viên có thể chọn để vào trang đăng kí và nhập thông tin về học viên đăng kí sau cùng chọn để được lưu trữ thông tin đã nhập.
Trang Dangkythanhcong.html hiển thị thông báo về việc lưu trữ thông tin đăng kí thành công .Ngược lại sẽ trả về trang Loidangky.html.
Học viên có thể chọn chức năng để được hứớng dẫn đăng kí học qua mạng
Khi đăng kí thành công ,học viên có thể vào trang dayhoc.html bằng việc chọn Next hoặc trở về trang đăng kí để tiếp tục đăng kí học viên tiếp theo bằng nút Back
Vào trang dayhoc.html , bạn chọn học phần cần theo học
Sau khi chọn học phần , học viên có thể xem đề mục cuả từng học phần và tiểu mục cuả từng đề mục thuộc học phần đó .
Phần hiển thị nội dung tiểu mục ,nếu học viên cần xem SourceCode cuả mỗi chương có thể chọn , trang SouceCode.html sẽ minh hoạ :
Sau từng học phần ,học viên có thể kiểm tra kiến thức sau từng chương bằng chức năng , trang kiemtrachuong.jsp hiển thị câu hỏi dành cho học viên muốn kiểm tra kiến thức .
Sau khoá học , học viên có thể kiểm tra lại tất cả kiến thức đã học bằng chức năng ,trang kiemtra1.jsp thực thi tác vụ này .
Nếu đăng ký không thành công ,học viên chọn để đăng ký lại
Khi học viên chọn chức năng , danh sách các giáo viên được hiển thị ,học viên có thể xem thêm thông tin về giáo viên như : tên ,email ,
Tương tự khi học viên chọn chức năng ,học viên xem được danh sách học viên đã đăng ký học .
Khi chọn giao diện trang web hiển th ị như sau:
Có 3 quyền khi đăng nhập vào hệ thống :
Nếu là Admin (người quản trị hệ thống ) , chọn chế độ quyền ưu tiên là Admin ,nhập đầy đủ thông tin về Admin và nhấn nút Submit để có quyền đăng nhập .
Nếu đăng nhập thành công , giao diện trang web indexAdmin như sau:
Tại đây , người quản trị hệ thống có quyền xem danh sách giáo viên ,cập nhật giáo viên mới ,cập nhật học phần ,cập nhật đề mục ,cập nhật tiểu mục .
Trang hiển thị giáo viên hienthigvt.jsp sẽ liệt kê danh sách các giáo viên sẵn có.
Giáo viên mới có thể được cập nhật ,trang AddGV.jsp xử lý tác vụ này, giao diện trang AddGV.html như sau :
Nếu thành công sẽ trả về trang thanhcongAddGV.html ngược lại trả về trang loiAddGV.html (Nếu tên đăng nhập cuả giáo viên đã có sẵn,)
Giáo viên được phân quyền ưu tiên là 1 , khi thêm giáo viên mới ,hệ thống tự động phân quyền là 1 và cập nhật giáo viên mới
Thêm một học phần mới ,Admin có thể chọn chức năng thêm học phần tại trang indexAdmin.jsp
Để lưu trữ thông tin cập nhật học phần , trang AddChapter.jsp sẽ xử lý việc lưu trữ thông tin học phần.
Trang AddChapter.jsp sau khi xử lý thành công sẽ trả về trang AddChapterthanhcong.html thông báo đến người sử dụng về việc thêm học phần mới thành công.
Nếu học phần thêm vào đã có trong hệ thống a(trang loiAddChapter.html sẽ được hiển thị .
Trang AddHeading.jsp cập nhật đề mục thuộc học phần cần chọn
Nếu đề mục đã có sẽ trả về trang Loiaddheading.html ngược lại sẽ trả về trang Addheadingthanhcong.html đề mục được cập nhật
Tác vụ cập nhật tiểu mục tương tự như cập nhật đề mục ,chọn đề mục có tiểu mục cần cập nhật .
Nếu thành công trang AddTMthanhcong.html sẽ được trả về và tiểu mục được cập nhật thành công ngược lại trang LoiAddTM.html hiển thị lỗi cập nhật tiểu mục
Nếu là giáo viên , nhập thông tin đăng nhập giáo viên và quyền ưu tiên khi đăng nhập là Quyền Giáo viên .
Sau khi chọn nút Submit , thông tin đăng nhập cuả giáo viên sẽ được xử lý .
Nếu đăng nhập không thành công , trang web FaiLogin.html trả lại thông báo
Nếu đăng nhập thành công , trang đăng nhập thành công(indexGV.jsp) cuả giáo viên được hiển thị như sau :
Trang indexGV.jsp thực thi các công việc cuả giáo viên :
Xem danh sách các câu hỏi .
Cập nhật câu hỏi .
Cập nhật đề thi .
Giáo viên được quyền xem danh sách câu hỏi có trong ngân hàng câu hỏi , giáo viên chỉ được quyền chỉnh sửa , cập nhật câu hỏi do chính giáo viên đó soạn .
Nếu là học viên , nhập thông tin đăng nhập học viên và quyền ưu tiên khi đăng nhập là Quyền Học viên . Nếu lỗi đăng nhập trang FaiLogin.html sẽ được trả về ,học viên có thể trở về trang trước để ngược lại trang indexHV.jsp hiển thị các chức năng cuả học viên .
Tại đây ,học viên có thể xem danh sách học viên ,thay đổi thông tin học viên ,thay đổi mật khẩu .
Học viên vào trang thaydoithongtinhv.jsp để nhập thông tin mới.
Nếu việc thay đổi thành công trang thaydoithanhcong.html được trả về ,nếu lỗi xảy ra trang loithaydoitt.html .
Trang ThaydoiPW.jsp học viên thay đổi mật khẩu
Nếu thay đổi thành công trang thaydoithanhcong.html hiển thị ,ngược lại trang loithaydoi.html được trả về ,học viên có thể trở về trang trước để thay đổi mật khẩu .
CHƯƠNG IV : GIỚI THIỆU CÔNG NGHỆ JSP
(JAVA SERVER PAGES) VÀ RATIONAL ROSE
PHẦN 1 : CÔNG NGHỆ JSP
JSP VÀ LẬP TRÌNH ỨNG DỤNG
Java Server Page (JSP ) là một kỹ thuật kết hợp ngôn ngữ HTML và ngôn ngữ Java. JSP là cách đơn giản hơn Servlet để có thể tiếp cận hướng lập trình Web phía Server . Kỹ thuật JSP có thể kết nối với các hệ quản trị cơ sở dữ liệu như MS Access, SQl Server, Oracle,...
Công nghệ JavaServer Pages (viết tắt là JSP) là công nghệ Java dựa trên nền J2EE để xây dựng những ứng dụng chứa nội dung trang Web động như: HTML, DHTML, XHTML và XML. Công nghệ JSP có khả năng tạo ra những trang Web với nội dung linh hoạt, có vai trò quan trọng trong việc phát triển các ứng dụng Web.
Một trang JSP (.jsp) là một trang HTML hay XML trong đó có chứa mã Java, phần HTML chịu trách nhiệm về việc định dạng văn bản, mã chương trình xen lẫn trong văn bản dùng để diễn đạt các thao tác xử lý dữ liệu hoặc nối kết với CSDL (Database). Trang Web truyền thống (dùng HTML) được trình chủ Web gửi ngay đến cho máy khách (Client) khi có yêu cầu, còn các trang JSP phải chạy qua một guồng máy (Engine) riêng biệt, ở đó phần mã chương trình được tách ra khỏi trang JSP, được thi hành và kết quả xử lý được ghi trở vào trang Web đang xét, tạo thành trang HTML thuần tuý.
Trang JSP khi chạy, mã Java sẽ được biên dịch thành JavaServlet và Servlet này chạy trên máy ảo Java (JVM) ở phía máy chủ (Web Server). Mã Java được biên dịch khi máy khách truy xuất trang JSP lần đầu tiên.
Tập tin .jsp có cấu trúc giống như tập tin .html truyền thống, nhưng khác ở chỗ là tập tin .jsp có xen lẫn mã Java. Mã Java được tách biệt với phần HTML thông thường bằng cặp dấu .
CƠ CHẾ HOẠT ĐỘNG CỦA JSP
Công nghệ JSP gắn liền với Servlet. Mã Java trong trang JSP được biên dịch thành Servlet khi trình duyệt phía khách (Client) truy xuất trang JSP lần đầu tiên. Quá trình diễn ra như sau : Mã Java được tách ra khỏi nội dung bình thường của trang JSP, tạo thành mã nguồn của Servlet. Kết quả xử lý của Servlet được thay vào chỗ biểu thức JSP trong trang Web ban đầu (trang Web mà trình duyệt nhận được là trang HTML thuần túy).
Trình diễn dịch JSP
Servlet tạm
WEB BROWSER
HttpServlet
Trang JSP
NHỮNG ĐIỂM NỔI BẬT CỦA CÔNG NGHỆ JAVASERVER PAGES (JSP)
Tận dụng được sức mạnh của ngôn ngữ lập trình Java
Từ trước đến nay chúng ta đều biết đến Java như là một công cụ hỗ trợ đắc lực trong việc xây dựng các ứng dụng Web Client - side. Nhưng Java cũng còn là một môi trường lý tưởng để tạo thành phần server cho ứng dụng Web. Do nền tảng của JSP dựa trên Java nên JSP cũng tận dụng được các ưu điểm trên. JSP cung cấp một phương pháp rất mạnh để xử lý yêu cầu từ Client, cũng như những ưu việt trong chế độ an toàn, chống rò rỉ bộ nhớ (memory leak) và hỗ trợ chế độ xử lý đa tuyến đoạn (multithreading).
Ngoài ra, môi trường Java đã đưa ra rất nhiều sự mở rộng cho việc phát triển các ứng dụng enterprise. JSP ngày nay đã là một thành phần cốt lõi trong môi trường J2EE. Vì vậy, với công nghệ JSP, người ta hoàn toàn có thể tạo ra được những ứng dụng có quy mô lớn với chất lượng cao.
Tách biệt nội dung với giao diện
Với công nghệ JSP, người phát triển sử dụng các thẻ HTML hay XML để thiết kế giao tiếp trang Web, các thẻ JSP hay các đoạn scriptlet để phát sinh nội dung động của trang (nội dung này phụ thuộc vào yêu cầu của user). Các xử lý phát sinh nội dung được đóng gói trong các thẻ hay thành phần JavaBeans và được liên kết lại trong scriptlet, sau đó được thực hiện ở server. Do những xử lý cốt lõi đã được đóng gói trong các thẻ và Beans, Web master và page designer có thể hiệu chỉnh và làm việc trên trang JSP mà không ảnh hưởng đến xử lý nghiệp vụ của trang. Các điều trên giúp bảo vệ các đoạn code sở hữu độc quyền và vẫn đảm bảo cho mọi HTML - based web Browser có thể truy xuất đến các trang JSP theo yêu cầu.
Đơn giản hoá quá trình phát triển với các thẻ
Web page developer không phải lúc nào cũng là một lập trình viên thông thạo với ngôn ngữ Script. Công nghệ JSP đóng gói nhiều chức năng cần thiết trong việc phát sinh nội dung động ở dạng dễ sử dụng, các JSP - specific XML tag. Các thẻ JSP chuẩn có thể truy xuất và khởi tạo những thành phần JavaBeans, thiết lập hay nhận về giá trị của thuộc tính, download applet, và thực hiện những xử lý mà nếu viết code sẽ khó khăn và mất nhiều thời gian. Công nghệ JSP có thể mở rộng thông qua sự phát triển của các customized tag library. Hiện nay đã có khá nhiều các thư viện loại này, từ đó giúp người phát triển trang Web có thể làm việc với những công cụ quen thuộc khi thự hiện những xử lý phức tạp.
MÔ HÌNH ỨNG DỤNG DÙNG CÔNG NGHỆ JAVASERVER PAGES (JSP)
Một trang JSP sẽ được xử lý bởi một JSP Engine (được cài đặt trên Web Server hay Application Server hỗ trợ công nghệ JSP). JSP Engine nhận yêu cầu từ Client đến trang JSP và phát sinh những phản hồi từ trang JSP nhận về Client.
Những trang JSP được biên dịch thành JavaServlets. JavaServlets là một sự mở rộng của Java chuẩn, do đó các nhà phát triển có thể truy xuất đến môi trường ứng dụng Java đầy đủ với tất cả các sức mạnh và sự linh động vốn có của họ Java.
Khi một trang JSP được gọi lần đầu tiên nếu chưa tồn tại sẽ được biên dịch thành một Servlet class và được lưu trữ trong bộ nhớ của Server. Điều này cho phép sự hồi đáp nhanh chóng đối với những yêu cầu tiếp theo đến trang này.
Trang JSP có thể được sử dụng trong nhiều kiến trúc khác nhau và cũng có thể kết hợp với các Protocol, Components khác nhau. Một vài mô hình có thể có.
Mô hình ứng dụng đơn giản
Trong một ứng dụng đơn giản Browser sẽ trực tiếp gọi trang JSP. Đến lượt trang này lại phát sinh một yêu cầu (có thể thông qua JDBC để nhận thông tin từ Database) nhằm tạo ra kết quả đáp ứng yêu cầu của Browser. Sau đó tạo ra trang HTML chuẩn và gửi trả trang này về cho Browser.
Database
HTTP/HTML/XML
Browser
JDBC
JSP
Ưu điểm :
Giúp việc lập trình đơn giản và nhanh chóng.
Dễ dàng phát sinh nội dung dựa trên yêu cầu và trạng thái của tài nguyên.
Khuyết điểm :
Gặp khó khăn khi có nhiều Client truy xuất đồng thời những tài nguyên khan hiếm của hệ thống, do mỗi Client phải thiết lập hay chia sẻ kết nối đến tài nguyên.
VD : Nếu một trang JSP truy xuất một Database, nó có thể tạo ra nhiều kết nối đến Database, dẫn đến ảnh hưởng đến hiệu suất của Database.
KỸ THUẬT LẬP TRÌNH JSP VỚI CSDL
JDBC VÀ TRÌNH ĐIỀU KHIỂN TRUY XUẤT CƠ SỞ DỮ LIỆU
Hầu như công việc lập trình ứng dụng mà JSP và servlet thường thực hiện nhất đó là lưu trữ và truy xuất cơ sở dữ liệu (database), cung cấp thông tin cho trình khách . Việc truy xuất cơ sở dữ liệu trong JSP và servlet dựa vào trình xuất JDBD theo chuẩn Java. JDBC là các trình đạo diễn cho phép bạn truy cập vào cơ sở dữ liệu của các hệ như Access, MS SQL Server, Oracle bằng ngôn ngữ truy vấn SQL .
Theo đặc tả của Sun có bốn kiểu JDBC sau :
Kiểu 1 :
JDBC sử dụng cầu nối ODBC. Nếu bạn đã từng làm việc với hệ cơ sở dữ liệu trên Windows, bạn sẽ biết cách kết nối ODBC (Open Database Connectivity). ODBC là kết nối tổng quát nhất đến mọi hệ cơ sơ’ dữ liệu thông qua trình quản lý ODBC của Windows. Mỗi hệ cơ sở dữ liệu sẽ cung cấp một trình điều khiển (driver) có khả năng đọc hiểu được cơ sở dữ liệu của chúng . Trình điều khiển này sẽ được đăng ký với bộ quản Lý ODBC. Tất cả các lệnh truy xuất cơ sở dữ liệu sau dóđược thực thi bằng lệnh SQL. Java cung cấp cho bạn khả năng sử dụng JDBC để gọi ODBC và bằng cách này bạn có thể kiểm soát rất nhiều hệ cơ sở dữ liệu khác nhau . Quan hệ cầu nối JDBC được thể hiện ở hình sau(). Sun cung cấp sẵn thư viện kết nối JDBC-ODBC kèm theo bộ JDK và bạn có thể sử dụng miễn phí . JDBC-ODBC sử dụng rất đơn giản và miễn phí nên chúng ta sử dụng cách kết nối này cho ứng dụng liên quan đến cơ sở dữ liệu trong giáo trình.
Java Application,Applet ,Servlet
JDBC Driver
ODBC
Database Driver
Cơ sở dữ liệu (Access,SQL Server ,Oracle,)
Mã Java
Mã đặc thù
Truy xuất cơ sở dữ liệu JDBC _ ODBC
Mặc dù ODBC xuất phát từ Microsoft và có tên tắt là Open Database Connectivity (chuẩn kết nối cơ sở dữ liệu mở ) nhưng JDBC không hẳn đã có tên là Java Data Base Connectivity .Sun chỉ nói rằng JDBC là một nhãn hiệu thuần tuý cho phong cách kết nối và truy vấn dữ liệu trong các ứng dụng Java mà thôi .
Kiểu 2:
JDBC kết nối trực tiếp với các trình điều khiển cơ sở dữ liệu .Khi Java phát triển ,các nhà cung cấp hỗ trợ các trình điều khiển JDBC kết nối trực tiếp với trình điều khiển đặc thù cuả mối hệ cơ sở dữ liệu mà không phải qua trung gian ODBC cuả Windows nữa .Các kết nối này nhanh và hiệu quả hơn kiểu JDBC _ ODBC .Tuy nhiên ,bạn phải mua các trình điều khiển cơ sở dữ liệu đặc thù do những nhà phát triển cơ sở dữ liệu hay bên thứ 3 (third_party ) cung cấp hình sau.
Java Application,Applet ,Servlet
JDBC Driver
Database Driver
Cơ sở dữ liệu (Access,SQL Server ,Oracle,)
Mã Java
Mã đặc thù
JDBC truy xuất cơ sở dữ liệu kiểu 2.
Kiểu 3 :
JDBC kết nối thông qua các ứng dụng mạng trung gian .Ngaỳ nay ,các ứng dụng đều gắn liền với Internet . Theo mô hình lập trình phân tán , ứng dụng trung gian (middle_ware) trên một máy chủ sẽ chiụ trách nhiệm kết nối với cơ sở dữ liệu .
Nhiệm vụ cuả trình khách là sử dụng những trình điều khiển JDBC gọn nhẹ ,có khả năng giao tiếp với ứng dụng trung gian qua Internet để truy vấn dữ liệu hình sau:
Java Application,Applet ,Servlet
JDBC Driver
Java Middle Ware
Java Native Driver
Cơ sở dữ liệu (Access,SQL Server ,Oracle,)
Mã Java
Mã đặc thù
Truy xuất cơ sở dữ liệu JDBC kiểu 3
Internet
Kiểu 4:
JDBC kết nối thông qua các trình điều khiển đặc thù ở xa . Mô hình kết nối theo kiểu 3 do phải qua ứng dụng trung gian (middle _ ware ) nên có thể ảnh hưởng đến tốc độ truy xuất cơ sở dữ liệu phiá maý khách .Java đưa ra kết nối JDBC kiểu 4 cho phép trình khách sử dụng các trình điều khiển gọn nhẹ kết nối trực tiếp vào trình điều khiển cơ sở dữ liệu đặc thù (thuần Java) trên máy chủ ở xa thông qua mạng Internet .Hình vẽ :
Java Application,Applet ,Servlet
JDBC Driver
Java Native Driver
Cơ sở dữ liệu (Access,SQL Server ,Oracle,)
Mã Java
Truy xuất cơ sở dữ liệu JDBC kiểu 4
Internet
Mã Java
LƯU DỮ LIỆU TRONG ĐỐI TƯỢNG SESSION
Khi lập trình ứng dụng cơ sở dữ liệu khái niệm session tượng trưng một giai đoạn duy trì kết nối giưã trình khách và trình chủ trong quá trình liên lạc .
Tuy nhiên , khái niệm session trong giao thức HTTP giưã trình duyệt và trình chủ lại có ý nghiã hơi khác .Khi trình duyệt cần yêu cầu trình chủ cung cấp một tài liệu , trình duyệt mở kết nối , lấy về nội dung trang dữ liệu và sau đó đóng ngay kết nối .Bởi vì không có một kết nối nào được duy trì , mỗi lần nhận được yêu cầu trình chủ Web Server không biết được trước đó trình duyệt đã có những trạng thái nào , do đó giao thức kết nối HTTP là giao thức kết nối phi trạng thái .
Để lưu vết những trạng thái mà trình duyệt yêu cầu trước đó , trình chủ đã cài đặt sẵn lớp HttpSession.Thay vào đó , HttpSession dưạ vào khái niệm cuả cookies quy định giữa trình khách và trình chủ .Cookies là một mẫu thông tin được gởi về trình duyệt phiá máy khách khi có yêu cầu trang .Mỗi khi trình duyệt phát sinh yêu cầu gởi lên web server ,nó lại chuyển mẫu tin cookies trở lại cho trình chủ .Dưạ vào cookies trình khách và trình chủ sẽ có những thông tin trạng thái thông báo cho nhau .
SỬ DỤNG ĐỐI TƯỢNG SESSION TRONG TRANG JSP
Java Server Pages API cung cấp rất nhiều đối tượng nội tại .Ví dụ request và out là hai đối tượng nội tại mà ta nghiên cưú qua .Đối tượng nội tại là đối tượng session .Đây là đối tượng xuất phát từ lớp HttpSession .Với đối tượng session , 3 phương thức mà bạn thường sử dụng nhất là :
Public void setAttribute(String name,Object value) throws IllegalStateException.
Public Object getAttribute(String name) throws IllegalStateException.
Public void removeAttribute(String name) throws IllegalStateException.
Các phương thức này hoạt động tương tự phương thức get và put cuả lớp Hashtable cuả Java . Cụ thể ,setAttibute() kết hợp một tên khoá với một giá trị cuả biến ,trong khi getAttibute() trả về giá trị kết hợp cuả một tên khoá nào đó ,nếu không tìm thấy giá trị kết hợp ,giá trị trả về sẽ là null .Lưu ý giá trị mà bạn muốn lưu hay lấy về phải là một đối tượng .Đối với giá trị đơn nguyên như int , float , bolean phải chuyển chúng sang kiểu đối tượng dưạ vào các lớp tương ứng như Integer , Float , Boolean . Thường tên khoá được xem là tên biến .Ví dụ để lưu một giá trị chuỗi vào đối tượng session để tất cả các trang JSP và servlet thấy được giá trị này , bạn phải goị setAttribute() như sau :
session.setAttribute("Usernames",u) session.setAttribute("Passwords",p)
Bất kì trang JSP hay servlet muốn xem Usernames mang giá trị gì có thể goị phương thức
String Mahv=(String)session.getAttribute("Mahocvien")
getAttribute luôn trả về kiểu đối tượng tổng quát Object . Muốn lấy về giá trị that sự cuả khoá ,cần chuyển Object về kiểu đối tượng thích hợp .
Biến đối tượng session chỉ tồn tại trong một thời gian nhất định .Khoảng thời gian này gọi là thời gian thực cuả session .Có thể cấu hình thay đổi thời gian này . Nếu muốn chủ động làm cho session hết hiệu lực ,phải gọi phương thức session.invalidate(). Khi session hết hiệu lực ,tất cả các khoá và giá trị kết hợp với nó do session lưu trữ sẽ bị huỷ bỏ .Khi bạn gọi các phương thức như getAttribute() hay setAttribute() mà đối tượng session đã hết hiệu lực thì lỗi ngoại lệ IllegalStateException sẽ phát sinh .
TÌM HIỂU CÁCH SESSION LÀM VIỆC
Dưới đây là mô hình làm việc và giao tiếp giữa trình duyệt và Web Server liên quan trao đổi thông tin cookies phục vụ cho session .
Browser
Browser
Web Server
Web Server
Web Server
Browser
Cho tôi xin trang tài liệu
Đây là trang tài liệu bạn .Số session ID là 3478
Cho tôi xin trang tài liệu bạn .Số session ID cuả tôi là 3478
Trình duyệt yêu cầu tài liệu
Trình chủ trả về trang tài liệu và cookies chưá thông tin về session ID
Trình duyệt chuyển số session ID cho trình chủ bất kì khi nào nó muốn yêu câù một tài liệu mới.
Đối tượng session chỉ được phép tồn tại trong một khoảngthời gian cho phép. Trình chủ tự động giải phóng và vô hiệu lực session để tài nguyên của hệ thống được bảo tồn . Nếu đối tượng session đã giải phóng và trình duyệt gởi yêu cầu trang với số session ID, trình chủ do không tìm thấy đối tượng session tương ứng nữa sẽ phát sinh lỗi ngoại lệ IllegalStateException.
XỬ LÝ CHẤM DỨT SESSION
Đối tượng session có thể bị chấm dứt hay bị huỷ bỏ trong hai trường hợp :chủ động gọi phương thức invalidate() cuả nó hoặc trình chủ web server huỷ session do thời gian hết hiệu lực .Tuỳ theo dữ liệu lưu trong session mà cần phải thực hiện một vài thao tác xoá biến dọn dẹp các đối tượng trước khi session bị hủy bỏ .Ví dụ , có thể lưu biến trong session các thông tin kết nối đến cơ sở dữ liệu .Thực hiện kết nối trước khi xoá session vì nó sẽ làm cho ứng dụng tăng tốc độ xử lý đối với các người dùng còn lại .
Đối tượng session cũng cài đặt cơ chế gọi ngược để thông báo cho một đối tượng nào đó trạng thái đối tượng được ràng buộc vào session hoặc khi session bị hủy bỏ .
Để cài đặt cơ chế thông báo cuả session ,dùng giao diện HttpSessionBindingListener .Giao diện này định nghĩa các phương thức mà session sẽ gọi thông báo cho các đối tượng về trạng thái cuả nó.
PHẦN 2 : GIỚI THIỆU RATIONAL ROSE
Rational Unified Process (RUP) được định hướng bởi các mô hình Use Case
Trong đó Học viên là một người bên ngoài hệ thống tương tác với hệ thống
Một Uses Case là một chuỗi các hành động mà hệ thống thực hiện mang lại một kết quả quan sát được .
Uses Case chứa luồng các sự kiện diễn ra trong hệ thống .
Lợi ích cuả quá trình định hướng bởi Uses Case :
Uses Case ngắn gọn , đơn giản và dễ hiểu đối với người dùng và người phát triển khi hiểu các yêu cầu chức năng cuả hệ thống .
Uses Case định hướng nhiều hoạt động trong quy trình : tạo mô hình thiết kế , triển khai hệ thống ,
Uses Case giúp đồng bộ hoá nội dung các mô hình khác nhau
Mô tả các class trong Rational Rose
Class là một mô tả cuả một nhóm đối tượng có chung các thuộc tính , hành vi , các mối quan hệ và ngữ nghiã .
Một đối tượng là một thể hiện cuả class
Biểu diễn class :
Một class được biểu diễn bằng một hình chữ nhật gồm 3 phần
Phần 1: chưá tên lớp .
Phần 2 : cho thấy cấu trúc class
Phần 3 : cho thấy các hành vi cuả lớp .
Quan hệ giữa các lớp :
Mối quan hệ Association :
Association : quan hệ bản số xác định số đối tượng tham gia vào một mối quan hệ ,số các thể hiện cuả một lớp quan hệ với một thể hiện cuả một lớp khác .
Lược đồ Sequence trong Rational Rose:
Lược đồ Sequence thể hiện từng chức năng hệ thống thông qua các lược đi trên sơ đồ
Sequence đơn giản , dễ hiểu đối với người dùng
Vơí Sequence giúp ta thấy được tổng quát toàn chức năng hoạt động cuả hệ thống.
CHƯƠNG IV : KẾT LUẬN VÀ
HƯỚNG PHÁT TRIỂN ĐỀ TÀI
Các kết quả đạt được trong đề tài :
Sau thời gian thực hiện luận văn , chúng em đã thiết kế một phần web site học qua mạng môn Lập trình mạng cơ sở .Ngoài việc tìm hiểu các tool dùng để cài đặt web site này ,chúng em đã xử lý một số yêu cầu :
Phân tíchvà thiết kế hệ thống theo hướngđối tượng
Quản lý chi tiết các học phần .
Quản lý học viên đăng kí học .
Quản lý thông tin về giáo viên và người quản trị hệ thống .
Xử lý một số chức năng khi học viên , giáo viên , người quản trị đăng nhập vào hệ thống .
Bảo mật hệ thống bằng cách sử dụng Session thông qua chức năng phân quyền cho mỗi user riêng khi họ đăng nhập vào hệ thống .
Ý nghiã thực tiễn cuả đề tài
Tóm lại với tốc độ phát triển ngày càng tăng của mạng máy tính, thì việc thiết kế và cài đặt các ứng dụng cho người dùng là rất cần thiết. Vì vậy ý tưởng học qua mạng tuy không phải là mới nhưng phần nào cũng giúp học viên thuận tiện trong việc học tập qua mạng , tiết kiệm được thời gian đến trường nhưng vẫn có đầy đủ kiến thức ,hạn chế chi phí và tổ chức thi cử trong các kì thi .
Một số vấn đề còn hạn chế
Chưa sử dụng được cơ chế bảo mật để web site đạt hiệu quả tốt hơn .
Kinh nghiệm lập trình trên môi trường lập trình Web chưa tốt nên giao diện có nhiều điểm chưa phù hợp về cách phân bố màu sắc, hình ảnh
Cơ sở dữ liệu chưa đáp ứng khi số lượng người dùng tham gia vào hệ thống quá đông cùng một lúc .
Hướng phát triển đề tài
Cải tiến một số chức năng chưa hoàn chỉnh trong chương trình.
Có thể thực hiện nội dung dạy học sinh động hơn .
Linh hoạt trong việc thay đổi cấu hình máy bằng nhiều cách khác nhau.
Thiết kế và cài đặt cơ sở dữ liệu khi số lượng người dùng tham gia vào hệ thống quá đông và cơ sở dữ liệu quá lớn.
Khống chế thời gian thi trong mỗi đề thi để học viên có thể đạt kết quả tốt hơn.
Sử dụng cơ chế bảo mật trang Web tốt hơn
PHẦN B : PHỤ LỤC
YÊU CẦU HỆ THỐNG
YÊU CẦU PHẦN CỨNG:
Client :
RAM : 128MB trở lên
CPU : tốc độ 667 MHz trở lên
Dung lượng đĩa cứng :10GB trở lên
Aplication server :
RAM : 256MB trở lên
CPU : tốc độ 667 MHz trở lên
Dung lượng đĩa cứng :10GB trở lên
Database :
RAM : 128MB trở lên
CPU : tốc độ 667 MHz trở lên
Dung lượng đĩa cứng :10GB trở lên
YÊU CẦU PHẦN MỀM:
Môi trường :
Windows 2000 server
Dreamweaver MX
Internet
Client :
Win 98 trở lên
Internet Explorer 4.0 trở lên.
Aplication server :
Tomcat 3.2 . J2EE
Internet Explorer 4.0 trở lên.
Database :
SQL 2000 Server.
TÀI LIỆU THAM KHẢO :
Stt
Tên Tài Liệu
Tác Giả
Nhà
Xuất Bản
Năm
Xuất Bản
1
JavaServer Pages
Marty Hall
Sun Microsystem
2000
2
Lập Trình Mạng bằng Java
Nguyễn Việt Cường
Học Viện Công Nghệ Bưu Chính Viễn Thông
2001
3
Giáo trình Phân Tích & Thiết Kế Hướng đối tượng Bằng UML
Dương Anh Đức
Nhà Xuất Bản Thống Kê
2002
4
Lập trình ứng dụng Web với JSP/Servlet
Nguyễn Phương Lan
Hoàng Đức Hải
NXB Giáo Dục
2001
5
Hướng dẫn thiết kế trang Web tương tác bằng JavaScript.
Hoàng Đức Hải
Phạm Hữu Dũng
NXB Giáo Dục
2001
6
Lập trình ứng dụng chuyên nghiệp SQL Server 2000 .
Phạm Hữu Khang
NXB Giáo Dục
2001
7
Java Lập Trình Mạng
Nguyễn Phương Lan
Hoàng Đức Hải
NXB Giáo Dục
2001