Phân tánDistributed: Java đợc thiết kế để hỗ trợ các ứng dụng phân tán bằng các lớp Mạng Java Net ví dụ nh với lớp URL của Java, một ứng dụng của Java có thể dể dàng truy xuất từ máy ở x
Trang 1ơng I
Đặt Vấn Đề
I Mua sắm qua mạng
Internet ra đời và ngay sau đó phát triển nhanh chóng cả theo nghĩa tăng độ phủ
ra toàn cầu và năng lực phục vụ, đồng thời ngày càng trở nên phổ biến, quen dùng hơn với mọi cộng đồng dân c, mua bán hàng hoá qua mạng đã thực sự thu hút đợc sự quan tâm của cả ngời dùng cá thể lẫn mọi doanh nghiệp lớn nhỏ Theo nghĩa phổ biến, mua bán hàng hoá qua mạng đợc hiểu là việc trao đổi, thông thơng hàng hóa trên Internet, song thực sự nó phong phú và muôn hình muôn vẻ hơn nhiều Bạn hãy thử tởng tợng xem, bạn muốn mua một bộ máy tính với cấu hình hoàn hảo và tất nhiên giá cả cũng phải chăng Bạn muốn tham khảo ở nhiều Cataloge, đi hỏi ở nhiều cửa hàng về mặt hàng bạn muốn mua rất vất vả và mất nhiều công sức, hơn thế nữa nếu bạn biết một cửa hàng nào đó ở một địa điểm cách xa nơi bạn sống có mặt hàng mà mình mong muốn Bạn chịu bỏ việc, mất công sức thời gian để đi đến tận nơi đó để mua mặt hàng bạn cần hay bạn đành ngậm ngùi “xài” đồ mình không ng bởi ở nơi bạn sống, làm việc không có mặt hàng đó hay bạn quá bận rộn, quỹ thời gian eo hẹp của bạn không đủ để giúp bạn đi mua đợc mặt hàng mà bạn cần Nghe chừng những việc đó thật vô lí trong thời buổi kinh tế thị trờng, khi mà nếu là một khách hàng thì bạn đợc xem nh là “th-ợng đế” mà thợng đế thì cần gì phải đợc nấy chứ?!! Ai lại bị ngăn cản bởi khoảng cách, thời gian và dùng đồ mình chẳng a mấy vậy? Tại sao bạn không nghĩ là trên Internet có thể giúp bạn! Đứng ở phơng diện của một khách hàng bạn đã thấy lợi ích của việc đặt hàng qua mạng Internet nh thế nào cha?
Bạn là một chủ cửa hàng kinh doanh một mặt hàng nào đó, bạn muốn mở rộng phạm vi kinh doanh của cửa hàng mình Địa điểm cửa hàng đặt ở Vinh nhng bạn muốn giới thiệu mặt hàng kinh doanh của cửa hàng ở Hà Tĩnh, Thanh Hóa, Hà Nội, trên toàn quốc, và rộng hơn nữa là với một nớc nào đó trên hành tinh này sẽ khó khăn và tốn kém biết chừng nào nếu bạn ra Thanh Hoá, vào Hà Tĩnh, để giới thiệu, quảng cáo các mặt hàng cho cửa hàng mình Sao bạn không nghĩ sẽ xây dựng cho mình một trang Web ?!!! Mọi ngời có thể truy cập vào nó nhờ Internet, nh thế là bạn chỉ ngồi một chỗ để quảng cáo, bán hàng và có thể khẳng định là phạm vi hoạt động mua bán của cửa hàng bạn sẽ đợc mở rộng Đã đến lúc bạn chỉ cần ở tại địa điểm kinh doanh của mình gửi hàng bán đi thông qua các đơn đặt hàng qua mạng mà bạn nhận đợc từ trang Web quảng cáo của mình Bạn có muốn tận dụng mọi thời gian để mở cửa hàng,
là một nhà kinh doanh có lẽ bất cứ lúc nào bạn cũng nh mọi ngời kinh doanh khác đều muốn bán đợc hàng, đều muốn có ngời đặt hàng, bởi đó chính là sự thành công trong kinh doanh của bạn Nhng làm sao cửa hàng của bạn có thể mở cửa thâu đêm, suốt sáng đợc cho dù bạn là ngời sẵn sàng trực ca đêm và cũng có những khách hàng nhiệt tình mua hàng vào thời điểm đó? Làm thế nào để bạn nhận ra đơn hàng họ đặt để có thể phục vụ khách hàng một cách sớm nhất? Bạn có đủ sức trả lời cùng một lúc cho
Trang 2hàng nghìn khách hàng những thông tin về một sản phẩm nào đó không? Mọi khó khăn trên đây đều có thể giải quyết đợc bằng Internet bởi nếu khi đã xây dựng cho mình một ứng dụng Web để bán hàng thì bạn không phải trực liên tục mà phần việc đó
đã có máy tính làm thay bạn Lập các trang Web để quảng cáo sản phẩm và phục vụ cho việc đặt hàng của khách hàng, đó là cách nhanh nhất cho việc quảng bá sản phẩm, nâng cao khả năng phục vụ khách hàng của ngời kinh doanh
Một ứng dụng E-Commerce đơn giản là một Web site cung cấp thông tin để khách hàng có thể liên lạc và biết rõ sản phẩm mà những dịch vụ mà cửa hàng đa ra Tiếp đến khách hàng có thể đặt mua, thanh toán và hẹn ngày giao hàng hay nhận sự hỗ trợ về dịch vụ từ nhà cung cấp Tất cả các giao dịch trên đều diễn ra trên mạng và kiểm soát bởi ứng dụng Web của bạn
Hai hình thức cơ bản và thông dụng nhất của ứng dụng thơng mại điện tử ngày nay là B2B (Business to Business) còn gọi là từ doanh nghiệp đến doanh nghiệp, và B2C (Business to Consumer) gọi là từ doanh nghiệp đến ngời tiêu dùng
Cho dù hàng hoá có đợc cải tiến bao nhiêu, có hợp thị hiếu nh thế nào thì cũng vô ích nếu nó không đợc phân phối, giới thiệu kịp thời đến tay ngời tiêu dùng Sau khi tạo ra một sản phẩm, nhập một mặt hàng mới thì doanh nghiệp cần có cách thức nào
đó đa thông tin sản phẩm đến ngời tiêu dùng Cho dù sản phẩm đó là phần mềm hay phần cứng tức là các sản phẩm hữu hình, doanh nghiệp đều có thể dùng Web site để làm cho các thông tin về từng thế hệ sản phẩm trở nên có giá trị Quảng cáo điện tử cung cấp cho khách hàng những thông tin chính xác về cửa hàng gần nhất chứa mặt hàng đó, thời gian và cách kinh doanh của cửa hàng, thậm chí cả các gợi ý cách xem xét sản phẩm Nếu khách hàng không muốn tận mắt xem mặt hàng đó trớc khi mua, các đơn hàng có thể đợc đặt và đợc thanh toán theo kiểu điện tử, hoặc theo thoả thuận của hai bên Quảng cáo hàng qua mạng Internet giúp giảm chi phí tiếp thị và tăng khả năng đáp ứng đợc nhu cầu của khách hàng một cách hiệu quả, tận dụng đợc mọi cơ hội kinh doanh
Lợi ích của việc sử dụng Web quảng cáo, tiếp thị kinh doanh là rất lớn và là ớng đi của các doanh nghiệp trong tơng lai
h-II Lựa chọn công cụ
Nh chúng ta đã biết Java là ngôn ngữ đợc lựa chọn sử dụng nhiều cho việc lập trình mạng Java đợc thiết kế cho mục đích đa nền ( Không phụ thuộc vào bất cứ hệ
điều hành nào) nên mã của chơng trình Java sau khi biên dịch thờng là một dạng File nhị phân, khác với các File thực thi nhị phân của Windows mà ta thờng gặp Chơng trình Java đợc biên dịch ra mã nhị phân gọi là Byte-Code và đợc triệu gọi thực thi trong máy ảo Java (Vitual Machine VM), File nhị phân của Java thờng có phần mở
rộng là *.class Vậy máy ảo Java là gì? Máy ảo Java thực sự chỉ là một trình thông
dịch thông thờng có khả năng thực thi các mã Byte-Code tơng tự nh bộ xử lí của các
Trang 3máy tính thực thi các mã nhị phân là các chỉ thị mã máy Nói đúng hơn máy ảo Java là một kiến trúc của bộ xử lí nhng bằng cơ chế phần mềm thay thế cho cơ chế phần cứng Các đặc điểm của Java có thể tóm gọn trong một câu sau: “ Java là một ngôn ngữ đơn giản, h ớng đối t ợng , phân tán, thông dịch, mạnh mẽ, bảo mật, cấu trúc độc lập, khả chuyển, hiệu quả cao và linh động ” ( Theo The Java (TM) Languge: An Overview - Sun Microsystems/1995).
Đơn giản (Simple):
Đặc điểm đầu tiên và cũng là mục đích cơ bản của Java là tính đơn giản Theo nhóm sáng lập Java Team, Java đợc đa ra để thay thế ngôn ngữ C hay C++ Vì nhìn chung, để lập trình đợc C ngời ta phải có một quy trình học tập và thực hành, mặt khác, C không phù hợp với yêu cầu sử dụng: khó viết, khó biên dịch và Java đợc xây dựng từ C, loại bỏ những gì phức tạp từ C, thì rõ ràng là đơn giản hơn C, Java không phải là một thứ ngôn ngữ đòi hỏi sự hớng dẫn đặc biệt hay kéo dài Một điềunữa chứng minh cho sự đơn giản của Java là kích thớc của bộ biên dịch cơ bản và lớp hỗ trợ là vô cùng nhỏ
H ớng đối t ợng (Object Oriented):
Java là ngôn ngữ lập trình hớng đối tợng, lập trình hớng đối tợng là phơng pháp lập trình đợc yêu thích, đã thay thế phơng pháp lập trình truyền thống dựa trên thủ tục Một ngôn ngữ hớng đối tợng sử dụng kĩ thuật phân chia, đóng gói, kế thừa đa hình nên cung cấp tính linh động, tính đơn thể chức năng và khả năng sử dụng mức cao trong thiết kế phần mềm Lập trình hớng đối tợng vẽ ra mô hình thế giới hiện thực Vạn vật trong thế giới này đều có thể đợc mô phỏng thành đối tợng Hình tròn là đối tợng, con ngời là đối tợng, và biểu tợng cửa sổ cũng chính là đối tợng, thậm chí văn tự, thế chấp cũng đợc xem là đối tợng Chơng trình Java mang bản chất hớng đối tợng bởi vì lập trình bằng Java chỉ tập trung vào mục tiêu tạo đối tợng, thao tác đối tợng và giúp các
đối tợng phối hợp hoạt động Lập trình hớng đối tợng có tính linh động, tính đơn thể chức năng và khả năng tái sử dụng lí tởng Đã nhiều năm qua, công nghệ hớng đối t-ợng đợc xem là thành phần tinh tuý nhất, đòi hỏi nguồn đầu t đáng kể vào chơng trình huấn luyện và cơ sở hạ tầng Java đã giúp công nghệ hớng đối tợng hoà nhập vào xu thế phát triển của nền điện toán Java có cấu trúc đơn giản và chặt chẽ, giúp dễ dàng viết và đọc chơng trình Chơng trình Java có tính biểu cảm, xét về mặt ứng dụng và thiết kế
Phân tán(Distributed):
Java đợc thiết kế để hỗ trợ các ứng dụng phân tán bằng các lớp Mạng (Java Net)
ví dụ nh với lớp URL của Java, một ứng dụng của Java có thể dể dàng truy xuất từ máy ở xa, nó có thể mở hoặc truy cập đến các đối tợng thông qua mạng cũng dễ dàng
nh lập trình viên sử dụng ngay trên máy tính của mình Ngoài ra các lớp còn đợc chuẩn bị cho việc thiết lập các kết nối ở mức ổ cắm (Socket - level connection) nghĩa
là chỉ cần cắm vào hay kết nối đợc là có thể chạy trên cùng một máy
Trang 4Thông dịch (Inter Preter):
Java là một ngôn ngữ thông dịch nên nó trở nên khả chuyển Các ứng dụng Java
có thể dễ dàng chạy trên các máy khác nhau với các nền phần cứng khác nhau nh Macintosh, Intel, Sun Microsystems, Alpha, chỉ cần đi kèm với các ứng dụng đó là
bộ thông dịch, bộ gỡ rối và nhất là bộ th viện thời gian động Khi ấy các lập trình viên
sẽ không còn phải lệ thuộc vào nội dung giới hạn của ngôn ngữ máy mà chỉ chú ý đến các th viện module dùng chung
Mạnh mẽ (Robust):
Dụng ý của Java là giúp lập trình viên có thể tạo nên những chơng trình chắc chắn không phạm nhiều vào những lỗi khi chạy Java không cho phép lập trình viên khai báo các biến một cách tuỳ tiện Biến trong Java luôn phải tờng minh ngay cả biến kiểu dãy (array) cũng không chỉ là một con trỏ nh trong C mà là một kiểu thực Nhờ
đó mà những lỗi thờng gặp trong khi viết bằng ngôn ngữ C nh cấp phát bộ nhớ, bộ nhớ tràn, trùng lặp bộ nhớ, đã đợc giải quyết
Bảo mật:
Là ngôn ngữ lập trình Internet, Java đợc áp dụng trong môi trờng mạng phân tán, nếu bạn tải trên chơng trình Java (loại chơng trình đặc biệt) rồi chạy trên máy tính của mình nó sẽ không làm tổn hại đến hệ thống của bạn do Java thực hiện nhiều cơ chế bảo mật nhằm bảo vệ hệ thống khỏi bị thiệt hại bởi các chơng trình lạc điệu
Trung lập trong kiến trúc :
Đặc tính đáng lu ý nhất của Java là kiến trúc hay độc lập với hệ nền Bạn có thể viết chơng trình chạy trên hệ nền bất kỳ với Java Vitual Machine Khi mà các hãng cung cấp phần mềm thờng thiết kế nhiều phiên bản của cùng sản phẩm để chạy trên hệ nền khác nhau (Windows, OS/2, Macintosh và đủ loại máy tính lớn nh UNIX, IBM) với Java, ngời thiết kế chỉ cần một phiên bản để chạy trên tất cả các hệ nền
Khả chuyển:
Chơng trình Java có tính khả chuyển vì chúng có thể chạy trên bất kì hệ nền nào
mà không cần biên dịch lại Hơn nữa không có đặc tính chuyên biệt về nền trong quy cách ngôn ngữ Java ở một số ngôn ngữ khác nh Ada, số nguyên lớn nhất thay đổi trên từng hệ nền Trái lại, trong Java kích thớc của số nguyên không thay đổi trên mọi
Trang 5Get HTML Post HTML
Web
Browser
HTTP Web Service
File Servlet
Invoker Servlet
User Servlet
HTML File
Java Web Server
Java có thể đợc dùng để viết các chơng trình ứng dụng tơng tự nh mọi ngôn ngữ lập trình khác và Java thiên về lập trình cho các ứng dụng mạng và Internet Ngoài ra Java còn đợc dùng để viết các Applet hoặc Servlet hay mã trang JSP, đó là những thành phần ứng dụng đặc biệt dùng cho trình duyệt và trình chủ
+/ Applet: Là những chơng trình nhỏ đợc “nhúng” và chạy ngay trong trình duyệt Applet giúp ta thực hiện đợc rất nhiều tơng tác động bên trong trình duyệt Và
có thể nói Java ra đời và nổi tiếng là nhờ vào khả năng viết Applet của nó Mặc dù vậy ngày nay Applet không đợc sử dụng nhiều trên các trình duyệt
+/ Servlet: Trái với Applet thờng đợc các trình duyệt tải về chạy trên máy khách (Client) Servlet là các thành phần đối tợng “nhúng” trên trình chủ Web Server thực hiện xử lí yêu cầu và sinh ra các trang Web động trả về cho máy khách Servlet là các chơng trình Java chỉ cần nạp một lần vào máy ảo, Servlet sẽ phục vụ mọi yêu cầu
từ máy khách gửi đến Thực sự Servlet là một lớp đối tợng (.class) và 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 nhiều trên các trình chủ hiểu Java mà không hề phụ thuộc vào trình duyệt Servlet
có thể đợc sử dụng trong bất kì ứng dụng nào liên quan đến Web Để sử dụng đợc Servlet ta cần có các trình chủ hiểu Java và hỗ trợ triệu gọi Servlet nh Apache, JRUN, Web logic, Nhng khi biên dịch và tạo Servlet ta chỉ cần đến trình biên dịch JDK mà không cần đến các trình chủ khác
Cơ chế hoạt động của Servlet trên máy chủ:
Nếu bạn yêu cầu tài nguyên là một tập tin, trình chủ sẽ dùng chơng trình Servlet nhỏ gọi là File Servlet đọc nội dung tập tin trên đĩa cứng sau đó trả về cho trình khách Nếu bạn yêu cầu một trình Servlet khác (user servlet) thực thi để sinh ra thông tin
động thì Invoker Servlet sẽ triệu gọi Servlet mà ta mong muốn Kết quả sinh ra sau đó cũng đợc gửi về trình khách tơng tự nh cơ chế đọc tài nguyên trên đĩa cứng mà File Servlet thực hiện khi đợc gọi thực thi xong Servlet vẫn nằm trong bộ nhớ để phục vụ
Trang 6cho lần triệu gọi tiếp theo, đây chính là u điểm làm cho tốc độ thực thi Servlet mạnh lên.
Rõ ràng là việc viết Servlet không đơn giản chút nào, một điểm nữa cần lu ý là muốn sử dụng Servlet ta phải biên dịch và tạo Servlet nhờ trình biên dịch và đăng kí Servlet đó với trình chủ
JSP là một cách đơn giản hóa cho Servlet bởi JSP viết mã Java tơng tự Servlet nhng cho phép trộn lẫn mã Java với các thẻ HTML Trình diễn dịch JSP sẽ chịu trách nhiệm kết hợp mã Java và thẻ HTML để tạo ra Servlet xử lí các yêu cầu mà trình khách gửi đến Nh thế là JSP là công nghệ rất mạnh để tạo trang HTML động về phía trình chủ JSP chính 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 JSP ta không cần phải trải qua quá trình biên dịch tập tin thực thi Class nh khi dùng 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 tự động thực hiện bởi trình chủ và ta không phải biên dịch JSP bằng tay, do đó mã JSP dễ viết và linh động hơn Servlet, trong khi mã trang JSP khi thực hiện đề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, cũng vì JSP có thể trộn lẫn mã Java với thẻ HTML nên việc thiết kế trang JSP ờng đơn giản và dễ bổ sung hơn so với Servlet
Cơ chế hoạt động của JSP:
Qua cơ chế hoạt động của trang JSP thì trang JSP đợc biên dịch thành Servlet phía hậu trờng, kết xuất của các trang JSP thật ra là kết xuất của Servlet Nếu nh đặt câu hỏi theo cơ chế này thì trong JSP có thể đợc thực hiện chậm hơn Servlet thuần tuý
Điều này đúng nhng chỉ là lần đầu khi trang JSP đợc biên dịch ở lần triệu gọi kế tiếp từ máy khách, trình chủ không cần dịch lại trang JSP nữa (trừ khi trang JSP đó có sự thay
đổi) Mã JSP lúc này là mã nhị phân (Byte code) đợc gọi thực thi trực tiếp Thực sự JSP
là sự cạnh tranh của Sun đối với công nghệ ASP của Microsoft, ASP không có cơ chế
(1) Gửi URL yêu cầu Trang JSP
(5) Trả về trang Web HTML
Trình duyệt Browser
Web Server
JSP Engine (bộ diễn dịch JSP) Trang JSP
Trang 7dịch ra mã nhị phân nh JSP nên xét về mặt tốc độ thì trang JSP sẽ có tốc độ thực thi nhanh hơn các trang ASP.
Với những u điểm nổi bật của JSP so với Servlet và ASP, tuy chúng ta không thể phủ nhận Servlet hay ASP đợc bởi mỗi một công nghệ đều có những thế mạnh riêng, nhng một điều có thể khẳng định đợc rằng với những u điểm của JSP thì dùng công nghệ lập trình Web bằng JSP là một điều hoàn toàn hợp lí, đó là một công cụ giúp ta xây dựng các ứng dụng Web dễ dàng, linh động và hiệu quả, mặc dù đó không phải là một công cụ có u điểm tuyệt đối
Trang 8Java tơng tự nh C/C++ đó là sự bắt đầu và kết thúc một khai báo bằng dấu ngoặc nhọn “{ }”, kết thúc một lệnh thờng là dấu “ ; ”.
2 Khai báo và tạo biến, hằng trong Java
2.1 Khai báo biến trong Java
Tơng tự nh trong C/C++, kiểu dữ liệu hoặc lớp đối tợng đợc đặt lên trớc tên biến:
- Kiểu dữ liệu Tên biến;
ta đã xem nh tạo ra một lớp đối tợng thuộc lớp String
2.3 Đặt tên hằng và biến
Việc đặt tên Hằng và Biến cần tuân theo các quy tắc sau:
Chỉ bắt đầu bằng một ký tự (Chữ ), một dấu gạch dới hay một dấu đô la ($)
Không có trong khoảng trắng giữa tên
Sau khi ký tự đầu có thể dùng các ký tự chữ, ký tự số, dấu đôla ($), dấu gạch dới
Trang 9Chú ý: Ta không thể dùng tính xếp lồng để trình bày các ghi chú Nếu trong cặp /*
và */ có dùng kí hiệu // thì ý nghĩa của // bị bỏ qua, điềungợc lại cũng đúng
Trang 10Các kiểu dữ liệu gốc là các khối dữ liệu đã đợc xác định trong nguồn dữ liệu
Và bao gồm các nhóm sau: Số nguyên, số thực, kí tự, boolean, miền biến thiên của các kiểu dữ liệu kiểu số:
Tên Khoảng biến thiên Kích thớc lu trữ
Toán tử chuẩn dành cho dữ liệu kiểu số là: +, -, *, % (modules)
*) Loại dữ liệu boolean :
Loại dữ liệu Boolean xuất xứ từ đại số học Boolean Phạm vi loại Boolean bao gồm hai giá trị True và False Các toán tử phối hợp với giá trị Boolean là toán tử so sánh và toán tử Boolean, biến boolean trong Java không đợc thể hiện là 1 hay 0 nh trong những ngôn ngữ lập trình khác
*) Loại dữ liệu kí tự:
Loại dữ liệu kí tự Char dùng để biểu thị một kí tự, giá trị kí tự đợc gõ trong dấu nháy đơn, một biến char sẽ có giá trị là một kí tự Unicode
5.2 Chuyển kiểu
Trong Java, ngời ta cho phép thực hiện việc chuyển kiểu: Chúng ta đang có biến
ở kiểu này, lại muốn sử dụng chúng ở kiểu khác
Có hai kiểu chuyển kiểu:
+) Chuyển kiểu hẹp: Cách chuyển kiểu này thờng làm mất thông tin về độ rộng cũng nh độ chính xác của biến số
+) Chuyển kiểu rộng: Cũng sẽ làm mất đi một phần tính chính xác của các biểu thức số có nghĩa cuối cùng, nhng không làm mất đi thông tin về độ rộng của giá trị Nhìn chung chuyển kiểu rộng có tính an toàn hơn Bảng dới đây cho thấy các chuyển kiểu rộng đợc dùng trong Java
Byte Short, Int, long, float, double
Trang 11Short Int, long, float, double
Char Int, long, float, double
6 Các từ khoá khoá trong Java
abstrast Dùng để thông báo một phơng thức trừu tợng, cần có
một phơng thức con không trừu tợng lấp lên Một phơng thức sẽ không có phần mã lệnh
boolean Kiểu biến logic, chỉ có hai giá trị true hoặc false
Chúng không tơng tự nh C / C++ vì trong C / C++ giá trị thật của chúng đợc giữ ở số nguyên
break Từ khoá cho phép ngắt dòng lệnh để thoát khỏi vòng
lặp
Byte Kiểu biến số, có giá trị
Case Nói lên một trờng hợp khi phải lựa chọn
Catch Sử dụng khi nhận về các kết quả lỗi
Const Thông báo cho biết biến đi kèm sau là hằng
Continue Dùng để nhảy tiếp đến một dòng lệnh lặp
Default Giá trị mặc định trong cấu trúc lựa chọn
Trang 12Float Kiểu số thực
For Dùng để thực hiện một vòng lặp xác định
Goto Nhảy đến, thực hiện một lệnh di chuyển dòng lệnh
Implements Cài đặt
Import Cho biết dùng các th viện nào
Instanceof Dùng trong kiểu định danh thời gian chạy
Interface Giao tiếp, dùng để nêu một giao thức giữa các đối tợng
Native Nguồn, gốc: dùng để chỉ việc sử dụng các ngôn ngữ
gắn với một hệ cụ thể
New Dùng để tạo một đối tợng mới
package Khối (thờng đợc dịch là đóng gói) Đó là một tập các
Static Báo cho biết biến khai báo tiếp sau là biến tĩnh
Switch Dùng trong hệ lệnh tuỳ chọn
Trang 13Muốn sử dụng mảng trong chơng trình thì ta cần khai báo mảng và loại phần tử trong mảng.
Cú pháp khai báo:
datatype[] arrayName ; Hoặc datatype arrayName[];
Do mảng Java là đối tợng nên phần khai báo không phân phối không gian bộ nhớ cho mảng Sau khi khai báo mảng, phải dùng toán tử new để tạo mảng theo cú pháp:
arrayName = New datatype[arraySize];
Khai báo và tạo mảng có thể đợc gộp thành một trong hai câu lệnh:
datatype[] arrayName = New datatype[arraySize];
datatype arrayName[] = New datatype[arraySize];
Mõi phần tử trong mảng đợc biểu diễn theo cú pháp: arrayName[index]
Không thể gán phần tử cho mảng khi mảng cha đợc tạo
7.2 Chuỗi
Khác với ngôn ngữ lập trình thông thờng Java xem chuỗi là một đối tợng Biến
đối tợng chuỗi thờng đợc khai báo từ lớp String Ta có thể gán và cộng chuỗi với nhau tơng tự chuỗi trong các ngôn ngữ lập trình khác
Dùng cú pháp sau đây để tạo chuỗi:
String newString =new String(St)
Với thành phần S là chuỗi ký tự nằm trong dấu trích dẫn kép “ “ và cũng có một cách nữa để tạo chuỗi:
String St = “ Giá Trị chuỗi”;
* So sánh chuỗi:
Để so sánh hai chuỗi ta có thể dùng:
+/ Toán tử ”= =”: Chỉ kiểm tra xem 2 chuỗi có tham chiếu đến cùng một đối tợng hay không Chứ không thông báo đợc rằng liệu nội dung hai chuỗi có trùng nhau hay không khi chúng là hai đối tợng khác nhau
+/ áp dụng phơng thức Equal() so sánh bằng giữa hai nội dung của hai đối tợng
Trang 14< 0 Nếu String < String2 Xét theo thứ tự abc
8 Các cấu trúc điều khiển
8.1 Lựa chọn
8.1.1 Câu lệnh IF:
Java có hai loại câu lệnh IF: Câu lệnh IF đơn và câu lệnh IF else Câu lệnh IF…
đơn thi hành một hành động chỉ khi điều kiện là TRUE những hành động mà câu lệnh
IF else định rõ tuỳ theo điều kiện là TRUE hay FALSE.…
+/ Câu lệnh IF đơn:
Cú pháp:
if (booleanExpression){
Statement(s);
} → Câu lệnh IF đơn chạy câu lệnh (statement) nếu boolean Expression đánh giá là đúng (true), có thể lợc bỏ dấu {} nếu chúng chỉ bao quanh một câu lệnh
else
{ Statement(s)-For –the- False –case;
Trang 15}NÕu boolean Expression lµ True, c©u lÖnh dµnh cho trêng hîp true sÏ ch¹y, ngîc l¹i c©u lÖnh dµnh cho trêng hîp false sÏ thi hµnh
Variable = true-result - expression;
else Variable = false- result – expression;
}
C©u lÖnh Switch tu©n theo nguyªn t¾c sau:
→ Switch-expression ph¶i tr¶ vÒ gi¸ trÞ thuéc lo¹i char ; Byte, short, int vµ ph¶i tu©n theo cÆp dÊu”( )”
Trang 16→ Value1 ValueN phải có chung loại dữ liệu với giá trị của Switch-expression.…Câu lệnh kết quả trong câu lệnh case chạy khi giá trị trong câu lệnh case so khớp với giá trị của Switch-expresion (Mỗi câu lệnh case thi hành nối tiếp)
→ Từ khoá break không có tính chất bắt buộc, câu lệnh break kết thúc toàn lệnh Switch Nếu câu lệnh Break không đợc dùng cho trờng hợp case thì câu lệnh case tiếp theo sẽ đợc thi hành
→ Trờng hợp (case) mặc định ,không có tính bắt buộc, dùng để thực hiện các hành
động khi không trờng hợp case nào đúng, và luôn xuất hiện cuối cùng trong khối Switch
8.2 Cấu trúc vòng lặp
Vòng lặp (loop) là cấu trúc điều khiển hoạt động lặp lại của khối câu lệnh, phần vòng lặp chứa câu lệnh đợc lặp lại gọi là nội dung vòng lặp (body loop) Sự thi hành một lần của vòng lặp gọi là sự lặp vòng (Interation of the loop) Mỗi vòng lặp chứa một điều kiện tiếp tục vòng lặp (continue-condition) là biểu thức Boolean điều khiển
sự thi hành nội dung vòng lặp Sau mỗi vòng lặp, continue-condition đợc đánh giá lại Nếu là true, nội dung vòng lặp lại tiếp tục đợc lặp lại, nếu là False thì vòng lặp kết thúc Khái niệm vòng lặp là nền tảng của lập trình, Java cung cấp 3 loại cấu trúc vòng lặp : For, While, Do
và thời điểm kết thúc vòng lặp
8.2.2 Vòng lặp While:
Nếu biết trớc số lần lặp lại là bao nhiêu lần 1 hoạt động, ta có thể áp dụng vòng lặp For để điều khiển số lần lặp lại câu lệnh, còn nh không xác định đợc số lần lặp lại,
Trang 17vòng lặp For trở nên vô ích Ta phải sử dụng vòng lặp While để giải quyết vấn đề này,
_ Continue -condition là một biểu thức boolean phải xuất hiện trong dấu ngoặc “()”
và nó luôn đợc tính giá trị trớc khi vòng lặp đợc thi hành
Đầu tiên vòng lặp Do sẽ đợc thi hành Kế đến là continue-condition đợc đánh giá Nếu kết quả là true nội dung vòng lặp sẽ đợc thi hành lại, còn nh False thì vòng lặp sẽ kết thúc Khác biệt chủ yếu giữa While và Do là trật tự đánh giá continue-condition và thi hành loop-body, hai vòng lặp này đều có năng lực ngang nhau
8.2.4 Từ khoá break và continue:
Có thể dùng hai từ khoá break và continue trong cấu trúc vòng lặp có thêm sức mạnh
- break: Từ khoá này kết thúc ngay vòng lặp trong cùng chứa nó
- continue: Từ khoá chỉ kết thúc vòng lặp hiện hành điều khiển chơng trình chuyển sang vòng lặp kế tiếp của vòng lặp
Trang 18Một phơng thức là một dãy các lệnh đợc dùng để thực hiện một công việc nào
đó Trong các ngôn ngữ khác ta thờng bắt gặp khái niệm hàm và thủ tục (cũng chính là các khối lệnh đơn vị thực hiện những chức năng riêng biệt) trong đó hàm trả về một giá trị và thủ tục là một khối lệnh khi đợc thực hiện sẽ không trả về một giá trị tơng ứng nào Vì trong Java không có một hàm nào là toàn cục mà luôn luôn phải tơng ứng với một đối tợng cụ thể, thể hiện hành vi ứng xử của đối tợng, nên trong Java ngời ta chỉ dùng khái niệm phơng thức thay thế cho hàm
Nhìn chung, phơng thức có cấu trúc nh sau:
<Bổ từ > <Kiểu dữ liệu của giá trị mà phơng thức trả về> <tên phơng thức>
Private: phơng thức này chỉ đợc truy xuất bên trong chứa nó
Public: Có thể truy xuất từ bất kì lớp bên ngoài nào
Protected: Chỉ các lớp là dẫn xuất của lớp chứa phơng thức này mới truy xuất
t-Abstract: Phơng thức đơn giản nhất, không cài đặt gì ở bên trong lớp khai báo
nó Nhng phơng thức này sẽ đợc phát triển trong các lớp là dẫn xuất của lớp hiện hành
Final: -> Phơng thức này đợc bảo vệ không cho các lớp dẫn xuất khai báo và cài
Trang 19Synchronized: -> Khi khai báo cách cập nhật này sẽ bảo đảm dữ liệu không bị sai lạc khi cùng một lúc hai phơng thức truy cập cùng một dữ liệu.
+/ Giá trị trả về: Ngoại trừ phơng thức tạo dựng (construction) mọi phơng thức đều
đòi hỏi kiểu dữ liệu trả về, nếu phơng thức không trả về giá trị nào thì nó có giá trị trả
về là void
+/ Phơng thức có thể có các danh sách tham số - tham số hình thức – trong cú pháp của phơng thức Khi gọi phơng thức, các tham số hình thức này đợc thay bằng biến hoặc dữ liệu gọi là tham số thực Tham số là thành phần không bắt buộc
+/ Gọi một phơng thức:
Làm thế nào để nhận biết một phơng thức có hiệu lực hay không? Ta phải kiểm tra bằng cách gọi phơng thức đó trong chơng trình thử nghiệm Có hai cách gọi phơng thức: Sự lựa chọn dựa trên việc phơng thức đó có trả về giá trị hay không Khi muốn một phơng thức đợc thực hiện, ta chỉ đơn giản gọi tên của phơng thức và gán các đối
số là các giá trị hay các biến có cùng kiểu với các đối số đã đợc khai báo
9.2 Lớp và đối tợng
9.2.1 Đôi điều về lớp và đối tợng
Theo cách nghĩ của lập trình hớng đối tợng thì mọi thứ đều là đối tợng và mọi
đối tợng đều là thành viên của một lớp Tổng quát hơn có thể coi những thứ vô tri vô giác là đối tợng – bàn làm việc, máy tính, tất cả đều là các đối tợng trong cuộc sống của chúng ta Một cái bàn là thành viên của một lớp bao gồm tất cả các bàn Ngời lập trình có thể nói bàn là một thực thể của lớp bàn Sự khác biệt giữa một lớp và một đối tợng có thể so sánh với sự khác biệt giữa sự trừu tợng và cái cụ thể Một đối tợng là biểu hiện của một lớp, một đối tợng là một ví dụ điển hình của một lớp Các đối tợng
kế thừa các thuộc tính của lớp Một đối tợng luôn có thuộc tính và hành vi, thuộc tính
đợc mô tả dựa trên dữ liệu và hành vi do phơng thức qui định Mọi đối tợng của cùng một lớp đều sở hữu cùng các phơng thức của lớp đó: Trong lập trình hớng đối tợng, luôn có hai công đoạn: Trớc tiên bạn phải tạo lớp các đối tợng để phát sinh các đối t-ợng và thứ hai là bạn phải viết các lớp khác để sử dụng những đối tợng này (Cũng nh
sử dụng dữ liệu và các phơng thức của những đối tợng này) Tuy vậy, một ngời lập trình không cần thực hiện cả hai việc này, thông thờng thì các chơng trình bạn viết sẽ
sử dụng các lớp bằng ngời khác viết ra và ta cũng có thể viết ra các lớp khác để ngời khác sử dụng
9.2.2 Tạo lớp
Khi tạo một lớp ta phải gán cho nó một cái tên, phải xác định kiểu dữ liệu và phơng thức nào sẽ là thành phần của lớp đó, kèm theo đó là từ khoá truy xuất Có thể
Trang 20dùng các từ khoá sau khi định nghĩa một lớp: Public, final, abstract, nếu không có từ truy xuất thì từ mặc định đợc dùng là friendly.
* ý nghĩa của các từ khoá
- Public: Tất cả mọi đối tợng đều có thể truy xuất các lớp public, đây là dạng từ truy xuất đợc dùng phổ biến nhất
- Final: Lớp không thể tạo dẫn xuất (lớp hằng)
- Abstract: Lớp trừu tợng -> đợc dùng khi ta không thể biết và định nghĩa các thành phần phơng thức của nó
Ví dụ :
Ta muốn tạo một lớp có tên là employee, ta có thể tạo nh sau:
Public class employee
Ví dụ: Ta khai báo mã số nhân viên empnum đợc lu nh một số nguyên thuộc lớp employee
Public class employee
Trang 21{
return empnum;
}
}
9.2.3 Khai báo đối tợng
Việc khai báo một lớp không tạo ra một đối tợng thực sự nào Một lớp mới chỉ
là phần mô tả trừu tợng của những gì mà một đối tợng đã có Để tạo ra một đối tợng là thực thể của một lớp, cần thực hiện hai bớc: Thứ nhất đó là cung cấp kiểu và định danh ( cũng giống nh khi khai báo một biến), sau đó là cấp phát bộ nhớ máy tính cho đối t-ợng đó
Để khai báo một đối tợng ta sử dụng cú pháp: Classname Objectname;
Ví dụ: Khai báo biến emp là một phiên bản của lớp Employee
Employee emp;
Tạo một đối tợng của một lớp thực chất là tạo một phiên bản của một lớp Đối ợng là một loại biến của một loại lớp nào đó Khai báo một đối tợng chỉ đơn giản là phối hợp đối tợng với lớp biến nó trở thành một phiên bản của lớp đó, khai báo không tạo thành một đối tợng Muốn thực sự tạo ra một đối tợng ta phải dùng toán tử new, lúc
t-đó máy tính mới cấp phát bộ nhớ cho đối tợng cú pháp nh sau:
Objectname = new className();
Ví dụ: Tạo đối tợng emp và phân phối dung lợng nhớ cho nó:
emp = new Employee();
Ta cũng có thể kết hợp khai báo và tạo phiên bản lớp với chỉ một câu lệnh:
ClassName objectname = new className();
9.2.4 Phơng thức tạo dựng Ph– ơng thức phiên bản lớp Ph– ơng thức lớp
* Phơng thức tạo dựng:
Là phơng thức đặc biệt đợc gọi khi cần tạo đối tợng Các phơng thức tạo dựng
có thể tải chồng lên nhau, dùng khi đối tợng đợc tạo cần nhận thêm một số thông tin từ ngoài vào
Trang 229.2.5 Biến phiên bản và biến lớp
Biến phiên bản là biến chỉ thuộc về phiên bản một lớp Biến này đợc sử dụng phối hợp với từng đối tợng cá thể Biến lớp là biến đợc các đối tợng cùng lớp dùng chung
9.2.6 Chuyển đối tợng đến phơng thức
Cũng nh việc có thể chuyển giá trị của biến đến phơng thức, ta cũng đợc phép chuyển đối tợng đến phơng thức ở dạng tham số thực Tuy nhiên có nhiều điểm khác biệt quan trọng giữa chuyển giá trị của biến thuộc loại dữ liệu sơ cấp nghĩa là giá trị của biến đó đợc chuyển đến tham số hình thức Thay đổi giá trị của tham số cục bộ bên trong phơng thức không làm ảnh hởng gì đến giá trị của biến nằm ngoài phơng thức chuyển đối tợng nghĩa là dữ liệu tham chiếu của đối tợng đợc chuyển đến tham số hình thức Bất kì thay đổi nào ở đối tợng cục bộ xảy ra trong nội dung phơng thức đều
ảnh hởng đến đối tợng đó đợc chuyển ở dạng đối số
10.Đón bắt lỗi ngoại lệ:
Java đa ra khái niệm lỗi ngoại lệ (exception) Ngoại lệ là lỗi phát sinh bất ngờ
mà ta không lờng trớc đợc Ta dùng khối Try catch để thực hiện đoạn mã có khả năng sinh lỗi
11.Làm việc với cơ sở dữ liệu
11.1 Các khái niệm
* Cơ sở dữ liệu:
Là một tập hợp có sắp xếp của các thông tin, dữ liệu về một vấn đề nào đó, nhằm giúp ngời dùng dể dàng tra cứu, sử dụng, cập nhật Đặc điểm chủ yếu của cơ sở dữ liệu là cách thức tổ chức, sắp xếp thông tin Có thể xem thông tin trong một văn phòng nh là một cơ sở dữ liệu: Tất cả các thông tin đều đợc sắp xếp trong các cặp hồ sơ có nhãn ghi rõ thông tin về hồ sơ, các loại hồ sơ cùng loại sẽ đợc sắp xếp vào một tập Thông tin lu trữ trong máy tính cũng thế Các dữ liệu sẽ đợc lu trữ trong các tệp hay các bảng Tập hợp các bảng có quan hệ với nhau hay liên quan đến một cùng vấn
đề sẽ tạo ra cơ sở dữ liệu về vấn đề đó
* Hệ quản trị cơ sở dữ liệu:
Là một phần quản lí của cơ sỡ dữ liệu, tổ chức chúng và quản lí việc truy cập các thông tin trong các cơ sở dữ liệu đó
11.2 Các loại cơ sở dữ liệu
Có thể chia cơ sở dữ liệu hiện hành theo ba loại chính:
Cơ sở dữ liệu phân cấp: Thông tin đợc lu trữ theo từng cấp Trên cùng là các thông tin chung rồi phân nhánh xuống dần các thông tin chi tiết hơn
Trang 23Cơ sở dữ liệu quan hệ: Loại cơ sở dữ liệu này cho phép ta truy cập dữ liệu thông qua mối quan hệ đến các dữ liệu khác Các thông tin không đợc lu trữ dới dạng cây mà tạo thành các bảng dữ liệu giống nh các bảng tính Để truy cập thông tin ta có thể dùng một ngôn ngữ đặc biệt để phát vấn đó là SQL (Structure Query Language)
Cơ sở dữ liệu đối tợng: Là loại cơ sở dữ liệu mới đợc xây dựng và ít phổ biến
Nh là một ngôn ngữ hớng đối tợng chuẩn, Java hỗ trợ cho ý tởng là các dữ liệu của một đối tợng phải gắn chặt với hành vi của đối tợng
11.3 Giới thiệu cơ sở dữ liệu quan hệ
Một tập cơ sở dữ liệu bao gồm 3 mảng chính:
Các trờng dữ liệu
Các bản ghi dữ liệu
Các bảng dữ liệu+/ Các trờng dữ liệu:
Chứa các dữ liệu nhỏ nhất, có đầy đủ ý nghĩa và có thể không cần phân chia ra nữa
có một khoá chính duy nhất Trong cơ sở dữ liệu quan hệ khi các bảng có quan hệ với nhau thì xuất hiện thêm khái niệm khoá ngoại lai: Một trờng đợc gọi là khoá ngoại lai của một bảng A nếu nó không phải là khoá chính của bảng A và liên kết với một bảng
B qua khoá chính của bảng B để xác định duy nhất một bảng ghi của bảng B
Trong cơ sở dữ liệu quan hệ, quan hệ đợc xác lập trên từng cặp bảng Những bảng này quan hệ với nhau theo một trong ba loại: một – một, một - nhiều, nhiều -nhiều
Quan hệ một – một: Hai bảng đợc gọi là quan hệ một – một nếu ứng với mọi hàng của bảng thứ nhất chỉ có nhiều nhất một hàng trong bảng thứ hai
Trang 24Quan hệ một – nhiều: Hai bảng có quan hệ một – nhiều nếu có mọi hàng của bảng thứ nhất (có thể không có) có một hay nhiều nhiều hàng trong bảng thứ hai.
Quan hệ nhiều – nhều: Hai bảng có quan hệ nhiều – nhiều khi đối với mọi hàng trong bảng thứ nhất có thể có nhiều hàng trong bảng thứ hai và ngợc lại
1 Loại trừ các nhóm lặp: tạo ra một bảng riêng đối với một tập hợp các cột tơng
tự và gán cho mỗi bảng một khoá chính, trong bảng không chứa nhóm lặp
2 Loại trừ dữ liệu d thừa: Một cơ sở dữ liệu đợc gọi là ở dạng chuẩn theo nguyên tắc này khi nó đã ở dạng chuẩn theo nguyên tắc một (chuẩn một) và mọi trờng không phải là khoá đều phụ thuộc hàm đầy đủ vào khoá chính phải đảm bảo:
Tính toàn vẹn khi sửa chữa: Không cho phép ai cập nhật dữ liệu khi ta đang Update dữ liệu
Tính toán vẹn khi xoá: Phải đảm bảo không sai sót dữ liệu khi xoá dữ liệu
3 Loại trừ các cột không phụ thuộc vào khoá chính: Khi xây dựng bảng ta nên xem xét một trờng nào đó có phải là trờng bổ sung cho khoá chính hay không nếu không thì không nên thêm vào bảng mà có lẽ nên thêm một bảng mới
4 Tách các quan hệ một – nhiều độc lập: Không thể có một bảng chứa hai hay nhiều quan hệ một – nhiều mà không có liên quan trực tiếp
5 Tách ra các quan hệ phức hợp liên quan: nên tách ra các quan hệ dữ liệu nhiều- nhiều có liên quan trong cơ sở dữ liệu Nói cách khác nếu có một số quan hệ phức tạp tồn tại trong cơ sở dữ liệu thì nên tách quan hệ này thành các bảng đơn
11.5 SQL ngôn ngữ phát vấn cấu trúc ( Structure Query Language)
11.5.1 Giới thiệu
SQL đợc IBM phát triển trong những năm 70 đến 80 của thế kỉ này Trở thành một chuẩn ANSI (Ameriacan National Standard Institude) vào năm 1986 SQL đã đợc sửa đổi nhiều để trở thành chuẩn mới SQL-92(1992)
Trang 25SQL là ngôn ngữ chuyên dùng cho việc lập trình trên cơ sở dữ liệu quan hệ Nó
có nhiều cách sử dụng và ứng với mỗi cách sử dụng nó lại mang một cái nhãn khác nhau:
Dùng để tạo hay thiết kế một cơ sở dữ liệu : Là ngôn ngữ định nghĩa dữ liệu.Dùng để cập nhật thông tin trong cơ sở dữ liệu : Là ngôn ngữ bảo trì dữ liệu.Dùng để truy cập các thông tin từ cơ sở dữ liệu : Ngôn ngữ truy vấn
CREATE DATABASE MyDBCREATE TABLE
tablename (field 01
definetion, field 01
definetion, )
Với fieldxx definetion::::
Field name fieldtype
Tạo bảng tên là tablename
có các trờng field 01,field 02, , đơc, định nghĩa theo cú pháp bên dơí
CREATE MatHang( Maloai int
Tenloai varchar(50)
Anh varchar(50))
ALTER TABLE
tablename ADD (field xx
difinition)
Thêm một hay nhiều cột vào bảng đã có
ALTER TABLE MatHang
(gioithieu varchar(200))
DROP TABLE tablename Xoá bỏ một bảng trong cơ
sở dữ liệu
DROP TABLE MatHang
* Sử dụng SQL nh ngôn ngữ bảo trì dữ liệu:
các giá trị từng phần values sẽ
tự động gán vào cho các trờng theo đúng thứ tự tơng ứng một – một
Insert Into MatHang( Maloai, Tenloai,Anh)value(‘1’,’Maybo’,’c:\dt\My111\Mb.Jpg)
Trang 26Delete from tablename
[where condition]
Xoá các bản ghi của một bảng Điệu kiện Where sẽ xác
định record cần xoá nếu không
có Where thì tất cả các bản ghi
* Sử dụng SQL nh ngôn ngữ truy vấn:
điềukiện Where đợc nhóm theo điềukiện group và
điềukiện bổ sung having
Select Maloai, Tenloai From MatHang
Where Maloai=’10’;
Ngoài ra trong SQL còn có kết nối tức là kết hợp một hay nhiều bảng thành một bảng duy nhất
11.6 JDBC và trình điều khiển truy xuất cơ sở dữ liệu
11.6.1 Giới thiệu
JDBC = Java Database Conectivity API
Nh tên gọi JDBC là một phần của các hàm Java API, JDBC chứa một tập hợp các đối tợng và phơng thức của CSDL quan hệ để giao tiếp với các nguồn dữ liệu SOL
* Cơ chế hoạt động của JDBC:
Chơng trình Java tạo một đối tợng kết nối để thực hiện việc kết nối với CSDL, tạo một đối tợng statement (câu lệnh) và chuyển các câu lệnh SQL này đến CSDL thông qua đối tợng này và nhận biết các kết quả (có thể là các thông tin hay tập các record) và để giảm bớt thời gian trễ, các tập tin JDBC class thờng đợc nạp sẵn lên máy
Trang 27Các lớp JDBC nằm trong khối Java.sql và mọi chơng trình Java đều dùng các
đối tợng và phơng thức trong khối Java.sql để đọc và viết lên nguồn dữ liệu Một
ch-ơng trình Java dùng JDBC cần một trình điều khiển cho nguồn dữ liệu mà nó giao tiếp
11.6.2 Các kiểu trình điều khiển JDBC
Theo đặc tả của Sun có bốn kiểu JDBC phụ thuộc vào cách thức các hoạt động
và các kết nối với CSDL
+ Kiểu một
JDBC sử dụng cầu nối ODBC, ODBC là cách kết nối tổng quát nhất đến mọi hệ CSDL thông qua trình quản lí ODBC của Windows Bởi mỗi hệ CSDL sẽ cung cấp một trình điều khiển có khả năng đọc hiểu đợc các 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 câu lệnh truy xuất CSDL sau đó đợc thực thi bằng lệnh SQL Java cung cấp khả năng sử dụng JDBC để gọi ODBC
Quan hệ cầu nối JDBC-ODBC theo kiểu một nh sau:
Sun cung cấp sẵn th viện kết nối JDBC-ODBC kèm theo JDK và ta có thể sử dụng miễn phí
+ Kiểu hai
JDBC kết nối trực tiếp với các trình điều khiển CSDL Trình điều khiển này có tên là Native-API, đây là trình điều khiển thuần Java Trình điều khiển Native-API biến đổi lệnh JDBC thành cuộc gọi trực tiếp đến CSDL, tức là giao tiếp trực tiếp với trình điều khiển của hệ CSDL mà không cần phải qua trung gian ODBC của Windows nữa Tuy nhiên không phải CSDL nào cũng cung cấp cho ta cách giao tiếp thông qua JDBC API trực tiếp, và trình điều khiển này không có sẵn trong bộ JDK mà phải mua
từ nhà cung cấp thứ ba
Sơ đồ quan hệ cầu nối của kiểu hai:
Java Application, Applet,Servlet
JDBC drive ODBC
Data drive
Mã Java
Mã đặc thù
Cơ sở dữ liệu (Access, SQL server,Oracle, )
Trang 28+ Kiểu ba
JDBC kết nối thông qua các ứng dụng mạng trung gian (JDBC-Net, PureJava)
Đây là trình điều khiển dành cho mô hình dữ liệu đa tầng 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ẽ chịu trách nhiệm kết nối với CSDL Nhiệm vụ của trình khách là sử dụng các 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
Sơ đồ quan hệ cầu nối của kiểu ba:
SV: Lê Thị Cẩm Mỹ - 41 A Công Nghệ Thông Tin Trang 28
Java Application, Applet,Servlet
JDBC drive
Database drive
Mã Java
Mã đặc thù
Cơ sở dữ liệu (Access, SQL server,Oracle )
Java Application, Applet, Servlet JDBC drive Mã Java
Java Middle-Ware Java Native Mã Java
Interne t
Cơ sở dữ liệu (Access, SQL
Trang 29+ Kiểu bốn
JDBC kết nối thông qua các trình điều khiển đặc thù ở xa (Native-Protocol, pure Java) Mô hình kết nối ở kiểu ba phải qua ứng dụng trung gian (Middle-ware) Đối với trình điều khiển kiểu bốn này, Java đa ra kết nối kiểu bốn cho phép trình khách sử dụng các trình điều khiển gọn nhẹ nối trực tiếp vào trình điều khiển dữ liệu đặc thù (thuần) trên máy chủ ở xa thông qua Internet
SV: Lê Thị Cẩm Mỹ - 41 A Công Nghệ Thông Tin Trang 29
Java Application, Applet,Servlet
JDBC driveMã Java
Java Native driveMã Java
Internet
Trang 30Sơ đồ quan hệ cầu nối kiểu bốn
11.7 Nối kết với cơ sở dữ liệu qua khối Java.SQL
JDBC đợc cài đặt thông qua khối java.sql Khối này chứa tất cả các lớp và
ph-ơng thức của JDBC và đợc phân làm hai phần: Phần cơ sở đợc cài đặt kèm JDK ( khối java.sql), phần mở rộng (Standard Extention) sẽ đợc cài đặt riêng nh một khối tuỳ chọn (khối javax.sql)
Khối JAVA.SQL
Tóm tắt các giao tiếp
CallableStatement Giao tiếp dùng thực hiện các hàm cài đặt sẵn trong
CSDL( stored procedures)
Connection Một chầu kết nối với một CSDL cụ thể
DatabaseMetaData Thông tin tổng hợp về CSDL
Driver Giao tiếp mà mỗi trình điều khiển phải cài đặt
PreparedStatement Đối tợng biễu diễn các câu lệnh SQL đợc biên dịch
trớc
Ref trúc.Một tham khảo đến giá trị của một dữ liệu có cấu
Trang 31ResultSet bảng trong CSDL.Một tập hợp các Record cho phép truy xuất đến các ResultSetMetaData thuộc tính của các cột trong ResultSet.Là một loại đối tợng đợc dùng để xác định kiểu và SQLData dùng.Giao tiếp dùng cho việc ánh xạ kiểu dữ liệu ngời SQLinput kiểu dữ liệu cấu trúc hay phân biệt.Luồng dữ liệu nhập chứa các giá trị biểu diễn các SQLOutput thuộc tính của các kiểu dữ liệu ngời dùng Luồng dữ liệu xuất cho việc ghi xuống CSDL các Statement và nhận về kết quả.Đối tợng đợc dùng để thực hiện các câu lệnh SQL
Tóm tắt các lớp
DriverManager Dịch vụ cơ bản quản lí tập các trình điều khiển
JDBC
DriverProoertyInfo Các thuộc tính của trình điều khiển để thực hịên kết
nối
Timestamp Lớp biễu diễn các giá trị SQL TIMESTAMP
Types Lớp định nghĩa các hằng cho phép định danh các
kiểu dữ liệu SQL, còn gọi là kiểu dữ liệu JDBC
Tóm tắt các ngoại lệ
BathUpdateException Ngoại lệ đợc trả về nếu có lỗi khi thực hiện các tập
tin lệnh dạng lô
DataTruncation Ngoại lệ đợc trả về khi có một nhắc nhở về việc cắt
bớt dữ liệu khi đọc và khi ghi
SQLException Ngoại lệ cung cấp các thông tin về các lỗi phạm
phải khi truy cập CSDLSQLWarning nhận đợc khi truy cập CSDL.Ngoại lệ cung cấp các thông tin về các nhắc nhở
* Khối javax.sql:
Trang 32Tóm tắt các giao tiếp
ConnectionEventListener Giao tiếp này dùng cho các thành phần kết
nối chia sẻ
ConnectionPoolDataSouce PooledConnection.Là nguồn tạo ra các đối tợng
PooledConnection kết nối cho việc quản lí các kết nối chia sẻ Là một đối tợng kết nối cung cấp các điểm
XAConnection Là đối tợng cung cấp các hỗ trợ cho các
RowSetEvent Nhận ra sự thay đổi của dữ liệu
RowSetMetaDataImpl Cung cấp các cài đặt mặc định cho giao tiếp
RowSetMetaData
RowSetReaderImpl Chứa các cài đặt mẫu cho giao tiếp RowSetReader
Trang 33RowSetWriterImpl Chứa các cài đặt mẫu cho giao tiếp RowSetWriter
11.8 Truy xuất cơ sở dữ liệu thông qua JDBC ODBC–
Để có thể truy xuất cơ sở dữ liệu JDBC – ODBC thì trớc tiên ta phải cài đặt một hệ quản trị CSDL có trình điều khiển ODBC cài đặt sẵn nh ORACLE, SQL server,
MS Access Tiếp theo ta phải thiết kế cơ sở dữ liệu: Tạo bảng, khoá trên hệ quản trị…cơ sở dữ liệu trên Bớc kế tiếp là ta phải khai báo thành phần ODBC trong Windows.Bớc thiết lập kết nối:
Trải qua hai giai đoạn:
Giai đoạn một → Nạp trình điều khiển: Cấu trúc lệnh:
Class.forname(“Mydriver.Classname”) Với Mydriver là tên trình điều khiển, Classname là tên của Class tơng ứng Đối với cầu nối JDBC-OBDC thì câu lệnh nạp JDBC driver là:
Class.forname(“sun.jbbc.odbc.JdbcOdbcDriver”);
Giai đoạn hai → Để tạo kết nối với cơ sở dữ liệu, ta phải tạo một đối tợng connection (có tên tuỳ ý do ngời lập trình đặt) bằng phơng thức getConnection() của lớp Driver_ Manager nh sau: { ở đây tên đối tợng kết nối đặt là conn}
Connection conn=DriverManager.getConnection(url,“myloginname”,
mypassword”);
- Với url: Là một chuỗi nêu lên đặc điểm của cơ sở dữ liệu có dạng
jdbc:subprotocol:subname+ subprotocol là giao thức tơng ứng với loại cơ sở dữ liệu
+ subname là tên của cơ sở dữ liệu (DataSource)
- “myloginname”: Tên ngời dùng khi đăng nhập vào cơ sở dữ liệu
- “mypassword”: Mật khẩu ngời dùng khi đăng nhập cơ sở dữ liệu
- Đối với kiểu kết nối sử dụng JDBC – ODBC thì chuỗi jdbc: subprotocol là
Trang 34Phơng thức getConnection() sẽ trả về một kết nối đến với cơ sở dữ liệu từ DriverManager Sau đó, ta tạo ra các đối tợng Statement của jdbc, đối tợng này chịu trách nhiệm thực thi các phát biểu của SQL đến cơ sở dữ liệu HangHoa, hoặc ta có thể tạo ra một đối tợng cùng tính chất preparedStatement hay CallableStatement
Tạo một đối tợng Statement từ kết conn mà ta đã tạo ở ví dụ trên:
Statement stmt = conn.createStatement();
Hoặc là:
CallableStatement callstmt = conn.prepareCall();
PrepareStatement prepstmt = conn.prepareStatement();
Khi đối tợng Statement đã đợc tạo, để thi hành các câu lệnh SQL ta có thể gán trực tiếp câu lệnh SQL cho đối tợng Statement hoặc gán câu lệnh SQL đó thông qua một biến số kiểu String Và sau đó sử dụng các phơng thức executeUpdate(), executeQuery();
Khi sử dụng hai phơng thức executeUpdate() và executeQuery() ta cần lu ý:
+ executeUpdate(): Dùng cho việc định nghĩa dữ liệu cho cơ sở dữ liệu tức là tạo bảng mới hay cập nhật dữ liệu, sửa chữa thêm bớt cho bảng
+ executeQuery(): Thờng dùng để truy vấn dữ liệu, cho ta tập các dữ liệu thoả mãn yêu cầu nh thực hiện các câu lệnh Select
Ví dụ: - Ta có bảng Mathang với cấu trúc sau:
Mathang(Maloai int(4),Tenmathang varchar(50))
Để thêm một bảng ghi mới vào bảng Mathang
stmt.executeQuery(“Select * From Mathang”);
- Phơng thức ExecuteQuery() trả về một đối tợng ResultSet chứa kết quả câu truy vấn Nh thế với câu lệnh Insert/Update/Delete sau khi thực hiện không trả về kết quả resultSet mà trên thực tế các câu lệnh chỉ làm thay đổi trong bảng dữ liệu và ta nên sử dụng phơng thức executeUpdate() Còn đối với câu lệnh truy vấn dữ liệu Select, nếu truy vấn thành công thì kết quả trả về là một tập hợp các bản ghi ta truy vấn đợc, thì
Trang 35nh thế ta phải sử dụng phơng thức ExecuteQuery() để chứa kết quả truy vấn Để có thể lấy các giá trị đó ra từ đối tợng resultSet ta thực hiện gọi phơng thức resultSet.next()
- Phơng thức này trả về giá trị boolean cho biết mẫu tin kế tiếp lấy ra là hợp lệ Nếu giá trị trả về là True thì ta có thể truy cập mẫu tin bằng cách dùng phơng thức get của
đối tợng resultSet Muốn lấy giá trị của một trờng và đổi thành chuỗi ta dùng phơng thức getString(), getString() trả về giá trị là chuỗi Java.lang.String Ngoài ra ta còn có thể gọi getInt() trả về giá trị số nguyên, getBoolean() trả về giá trị boolean, có thể thực hiện lấy mẫu tin cho đến khi resultset.next() trả về giá trị Fasle, tại thời điểm này đối t-ợng resultSet đã đi đến cuối tệp
Ví dụ: Dùng đối tợng resultSet để nhận biết kết quả trong câu truy vấn Select
ở ví dụ trên ta viết lệnh:
ResultSet rs=stmt.ExecuteQuery(“select * from MatHang”);
While (rs.next())
{
String fldten = rs.getString(“tenmathang”);
int maloai = rs.getInt(“Maloai”);
}
- Với mỗi loại dữ liệu, jdbc cung cấp cho ta một phơng thức nhận giá trị tơng ứng
có dạng GetXXX(< Tên Field>/< chỉ số field>);
Ví dụ: Để nhận một gía trị string ta có rs.getstring(“tenmathang“)
Hoặc ta có thể dùng chỉ số của từng trờng trong resultSet để thay thế
Ta có thể liệt kê các phơng thức getXXX() để nhận giá trị thông qua jdbc
* Định vị trong ResultSet:
- Tuỳ theo phiên bản của jdbc mà còn thêm lệnh tạo Statement có các tham số
đặc biệt nh sau:
Statement Stmt=conn.createStatement(ResultSetType,ConcurrencyType);Trong đó:
ResultSetType: Cho biết resultSet nhận đợc có cuộn đợc hay không
ConcurrencyType: Cho biết tính chất của resultSet nhận đợc là có thể cập nhật thì ta
có thể có các resultSet chỉ đọc đợc các lệnh SQL, thao tác dữ liệu trên các resultSet sẽ không đợc thực hiện
Bảng kê chi tiết các giá trị hàng cho concurrency và resultset:
Kiểu concurrency:
Trang 36Concur_Read_Only Xác định resultset không cập nhật đợc.
Concur_Updatable Xác định resultSet là cập nhật đợc
Kiểu ResultSet
Ví dụ: Để tạo resultSet cuộn đợc (duyệt các record theo hai chiều đồng thời):
// Tạo đối tợng statement có tham số:
Statement Stmt=con.CreateStatement(ResultSet.Type_Scroll_Sensitive ,
ResultSet.concur_Read_Only);
// Kết quả nhận đợc là một ResultSet cuộn đợc;
ResultSet rs = Stmt.ExecuQuery(“Select * FromMaHang”);
Đối với Resultset cuộn đợc ta có phơng thức:
.next: Di chuyển vị trí hiện hành sang record kế tiếp theo chiều từ BOF EOF (đầu đến cuối)
.previous: Di chuyển từ vị trí hiện hành sang record kế tiếp theo chiều từ cuối
đến đầu tệp
.absolute(number): Di chuyển sang record có số thứ tự trong tệp tin là number Nếu number > 0 ⇒ Số thứ tự này đợc tính bắt đầu từ First (đầu) và ngợc lại
.relative(number): Di chuyển sang các record có vị trí tơng đối là number so với
vị trí hiện hành, giá trị của number cũng giống trên
12.Khái niệm về JavaBeans
JavaBean là một thành phần đối tợng xây dựng từ ngôn ngữ Java JavaBean có thể làm việc và chạy trên máy ảo Java Không có một bí ẩn nào trong việc tạo ra một lớp đối tợng JavaBean Ta xây dựng lớp đối tợng JavaBean bằng cách cài đặt giao tiếp Java.io Serializable của Java
Cấu trúc của một đối tợng Bean nh sau:
Public class MyBean implements java.io.Serializable
Type_Forward_only Result nhận đợc chỉ có thể duyệt từ
Bof(đầu)Eof(cuối)
Type_Scroll_Insensitive Duyệt đợc cả hai chiều nhng không cảm nhận đợc
sự thay đổi số liệu trong resultSet
Type_Scroll_Sensitive Duyệt đợc cả hai chiều và có thể cảm nhận đợc sự
thay đổi số liệu trong resultSet
Trang 37// khai báo phơng thức đặt giá trị cho thuộc tính myvalue
public void setMyValue(int newValue)
{
theValue=newValue;
}
// Khai báo phơng thức trả về giá trị của thuộc tính myvalue
public int get MyValue()
{
return theValue;
}
}
Chúng ta sử dụng Bean bằng cách gọi các thuộc tính và phơng thức của nó
Nh thế JavaBeans là những đoạn mã xây dựng sẵn và có thể dùng lại đợc Những thành phần JavaBeans có thể đợc “nhúng” vào trong một ứng dụng khác, liên kết với các thành phần khác hay đợc dùng để kết nối với các ứng dụng
+) Thuộc tính của thành phần JavaBeans:
Thuộc tính biểu hiện những trạng thái (state) mà một thành phần JavaBeans có thể có Ngời dùng đa số tơng tác với JavaBeans thông qua các thuộc tính của nó Bằng cách thay đổi các thuộc tính các nhà phát triển ứng dụng sẽ đem đến cho đối tợng thành phần một diện mạo mới
+) Các phơng thức truy xuất :
Thuộc tính thật ra chỉ là những biến nằm trong một lớp, tuy nhiên những biến này không nên sử dụng trực tiếp mà nên thông qua các phơng thức để truy xuất chúng Thông thờng biến đợc dùng vào hai mục đích, đó là gán dữ liệu vào và lấy dữ liệu ra
để tính toán Java xây dựng hai loại phơng thức để dáp ứng cho nhu cầu truy xuất biến
đó là các phơng thức getter mang ý nghĩa đọc dữ liệu từ biến và các phơng thức setter mang ý nghĩa gán dữ liệu cho biến
II Internet, World wide web và HTML
1 Các khái niệm
Trang 38Để tổ chức đợc một hệ thống làm việc phân tán nhng lại cùng chia sẻ dữ liệu thì
điều đầu tiên phải đề cập đến là mạng Intennet là một mạng máy tính toàn cầu mà bất
kỳ ai cũng có thể kết nối bằng máy tính PC của họ Đó là một liên mạng nối những mạng đợc điều hành và làm chủ một cách riêng lẻ lại cùng nhau Vào Internet, ta có thể tìm thấy rất nhiều tài liệu để nghiên cứu, học tập, trao đổi th từ, tán gẫu cùng bạn
bè, xem phim, nghe nhạc, xem quảng cáo, đọc báo, đặt hàng mua bán rất rất nhiều
điều lý thú, bất ngờ mà ta có thể làm đợc với Internet
Mỗi máy tính trên Internet đợc gọi là một host Mỗi host khả năng nh nhau về truyền thông tới mạng khác trên Internet Một số host đợc nối tới mạng bằng đờng nối dial-up (quay số) hoặc bằng con đờng khác (bằng đờng nối mạng thực sự ethernet, token ring )
Các máy tính trên mạng đợc chia thành hai nhóm client- server:
- Client là các máy khách trên mạng, chứa các chơng trình client ( chơng trình máy khách ) Đó là nhng chơng trình ngời ta dùng thân thiện chạy trên máy khách, truy cập thông tin hay dịch vụ từ những chơng trình khác trên Internet Ví dụ nh trình Internet Explorer, Netscape, Opera, Hot Sun
- Server : là chơng trình máy phục vụ trên máy chủ cung cấp thông tin hay dịch vụ
đợc yêu cầu cho chơng trình client trên Internet Chơng trình server tập trung hoá quá trình và thông tin để chơng trình client xử lý
Các dịch vụ thờng dùng trên Internet là: World wide web, Electronic Mail (Email); Ftp (File Transfer Protocol)
* World Wide Web ( WWW) gọi tắt là Web, dịch vụ phổ biến hiện nay trên Internet Để sử dụng dịch vụ này, các máy client cần có chơng trình duyệt gọi là Web browser Thông qua Internet các trình duyệt (browser) truy cập đợc thông tin Web server
* Dịch vụ Electronic (Email) là dịch vụ cho phép tất cả các cá nhân trao đổi th từ với nhau qua Internet Địa chỉ Email có dạng :
mailbox@mailserver.subdomain.domain
Ví dụ: ttcom@hcm.vnn.vn, ttcom@yahoo.com
* Dịch vụ FTP : (File transper protocol) là dịch vụ truyền hay nhận tập tin từ Internet Tên các FTP server thờng có dạng: ftp.domainname Giao thức truyền tập trên Internet là ftp://ftp.domainname Ví dụ ftp://ftp.vnn.vn
Để truyền thông tin với những máy tính khác, mọi máy tính trên Internet phải
hỗ trợ giao thức chung đó là giao thức TCP/IP (transmission control protocol/Internet protocol) ( giao thức điều khiển truyền dữ liệu và giao thức Internet) Đây là giao thức không đồng bộ cho phép truyền thông điệp từ nguồn đến nhiều đích khác nhau Ví dụ,
có thể vừa lấy th từ hộp th, đồng thời cập nhập trang web TCP đảm bảo tính an toàn
Trang 39dữ liệu nghĩa là đảm bảo dữ liệu tới đích mà không có lỗi Dữ liệu truyền đi đợc chia thành những đoạn nhỏ hơn và đợc đánh số, khi đến đích, TCP phải lắp ghép các phân
đoạn để có dữ liệu nguyên mẫu
IP là giao thức chi phối phơng thức vận chuyển dữ liệu trên Internet Sau khi TCP cắt dữ liệu thành các đoạn, nó đóng mỗi đoạn thành một gói, gọi là IP datagram (bó dữ liệu) Một IP datagram, ngoài phần dữ liệu còn đợc gán thêm một địa chỉ nguồn
và đích sau đó đợc gửi đi Để thực hiện trao đổi thông tin qua mạng, mỗi máy tính trên mạng Internet đều đợc định danh để phân biệt với máy khác thông qua địa chỉ IP Mỗi
IP gồm 4 số hệ thập phân có giá trị từ 0 -255, phân cách nhau bằng dấu chấm
Do IP là những con số không có tính gợi nhớ nên ngời ta thờng sử dụng một dịch vụ định tên (Domain Name Service) cho máy tính Internet Mỗi máy tính nh thế
có thể đợc gán một hoặc nhiều tên khác nhau Dạng của Domain Name là host.subdomain.domain
Trong đó host là tên máy chủ, subdomain là một tổ chức mạng nhỏ hơn trong domain, domain là tổ chức mạng lớn (Các quốc gia, khu vực, công ty đa quốc gia)
Ví dụ: fpt.vnn.vn; home.vnn.vn
URL (Uniform Resource Locator): Để truy xuất một dịch vụ thông tin của server, ngời ta cần phải xác nhận định loại, địa chỉ, cổng của các loại dịch vụ đó (do có nhiều dịch vụ trên Internet cùng dùng chung Internet Protocol nên ngời ta đã thêm vào khái niệm cổng (port) Mỗi loại dịch vụ sẽ sử dụng một cổng khác nhau đánh số từ 0 -> 65535 để truy xuất thông tin)
Dạng tổng quát:
method:// hotname.domainname:port
method: loại dịch vụ đợc sử dụng (http, mailto, ftp, file, telnet, new, gopher )
với http: Hyper text transfer protocol : Giao thức truyền siêu văn bản
ftp: file Transfer protocol: Giao thức truyền/nhập tập tin trên Internet file: Truy xuất tập tin trên đĩa cục bộ
port : chỉ định cổng để truy xuất server, thông thờng các cổng đợc truy xuất theo tiêu chuẩn định sẵn không cần ghi ”:port “ trong địa chỉ URL
2 World wide web
Word wide web gọi tắt là web là dịch vụ phổ biến hiện nay trên Internet, cho phép ta truy xuất thông tin văn bản hiện hành, âm thanh, vi deo, trên toàn thế giới Thông tin trên Internet hiện nay đợc thể hiện chủ yếu qua hàng triệu triệu trang web
Ngày nay số web Site trên thế giới đã đạt tới con số khổng lồ Thông qua web Site, các công ty có thể giảm tối đa chi phí in ấn và phân phát tài liệu quảng cáo cho khách hàng, đại lý ở mọi nơi trên thế giới
Trang 40Để sử dụng dịch vụ world wide web, client còn có các trình duyệt web gọi là Web browse kết nối vào Internet Trong một ứng dụng web trình duyệt web đợc dùng
để hiển thị nội dung các trang ngoài ra nó còn hiển thị đợc kết quả lấy từ cơ sở dữ liệu
Web server : Là ứng dụng cài đặt trên mạng Internet hay mạng, cho phép nhiều ngời dùng có thể truy xuất cùng một lúc đến một cơ sở dữ liệu gọi là ứng dụng dạng client/Server Khi đó, hệ thống ứng dụng đó phải có chơng trình client xử lý một số tác
vụ và chơng trình ở server xử lý một số tác vụ khác
Web là ứng dụng Client/Server Trong đó web Server đóng vai trò xử lý các nhiệm vụ xác định nh tìm trang thích hợp, xử lí hợp dữ liệu, kiểm tra dữ liệu hợp lý, sắp xếp dữ liệu trả kết quả về client, bảo đảm an toàn dữ liệu, quản lý giao dịch, web server cũng là nơi lu trữ cơ sở dữ liệu
từ một trang, một tập tin văn bản bình thờng có phần mở rộng là htm hoặc html Bên trong tập tin ta gặp toàn bộ văn bản và tiêu đề của trang cùng với các thẻ (tag) định dạng dữ liệu Các thẻ này báo cho tính duyệt biết ý nghĩa cách định dạng của từng đối tợng (Một đề mục, một đoạn, một nối kết, tên tập tin và vị trí của mọi hình ảnh, các
địa chỉ ) để từ đó trình duyệt biết cách hiển thị đối tợng trên màn hình Quan trọng hơn các thẻ HTML có thể liên kết một từ hoặc cụm từ với các tài liệu khác trên Internet Đa số các thẻ (html có dạng đóng và mở, dữ liệu bị tác động sẽ nằm giữa hai thẻ mở và đóng, tên thẻ là dấu hiệu để nhận biết định dạng