Bài giảng Lập trình mạng - Chương 5: Lập trình với hệ thống web
1. Giới thiệu hệ thống web
Web server: chương trình quản lý một cây thứ bậc các trang Web và phục
vụ yêu cầu truy xuất chúng từ các client từ xa.
Web Browser: chương trình giao tiếp với người dùng, nhận yêu cầu từ
user rồi truy xuất trang Web ở server tương ứng để phân giải và hiển thị nội
dung lên màn hình.
Trang Web: đơn vị gởi nhận giữa Web server và Web client, nó là 1 file văn
bản được viết bằng ngôn ngữ HTML
Web browser và web server sẽ tạo 1 cầu nối TCP để trao đổi thông tin,
server lắng nghe ở port 80 (port mặc định) và dùng giao thức HTTP
(HyperText Transfer Protocol).
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Lập trình mạng - Chương 5: Lập trình với hệ thống web", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Lập trình mạng - Chương 5: Lập trình với hệ thống web
Chương 5: Lậptrìnhvớihệ thống web - Lập trình web phía client - Lập trình web phía server Chương 5 1. Giớithiệuhệ thống web Mô hình hoạt động của hệ thống web: web browser/ web server Chương 5 1. Giớithiệuhệ thống web Web server: chương trình quảnlýmộtcâythứ bậc các trang Web và phục vụ yêu cầutruyxuất chúng từ các client từ xa. Web Browser: chương trình giao tiếpvớingười dùng, nhậnyêucầutừ user rồitruyxuất trang Web ở server tương ứng để phân giảivàhiểnthị nội dung lên màn hình. Trang Web: đơnvị gởinhậngiữa Web server và Web client, nó là 1 file văn bản đượcviếtbằng ngôn ngữ HTML Web browser và web server sẽ tạo1 cầunốiTCP để trao đổi thông tin, server lắng nghe ở port 80 (port mặc định) và dùng giao thứcHTTP (HyperText Transfer Protocol). Chương 5 1. Giớithiệuhệ thống web Cấu trúc một giao dịch HTTP 1.0 Bước 1: HTTP client mở kếtnối đến HTTP server Bước 2: HTTP client gửi request message đến HTTP server Bước 3: HTTP server trả response mesage về cho HTTP client, chứa resource mà HTTP client yêu cầu Bước 4: HTTP server đóng kếtnối Ví dụ Client: GET /path/file.html HTTP/1.0 From: someuser@jmarshall.com User-Agent: HTTPTool/1.0 [blank line here] Server: HTTP/1.0 200 OK Date: Fri, 31 Dec 1999 23:59:59 GMT Content-Type: text/html Content-Length: 1354 [blank line here] Chương 5 1. Giớithiệuhệ thống web Các đặc điểmcủa ứng dụng web –Khôngphảilàmột ứng dụng độclập, là ứng dụng chạytrênnềnweb- server. –Ngườilậptrìnhcóthể thựchiện các thao tác trên ứng dụng web như với một ứng dụng độclập. –Cóthể lấy thông tin từ user. Chương 5 1. Giớithiệuhệ thống web HTML – HyperText Markup Language 9Là một ngôn ngữđánh dấusiêuvănbản. 9Sử dụng các thẻ (tag) để định dạng: vănbản, đoạnvăn, hình ảnh, file âm thanh, Java applet, đốitượng như file Word, Excel, JavaBean 9Chophépchèncácđoạn mã script như JavaScript thựcthitại trình duyệt (browser). 9Là định dạng chuẩn cho trang web. –Mở rộng: XML, WSDL/SOAP Chương 5 1. Giớithiệuhệ thống web CÁC CÔNG CỤ TẠO TRANG WEB Microsoft Visual InterDev 6 – HTML, ASP Microsoft Visual Studio.NET 2003 – HTML, ASP.NET, ASP.NET Webservice, C#, C++ Microsoft Frontpage –HTML Jbuilder – HTML, JSP, Java Servlet, Java EJB Macromedia Dreamweawer MX 2004 – HTML, ASP, JSP, ASP.NET EditPlus Notepad/Wordpad/Unix VIM Chương 5 2. Ngôn ngữ HTML FORMs –Cấutrúccơ bảncủamộtform []+ –Cácloại (type) INPUT TEXT: là textbox dùng để nhậpdữ liệu. – Cú pháp: <INPUT [TYPE=TEXT] NAME="text-id" [SIZE=nn] [MAXLENGTH=nn] [VALUE="default text"]> Chương 5 2. Ngôn ngữ HTML FORMs Các loại (type) INPUT SUBMIT: truyềndữ liệu form đến ứng dụng web – Cú pháp: <INPUT TYPE=SUBMIT [NAME="button-id"] [VALUE="text"]> RESET:đưanội dung của form trở về giá trị ban đầu – Cú pháp: BUTTON: nút nhấnbấtkỳ – Cú pháp: <INPUT TYPE=BUTTON [NAME="button-id"] [VALUE="text"]> Chương 5 2. Ngôn ngữ HTML FORMs Các loại (type) INPUT RATIO: chọnlựamột trong nhiều – Cú pháp: <INPUT TYPE=RADIO NAME="radio-set-id" VALUE="choice-id" [checked]> Option 1 Option 2 Option 3 CHECKBOX: lựachọnmộthoặc nhiều – Cú pháp: <INPUT TYPE=CHECKBOX NAME="id" VALUE="choice-id" [CHECKED]> –Vídụ: Check 1 Check 2 Chương 5 2. Ngôn ngữ HTML FORMs Các loại (type) INPUT HIDDEN: dữ liệu không hiểnthị – Cú pháp: <INPUT TYPE=HIDDEN NAME="id" VALUE="data"> –Nhập vùng vănbản: TEXTAREA default text –Lựachọn listbox: SELECT [text ]+ Mạng máy tính Lập trìnhmạng Chương 5 2. Ngôn ngữ HTML FORMs Các loại (type) INPUT HIDDEN: dữ liệu không hiểnthị – Cú pháp: <INPUT TYPE=HIDDEN NAME="id" VALUE="data"> –Nhập vùng vănbản: TEXTAREA default text –Lựachọn listbox: SELECT [text ]+ Mạng máy tính Lập trìnhmạng Chương 5 3. Lập trình web phía client Các trang HTML có thể đượclậptrìnhđể thựchiện các thao tác thựcthi trên web client. Các phương pháp phổ biến để lập trình hiện nay: – Script (Javascript, Vbscript) – Java Applet – ActiveX Control Chương 5 3. Lập trình web phía client Cú pháp cho một đoạn code Javascript //các khai báo biến [var variable;]* //các lệnh gọi hàm và các hàm function function-name([agrv]*){ //các câu lệnh khai báo và thựcthi [return [value];] } Sử dụng file Javascript (*.js) đãcó Chương 5 3. Lập trình web phía client Các đối tượng được xây dựng sẵn trong JavaScript – window: chứa các thuộc tính liên quan đếncửasổ hiệnthời – document: chứa các thuộctínhtrongtrangweb – location: các thuộctínhvề địachỉ trang web – history: các thuộctínhvề vị trí mà web browser đã đến Mỗiphầntử trong trang HTML đềucóthể coi là một đốitượng, có thể khai báo sự kiện để gọi hàm Javascript. –Cúpháp <tags-name [properties]* [event-name=“procedure call” ]*> Chương 5 3. Lập trình web phía client –Cácsự kiệncóthể dùng onClick: click chuột vào đốitượng. onFocus: focus vào đốitượng trong form. onMouseOver: di chuyểnchuột vào trên đốitượng. onMouseOut: di chuyểnchuộtrakhỏi đốitượng. onChange: thay đổigiátrị của các đốitượng chứavănbản. onBlur: chuyển focus khỏi đốitượng trong form. onSelect: chọnphầntử trong listbox. onLoad: xảyrakhimột document được load. Chương 5 3. Lập trình web phía client Kiểmtraphầntử SELECT var select_value; function dropDownMenu() { var myindex=document.forms[0].menu.selectedIndex; if (myindex==0) { alert("\nYou must make a selection from the drop-down menu."); document.forms[0].menu.focus(); } else { select_value =document.forms[0].menu.options[myindex].value; return true; } } Chương 5 3. Lập trình web phía client Kiểm tra thông tin địachỉ E-mail nhập vào function isEmail() { if (document.forms[0].elements[1].value == '') { alert ("\n The E-Mail field is blank. \n\n “+ “Please enter your E-Mail address.") document.forms[0].elements[1].focus(); return false; } if (document.forms[0].elements[1].value.indexOf ('@',0) == -1 || document.forms[0].elements[1].value.indexOf ('.',0) == -1) { alert ("\n The E-Mail field requires a \"@\" and a \".\""+ "be used. \n\nPlease re-enter your E-Mail address.") document.forms[0].elements[1].select(); document.forms[0].elements[1].focus(); return false; } return true; } Chương 5 3. DHTML - DHTML (Dynamic HTML) là trang HTML có chứacácđoạn mã JavaScript tạo các hiệu ứng, thay đổi các phầntử trong trang HTML. - DHTML kếthợpgiữa HTML, Javascript và Cascading Style Sheets(CSS). - CSS là sự kếthợpgiữa các tags HTML và style. - Style có thể chứa nhiềuthuộc tính. -Mọi tags HTML đều có style. Javascript có thể dựa trên các biếncốđể thay đổicácthuộc tính củastyle. -Mỗiphầntử trong trang HTML đềucóthểđược gán ID (khác với name) và có các thuộc tính style. -Cóthể dùng tag -Mỗi web browser có thể thựcthimộtsố lệnh khác nhau. Chương 5 3. DHTML Phát hiệnloại web browser – Dùng các thuộc tính appName và appVersion của đốitượng navigator var browser_name= navigator.appName; var browser_version = navigator.appName; alert(“You use browser “+browser_name+” version “+ browser_version); – Phân biệthailoạichính if(document.all){ //IE the_div=eval(“window.document.all.”+div_name+”.style”); }else if(document.layers){//Netscape the_div=eval(“window.document.all.”+div_name); } Chương 5 3. Lập trình Applet Java Applet –Làmột ứng dụng đượcviếtbằng Java, nhúng trong trang HTML. – Khi trang HTML có chứa tag applet đượcgọi, class applet đượctảivề máy client và thực thi trên máy client. –Một ứng dụng applet phảithừakế class java.applet.Applet –Cóthể thựchiện các thao tác như mộtchương trình Java, tuy nhiên bị hạnchế mộtsố chứcnăng vì tính bảomật cho máy client. Hoạt động củamột Applet – Được web browser tải mã(byte code) về máy client. – Method init() sẽđượcgọi để khởi động các thông số. – Method start() đượcgọi để thựcthi. – Method stop() đượcgọi khi người dùng thoát khỏi applet – Method destroy() đượcthực thi khi applet kết thúc. ActiveX Control –Tương tự như Java Applet, đượcviếtbởi các công nghệ của Mircosoft. Chương 5 3. Lập trình Applet //file SampleApplet.java import java.applet.*; import java.awt.*; public class SampleApplet extends Applet { String text = "error"; int x = 0; int y = 20; public void init() { text = getParameter("text"); try { x = Integer.parseInt(getParameter("x")); y = Integer.parseInt(getParameter("y")); }catch(NumberFormatException ex){ } } public void paint(Graphics g) { g.setFont(new Font("TimesRoman",Font.BOLD+ Font.ITALIC,36)); g.drawString(text,x,y); } } Chương 5 3. Lập trình Applet Using the Applet Tag An Applet that Displays Text at a Designated Location <APPLET CODE="SampleApplet.class" HEIGHT=300 WIDTH=300> Text displayed by browsers that are not Javaenabled. Chương 5 3. Lập trình web phía Server Lập trìnhWeb vớiCGI Lập trìnhWeb với Servlet Lập trìnhWeb vớiJSP Lập trìnhWeb với ASP Lập trìnhWeb vớiPHP Chương 5 3. Lập trình web phía Server Lập trình web vớiCGI 9Trang HTML chỉ chứa các nộidungcố định hoặccóthể thao tác thay đổi qua DHTML ở client. 9Nhu cầusử dụng các trang web như một ứng dụng (giao tiếpvới user, tìm kiếm, nội dung thay đổi, tương tác các ứng dụng, với database)=> ứng dụng web. 9CGI (Common Gateway Interface) là mộtchuẩn (standard) để viết ứng dụng web. 9Các đặc điểm –Là ứng dụng chạy trên nền web server. –Nhận thông tin từ web browser và xuất thông tin để web browser hiểnthị thông qua web server. – Ứng dụng có thểđượcviếtvớibấtcứ ngôn ngữ lậptrìnhcó standard input và standard output. (C/C++, Perl, Shell script, Dos shell) Chương 5 3. Lập trình web phía Server Lập trình web vớiCGI Cách thứchoạt động của ứng dụng web CGI – Web server nhận request ứng dụng CGI từ browser. – Web server gọi ứng dụng CGI, truyền các thông số bằng các biến môi trường(thông qua standard input). – Ứng dụng web CGI xử lý, giao tiếpvới các ứng dụng khác (database, mail), xuấtkếtquả dạng HTML qua standard output đến web server. – Web server nhậnkếtquả và trả về cho browser. Chương 5 3. Lập trình web phía Server Lập trình web vớiCGI Hoạt động của CGI Chương 5 3. Lập trình web phía Server Lập trình web vớiCGI Hoạt động của CGI (perl) Chương 5 3. Lập trình web phía Server Lập trình web vớiCGI Ví dụ (Perl) #!/perl/bin/perl #Remember : this path will vary depending on #where Perl is located print "Content-type:text/html\n\n"; print "HELLO!"; print "\n"; print "Hello!\n"; foreach $key (sort(keys %ENV)) { print "VARIABLE $key = $ENV{$key}\n"; } print "\n"; Chương 5 3. Lập trình web phía Server Lập trình web vớiCGI Ví dụ (Perl) #!/perl/bin/perl #Remember : this path will vary depending on #where Perl is located print "Content-type:text/html\n\n"; print "HELLO!"; print "\n"; print "Hello!\n"; foreach $key (sort(keys %ENV)) { print "VARIABLE $key = $ENV{$key}\n"; } print "\n"; Chương 5 3. Giớithiệu servlet 9Java servlet là những chương trình độclập platform và nhỏ chạy ở phía server đượclậptrìnhđể mở rộng chứcnăng của web server(Web server phảihỗ trợ Java). 9Cơ chế hoạt động theo mô hình CGI mở rộng. 9Chương trình servlet: –Thường extends class HttpServlet. Không có method main. –Phải đượcdịch ra ở dạng byte-code(.class) và khai báo với web server. Chương 5 3. Giớithiệu servlet Cần có package servlet.jar để biên dịch ( Các server hiệnhỗ trợ Servlet: – Apache Tomcat ( – Sun’s Java Web Server, free, hiện không cho download ( – New Atlanta’s ServletExec, tích hợp ServletEngine vào các web server( – – Tham khảo các tài liệuvề Servlet: Chương 5 3. Giớithiệu servlet Vòng đờicủa servlet Chương 5 3. Giớithiệu servlet Java Servlet API gồm: – javax.servlet.* Chứa các class và interface độclậpvới HTTP – javax.servlet.http.* Chứa các class cụ thể cho HTTP Tấtcả sevlet đềuphảihiệnthựcgiaodiện javax.servlet.Servlet. Tuy nhiên do chúng ta dùng giao thức HTTP nên javax.servlet.http.HttpServlet là lớphiệnthựcgiaodiện Servlet, nên ta thường phảikế thừatừ lớp này và override các method doGet()/doPost(). Chương 5 3. Giớithiệu servlet Chương 5 3. Giớithiệu servlet Chương 5 3. Giớithiệu servlet 9Web server nhận yêu cầutriệugọi servlet từ client. 9Nếu servlet chạylần đầu, web server load file 9servlet tương ứng, khởitạo các thông số bằng qua method init() 9Nếu servlet đã đượckhởitạo, tạomột thread để xử lý yêu cầu. 9Gọi methods doXxx() để xử lý các request tương ứng theo giao thức HTTP: – doGet cho HTTP GET, doPost cho HTTP POST Chương 5 3. Giớithiệu servlet Ví dụ: import java.io.*; import java.servlet.*; import java.servlet.http.*; public class Sample extends HttpServlet{ public doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{ //dùng đốitượng “request” để đọcdữ liệutừ client //dùng đốitượng “response” để xuấtdữ liệu cho client PrintWriter out = response.getWriter(); //dùng đốitượng out để ghi (method print) dữ liệu cho client } } Chương 5 3. Giớithiệu servlet Ví dụ: import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out.println("Hello World"); } } Chương 5 3. Giớithiệu servlet API cho HttpServletRequest 1. Object getAttribute(String name) 2. void setAttribute(String name, Object att ) 3. Enumeration getAttributeNames() 4. int getContentLength() 5. String getParameter(String name) 6. Enumeration getParameterNames() 7. Enumeration getParameterValues() 8. String getRemoteHost() 9. RequestDispatcher getRequestDispatcher( String path ) 10. boolean isSecure() 11. ServletInputStream getServletInputStream() 12. int getContentLength() 13. Chương 5 3. Giớithiệu servlet Lấydữ liệutừ web client gởi đếnbằng servlet – Dùng đốitượng của class HttpServletRequest – Các methods để lấy thông số: getParameter(“para-name”) getParameterValues(“para-name”) String username= request.getParameter(“username”); String[] choice = request.getParameterValues(“comments”); – Dùng đốitượng của class HttpServletRequest để lấy các thông tin HTTP header –Vídụ: Request Parameter
File đính kèm:
- bai_giang_lap_trinh_mang_chuong_5_lap_trinh_voi_he_thong_web.pdf