2.1.GIỚI THIỆU VỀ JRUN WEBSERVER 3.1
JRun là ứng dụng trỡnh chủ Java (Java Web Server) nhằm phực vụ những cụng nghệ mới nhất của Java như Servlet/JSP và ẸB. Mặc dự hiện nay cú rất nhiều trỡnh chủ Web dành cho Java như Java Web Server, Web Logic, Apache,…Trong đề tài này tụi sẽ ứng dụng JRun Web Server chạy trờn mụi trường Windows NT/2000, do JRun được viết bằng Java nờn ta cú thể sử dụng và cài đặt JRun cả trờn mụi trường Linux lẫn Unix.
JRun khụng chỉ đơn thuần là một trỡnh chủ Web mà cũn cú cỏc tớnh năng kết hợp với cỏc trỡnh chủ Web khỏc như IIS của Windows hay Apache
2.2.GIỚI THIỆU VỀ SQL SERVER 7.0
2.2.1. Lý thuyết hệ quản trị cơ sở dữ liệu sql server 7.0 và Cấu trỳc cơ sở
dữ liệu của sql server 7.0
SQL Server tổ chức dữ liệu lưu trong Cơ sở dữ liệu(CSDL) thành những thành phần logic. User làm việc trờn những thành phần logic này như bảng (table), view, procedure… Thành phần vật lý của những file thỡ trong suốt (transparent), chỉ cú người quản lý Cơ sở dữ liệu mới được làm việc trờn đú.
SQL Server cú 4 cơ sở dữ liệu hệ thống ( master, msdb, model, temdb database ) và cỏc cơ sở dữ liệu của user. Hỡnh minh họẵ
Master database: Ghi lại cấu hỡnh hệ thống của SQL Server. Nú ghi lại tất cả tài
khoản đăng ký của user và cấu hỡnh hệ thống, những file primary chứa thụng tin khởi động của Cơ sở dữ liệu của user, chứa thụng tin khởi động của SQL Server. Những thao tỏc sau gõy ra những thay đổi trong master database:Tạo , thay đổi, xúa cơ sở dữ liệu,thay đổi transaction log. Thờm hay xúa của những sever sử dụng thủ tục hệ thống như spưaddserver (thờm server) and spưdropserver (bỏ server).
Temdb database: chứa những bảng tạm và những stored procedure tạm. Những
bảng tạm và những stored procedure của user khi nối kết vào hệ thống được lưu trong temdb database. Khi SQL khởi động thỡ tất cả cỏc bảng tạm và cỏc stored procedure trong temdb database đều mất.
Stored procedure: là 1 tập hợp biờn dịch trước của những cõu lệnh của Transactư
SQL được lưu và xử lý như 1 đơn vị (unit). Stored procedure sẵn sàng cho việc quản lý SQL Server và hiển thị thụng tin của cơ sở dữ liệu, của những người sử dụng. SQL Server cung cấp những stored procedure gọi là stored procedure hệ
thống.
Model database: được dựng như 1 khuụn mẫu của CSDL trong hệ thống. Khi tạo ra 1 CSDL thỡ phần đầu của CSDL là bản sao của model database, phần cũn lại là những trang trống.
Msdb database: SQL Server Agent dựng msdb database để lập kế hoạch alert, job. Alert là 1 định nghĩa của người sử dụng đỏp ứng 1 sự kiện của SQL Server. Alert cú thể thực thi cả nhiệm vụ định nghĩa hoặc gởi eưmail đến 1 người chỉ định. Job là sự thực hiện 1 hành động quản lý chứa 1 hoặc nhiều bước, thay thế cho thuật ngữ task của SQL Server 6.5.
2.2.2. Cấu trỳc cơ sở dữ liệu vật lý:
2.2.2.1. Trang (page):
Đơn vị cơ bản lưu trữ dữ liệu là trang (page). Trong SQL Server 7.0 , 1 trang cú kớch thước 8MB, ta sẽ cú 128 trang/1MB. 96 byte đầu của mỗi trang chứa header của trang gồm thụng tin hệ thống như loại trang, số vựng trống của trang.
Cấu trỳc trang dữ liệu: Cỏc hàng dữ liệu (data row) được đưa vào tuần tự ngay sau page header, row offset được bắt đầu từ cuối trang, chỉ đến data row và cho biết byte bắt đầu của data row, kớch thước hàng tối đa là 8060 byte.
2.2.2.2 .Extent:
Extent là đơn vị cơ bản chỉ vựng lưu bảng và index. Mỗi extent gồm 8 trang liờn tục nhau. Cú 2 loại extent:
Mixed extent cú thể lưu những đối tượng khỏc nhau.
Uniform extent chỉ cú thể lưu 1 đối tượng duy nhất.
2.2.2.3 Những loại file trong CSDL:SQL Server cú 3 loại file:
Primary file: là file bắt đầu của cơ sở dữ liệu. Mỗi cơ sở dữ liệu chỉ cú 1 file
primary, tờn file cú phần mở rộng là .mdf
Secondary file: là file lưu những gỡ cũn lại của cơ sở dữ liệu mà khụng chứa trong primary file, cú thể cú nhiều file secondary, tờn file cú phần mở rộng là .ndf.
Log file: chứa những thụng tin transaction log, được dựng để khụi phục cơ sở dữ liệu, mỗi cơ sở dữ liệu cú ớt nhất 1 log file, tờn file cú phần mở rộng là .ldf.
Logical_file_name: là tờn dựng trong những cõu lệnh Transact_SQL.
Os_file _name: là tờn file vật lý, chỉ rừ đường dẫn của file
MyDB_primary là tờn logical_file_name, c:\Mssql7\Data\MyData1.mdf là tờn os_file_name.
Những trang trong file được đỏnh số bắt đầu từ 0. Mỗi file cú 1 số ID. Mỗi trang trong file gồm cả ID file và số thứ tự trang trong file.
Vớ dụ: file primary cú kớch thước 4MB, và secondary cú kớch thứơc 1 MB. Trang đầu tiờn trong mỗi file là trang header file chứa thụng tin về thuộc tớnh của file. Trang thứ 9 trong primary file là trang khởi động cơ sở dữ liệu chứa thụng tin về thuộc tớnh của cơ sở dữ liệu.
2.3. Lí THUYẾT Mễ HèNH QUAN HỆ
2. 3.1. Cỏc khỏi niệm cơ bản
Thực thể: là một đối tượng cụ thể nào đú
Thuộc tớnh thực thể: Tớnh chất xỏc định thực thể
Lớp thực thể : Cỏc thực thể cú cựng thuộc tớnh
Lược đồ quan hệ:
Thuộc tớnh: Tờn thuộc tớnh, miền xỏc định của thuộc tớnh
Lược đồ quan hệ gồm cỏc thuộc tớnh của thực thể (tờn, miền xỏc định) cựng với cỏc mệnh đề ràng buộc
Lược đồ của một quan hệ: R=< x, v>= (A1: D1’ A2 : D2 ,……,An :Dn , M) trong đú: AI :Tờn thuộc tớnh, DI :Miền xỏc định của thuộc tớnh,M: Mệnh đề ràng buộc 2.3.2. Khỏi Niệm phụ thuộc dữ liệu và cỏc dạng chuẩn
Một thuộc tớnh gọi là phụ thuộc vào cỏc thuộc tớnh khỏc khi giỏ trị của thuộc tớnh này phụ thuộc vào giỏ trị của thuộc tớnh kia. Sự phụ thuộc cú thể là trực tiếp hay giỏn tiếp.
Một quan hệ bao giờ cũng cú một nhúm thuộc tớnh mà giỏ trị của chỳng qui định giỏ trị của cỏc thuộc tớnh khỏc, nhúm thuộc tớnh đú gọi là khúa.
Với một quan hệ tựy vào cỏc phụ thuộc của cỏc thuộc tớnh vào khúa trong đú mà ta
phõn chia cỏc quan hệ đú thành cỏc dạng chuẩn khỏc nhau. Cỏc dạng chuẩn cơ bản: Dạng chuẩn 1
Dạng chuẩn 2 Dạng chuẩn 3
Cỏc dữ liệu lưu giữ dưới dạng chuẩn 3 trỏnh được hiện tượng dư thừa dữ liệu, tạo cho dữ liệu cú tớnh độc lập cao. Cỏc quan hệ nếu chưa ở dạng chuẩn 3 sẽ được phõn ró thành cỏc quan hệ nhỏ hơn ở dạng chuẩn 3.
2.3.3 Khỏi niệm chỉ dẫn và khúa chỉ dẫn
Để cú thể tỡm kiếm thụng tin nhanh theo một tiờu chuẩn nào đú chỳng ta tạo ra cỏc thụng tin chỉ dẫn theo tiờu chuẩn đú. Cỏc thụng tin chỉ dẫn là cỏc thụng tin giỳp ta tỡm kiếm dữ liệu nhanh. Cỏc thụng tin này gọi là khúa chỉ dẫn . Khúa chỉ dẫn cú thể là một trường, hoặc nhiều trường .
Với cỏch tạo ra khúa chỉ dẫn theo tiờu chuẩn nào đú ta cú thể tỡm kiếm nhanh dữ
liệu theo tiờu chuấn đú.
2.4.GIỚI THIỆU VỀ JAVA SERVLET 2.4.1.Khỏi niệm về JAVA SERVLET 2.4.1.Khỏi niệm về JAVA SERVLET
Mó nguồn của Servlet dược biờn dịch ra mó byte – code của Java. Servlet dễ sử dụng và phỏt triển những ứng dụng Web nhanh hơn CGI. Servlet chạy tự động khi chỳng được gọi từ trỡnh chủ (Web server) .
Servlet chạy toàn bộ trờn mỏy ảo Java, xử lý và sinh mó HTML trả về trỡnh khỏch. Bằng cỏch này Servlet cú thể chạy trờn rất nhiều trỡnh chủ hiểu Java và chỳng khụng phụ thuộc và trỡnh duyệt (browser).
2.4.2.Những ứng dụng thực tế của JAVA SERVLET và kiến trỳc của JAVA SERVLET
Servlet cú thể được sử dụng trong bất kỳ một ứng dụng nào liờn quan đến Web. Hai gúi tạo nờn kiến trỳc của Java Servlet là : javax.servlet và javax.servlet.http. Gúi javax.servlet chứa đựng phần giao diện tổng quỏt phục vụ cho Servlet. javax.servlet.http chứa đựng cỏc lớp phục vụ cho giao thức triệu gọi HTTP. Bộ khung hỡnh thành nờn Servlet bao gồm cỏc phương thức sau:
init() Phương thức khởi tạo servlet.
service() Phương thức nhận và trả lời từ phớa người sử dụng. destroy() Phương thức thực hiện việc huỷ servlet.
Cỏc tập tin Servlet đều được đặt trong giao diện bao gồm cỏc phương thức trờn. Chỳng rất rừ ràng trong giải phỏp lập trỡnh đối tượng và dễ dàng mở rộng.
2.5.GIỚI THIỆU VỀ JAVA SERVER PAGES(JSP) 2.5.1.Khỏi niệm về JSP
JSP là cụng nghệ rất mạnh để tạo trang HTML động về phớa trỡnh chủ. JSP là phần mở rộng trực tiếp của Java Servlet, bộ diễn dịch JSP sẽ ỏnh xạ trực tiếp mó JSP thành Servlet. Viết trang JSP ta khụng cần phải thụng qua quỏ trỡnh biờn dịch tập tin thực thi .class như trong Servlet. JSP cung cấp mụ hỡnh lập trỡnh Web dễ dàng và tiện dụng hơn Servlet. Cụng việc biờn dịch trang JSP được thực hiện tự động bởi trỡnh chủ.
2.5.2.Quan hệ giữa Servlet và JSP
2.5.2.1.Cỏch trỡnh chủ biờn dịch trang JSP thành servlet
Thật sự cỏc trang JSP được trỡnh chủ dịch ra thành servlet trước khi cho thực thi. Khi trỡnh khỏch triệu gọi trỡnh chủ Web server sẽ thực hiện cỏc bước sau:
Bước 1: Kiểm tra trang JSP đó được dịch ra thàn mó nguồn tương
đương của servlet chưa.
Bước 2 : Nếu chưa biờn dịch trang JSP thành file nguồn thành file
nguồn .java theo cấu trỳc của servlet. Gọi trỡnh biờn dịch javac biờn dịch file nguồn .java thành file thực thi của servlet .class.
Bước 3 : Nạp servlet đó biờn dịch ở bước 2, thực thi kết quả trả về
cho trỡnh khỏch.
Bước 4 :Nếu file JSP đó được biờn dịch trước đú : thực hiện việc
kiểm tra xem nội dung file JSP cú thay đổi hay khụng. Nếu cú, quay lại bước 2 biờn dịch lại trang. Nếu khụng thực hiện lại bước 3.
2.5.2.2. So sỏnh giữa Servlet và JSP
Do mó trang JSP thi thực thi đều được biờn dịch ra servlet cho nờn tất cả những gỡ servlet làm được cũng đồng nghĩa với trang JSP làm được. Viết trang JSP đụi khi đơn giản hơn trang servlet vỡ khụng cần phải qua bước đăng ký và biờn dịch thủ cụng.
JSP cú thể trộn lẫn mó java với cỏc thẻ HTML nờn việc thiết kế trang JSP thường đơn giản và dễ bổ sung hơn so với servlet. Tuy nhiờn đõy cũng là yếu tố khụng nờn lạm dụng đối với JSP. Nếu tập trung tất cả mó Java vào cựng với mó HTML thỡ một khi dự ỏn mở rộng và trở nờn phức tạp tất nhiờn việc bảo trỡ và nõng cấp ứng dụng Web với hàng trăm trang JSP sẽ rất khú khăn. Trong quỏ trỡnh phỏt triển ứng dụng Web theo nhúm, việc trộn lẫn mó Java và HTML trong trang JSP cho thấy khụng hiệu quả. Khú cú thể tỏch rời giữa cụng việc viết mó cho ứng dụng (thường
là vai trũ của lập trỡnh viờn – programmer) và nhúm xõy dựng giao diện (nhúm thiết kế Web – Web designer). Mó trang JSP ở dạng thuần văn bản nờn thường khụng che được mó nguồn của logic chương trỡnh.
Với servlet tuy phải biờn dịch và đăng ký thủ cụng với trỡnh chủ nhưng bự lại tớnh bảo mật cao hơn. Ta chỉ cần cung cấp cho trỡnh chủ Web Server bản servlet nhị phõn ( file .class ) đó qua bước biờn dịch mà khụng cần đến mó nguồn của servlet ban đầu. Mặt khỏc, cỏc servlet cú thể tương tỏc liờn hoàn với nhau để tạo nờn những kết xuất tuỳ biến và đa dạng trước khi trả kết quả về cho trỡnh khỏch. Servlet cú thể phõn ró cỏc đơn thể của dự ỏn và phỏt triển độc lập nhau như cỏc thành phần riờng biệt để rỏp lại trong một tổng thể chung. Mặc dự vậy, việc kết xuất trong servlet thường dựa vào phương thức print() hoặc println() nờn việc kết xuất phụ thuộc vào lập trỡnh viờn với hàng loạt cỏc lệnh print() và println() rất khú quản lý.
Việc quyết định sử dụng trang JSP, Servlet hay kết hợp cả hai là tựy vào từng dự ỏn và mục đớch của chương trỡnh cần phỏt triển. Thụng thường đối với những dự ỏn nhỏ, yờu cầu thời gian nhanh, JSP là lựa chọn thớch hợp nhất. Đối với những dự ỏn cần sự độc lập và chỉ thiờn về xử lý ta nờn sử dụng servlet. Trường hợp dự ỏn lớn ta nờn kết hợp cả servlet và JSP. Mụ hỡnh kết hợp tốt nhất giữa servlet và JSP thường được gọi là MCV (Model – View – Controler) trong đú servlet đúng vai trũ trung tõm điều khiển (controler) đưa ra quyết định xử lý, JSP đúng vai trũ thể hiện giao diện hay hiển thị dữ liệu đó xử lý (View). Quy trỡnh tớnh toỏn logic của ứng dụng được giao lại cho cỏc thành phần JavaBean hay EJB.
2.6. GIỚI THIỆU VỀ JAVABEANS 2.6.1.Khỏi niệm về JAVABEANS 2.6.1.Khỏi niệm về JAVABEANS
JavaBeans là một thành phần đối tượng được xõy dựng từ ngụn ngữ Java. JavaBeans cú thể là việc và chạy trờn mọi mỏy ảo Java. Yờu cầu tối thiểu nhất để tạo nờn thành phần JavaBeans là : cụng cụ và trỡnh biờn dịch JDK 1.1 trở lờn. JavaBeans cú thể sử dụng cỏc phương thức get/set để lỏy về và đặt thuộc tớnh cho đối tượng Bean mà nú thể hiện.
2.6.2.Cỏc thẻ chuẩn của JAVABEANS trong trang JSP
2.6.2.1.<jsp:useBean>
Thẻ <jsp:useBean> dựng để khai bỏo phạm vi và định danh id(identify) nhận dạng Bean. Nú tương tự như khai bỏo biến đối tượng trong mó java.
Thẻ <jsp:useBean> cú cỳ phỏp như sau:
<jsp:useBean id=”name”
scope=”page | request | session | application” class=”packagename.classname”>
Thuộc tớnh Diễn giải
Id Thuộc tớnh này là định danh nhận dạng của đối tượng Bean trong một phạm vi cho trước. “name” là tờn của Bean cú phõn biệt chữ hoa, thường.
Scope Thuộc tớnh phạm vi cho biết mụi trường sống của đối tượng. Phạm vi của khai bỏo mà thành phần Bean cú hiệu lực bao gồm page (Bean chỉ cú hiệu lực và phạm vi truy xuất trong khai bỏo nú). Request (Bean cú hiệu lực trong một lần yờu cầu từ mỏy khỏch). Session (hiệu lực của bean tương tự hiệu lực của cỏc biến session). Application (hiệu lực của bean tương tự hiệu lực của cỏc biến application)
Class Tờn đầy đủ của lớp Bean. Đõy là tờn tập tin .class sua khi đó biờn dịch từ mó nguồn .java. tờn này cũng phõn biệt chữ hoa và chữ thường
BeanName Này để tham chiếu đến tờn của Bean
Type Thuộc tớnh chỉ ra loại biến kịch bản. Nếu biến này khụng chỉ rừ giỏ trị của nú sẽ là giỏ trị của thuộc tớnh lớp
2.6.2.2.<jsp:setProperty>
Thẻ <jsp:setProperty> dựng để gỏn giỏ trị vào thuộc tớnh Bean. Thuộc tớnh tờn của Bean chỉ định cho đối tượng phải được định nghĩa và nằm trong phạm vi cho phộp.
Cỳ phỏp của <jsp:setProperty>
<jsp:setProperty name = “beanName” prop_expr/>
Trong cỳ phỏp trờn, name cho biết tờn Bean mà thuộc tớnh của nú đó được cài đặt. prop_expr cú thể cú cỏc khai bỏo sau:
property =”*” |
property = “propertyName” |
property = “propertyName” param=”parameterName”| property = “propertyName” value=” propertyValue”
Thuộc tớnh Diễn giải
Name Thuộc tớnh trỡnh bày tờn của Bean, tờn này đó được định nghĩa bởi thẻ
<jsp:useProperty>
Property Thuộc tớnh của Bean cần lấy giỏ trị
Param Tham số cần dựng cho thuộc tớnh của
Bean
Value Giỏ trị được gỏn vào cho thuộc tớnh của
Bean
2.6.2.3. <jsp:getProperty>
Thẻ <jsp:getProperty> dựng để lấy giỏ trị thuộc tớnh Bean và chuyển giỏ trị thành kiểu chuỗi. Cỳ phỏp cho thẻ <jsp:getProperty> như sau:
<jsp:getProperty name=”name” property=”propertyName”/>
Thuộc tớnh Diễn giải
Name Thuộc tớnh trỡnh bày tờn của Bean, tờn này đó được khai bỏo và định nghĩa bởi thẻ <jsp:useProperty>
Property Thuộc tớnh của Bean cần lấy giỏ trị
Để sử dụng JavaBeans trong trang JSP, bạn cần khai bỏo Bean với thẻ:
< jsp:useBean >
< jsp : useBean id = “jb” scope = “page” class = “searchbean. searchbean”/> < jsp : setProperty name = “jb” property = “job” param = “name”/>
PHẦN 2 : XÂY DỰNG ỨNG DỤNG CHƯƠNG 1 PHÂN TÍCH BÀI TỐN CHƯƠNG 1 PHÂN TÍCH BÀI TỐN 1.1.TấN ĐỀ TÀI
Tỡm hiểu xõy dựng ứng dụng thư điện tử
1.2.DỀ CƯƠNG CHI TIẾT 1.2.1.Khảo sỏt 1.2.1.Khảo sỏt
Trong thời gian thực tập tốt nghiệp tụi đó khảo sỏt, tỡm hiểu hệ thống thư tớn điện tử. Quỏ trỡnh xõy dựng một ứng dụng thư điện tử (Email) rất đa dạng nhưng chủ yếu tập trung vào hai phần:
ư Xõy dựng mail server : là chương trỡnh hoạt động phớa mỏy chủ nhận, lưu trữ mail, phõn phối, gởi mail đến cỏc trỡnh chủ khỏc. Cỏc chương trỡnh như Mail Deamon, SendMail, Mail Exchange… là những mail server.