Form đề thi có 3 câu, 2 câu lý thuyết + lấy ví dụ (7đ) và 1 câu bài tập (3đ) viết các sự kiện như dạng bài trong tài liệu. Ở đây mình tổng hợp các phần lý thuyết trong chương trình dạy và lấy ví dụ 1 bài tập lớn. Chỉ cần để ý trên lớp là sẽ hiểu bài tập thôi. ................................................................................................................................................................................................................................................................................
Trang 1Lý thuyết
1 Quá trình xử lý trang của ASP.NET
- Mô hình: Xử lý tại Server: Khi máy khách yêu cầu một trang thì máy chủ sẽ đọc toàn bộ nội dung của trang đó và xử lý tại Server (trước khi gửi về cho client) để được kết quả, tiếp theo lấy kết quả xử lý được gửi về cho phía máy khách
- Các trang (file) có đuôi mở rộng mà server có thể xử lý, ví dụ: asp, php, jsp, aspx…
- Cơ chế cử lý file ASP.NET phía máy chủ:
Bước 0: Người lập trình phải tạo các trang ASPX (giả sử tên trang đó là abc.aspx) và đặt nó vào trong thư mục web của web server (có tên là www.server.com) Trên thanh địa chỉ của trình duyệt, người dùng nhập trang www.server.com/abc.aspx
Bước 2: Trình duyệt gửi yêu cầu tới server với nội dung: “Làm ơn gửi cho tôi
trang abc.aspx!”.
Bước 3: web server sẽ biên dịch code của trang aspx (bao gồm cả các mã code vb.net/ c# - gọi là code behind hay code file) thành class
Bước 4: Lớp sau khi được biên dịch sẽ được server thực thi
Bước 5: Server trả kết quả thực thi về cho trình duyệt (trang HTML)
- Ở lần thứ 2 yêu cầu lại trang aspx thì không cần Compile nữa => nhanh hơn Chỉ cần biên dịch lại nếu nội dung file nguồn aspx có sự thay đổi
- Xử lý bên server:
Thông qua runat = “Server” : <asp:Calendar runat=”server” id =””>
</asp:Calendar>
Thông qua cặp thẻ: <% nội dung yêu cầu %>
Thông qua Scrip:
Bằng cách đặt trong file Code
2 Ưu nhược điểm của ASP.NET
- Ưu:
ASP.NET là ngôn ngữ lập trình có bộ thư việc phải nói là cực kỳ đa dạng và phong phú, được hỗ trợ rất tốt về XML và khả năng truy cập cơ sở dữ liệu qua ADO.net
Ưu điểm nổi trội tiếp theo của ngôn ngữ lập trình này là có khả năng hoạt động tốt trên nhiều ứng dụng để đảm bảo hiệu suất tốt nhất, cao nhất cho website Khi sử dụng ASP.NET, chúng ta có thể tách bạch phần code và giao diện thành 2 phần riêng biệt hoàn toàn để tạo ra những nét thú vị nhất cho web Ngoài ra thì cũng nhờ vậy mà việc quản lý và bảo trì web trong quá trình vận hành, sử dụng đã trở nên dễ dàng và thuận tiện hơn rất nhiều
Các website được lập trình bởi ASP.NET thường hoạt động ổn định hơn, mượt mà hơn, có tốc độ tải trang tốt hơn
Trang 2 Khả năng tùy biến của ASP.NET là khá cao, giúp website dễ dàng tương thích với các kích thước màn hình, thiết bị truy cập khác nhau
Độ bảo mật của ASP.Net rất cao
ASP.NET có độ truy xuất dữ liệu cực nhanh, hỗ trợ lưu trữ dung lượng lớn
Hỗ trợ SEO tốt
- Nhược điểm:
không hỗ trợ cho các thiết bị sử dụng hệ điều hành Linux
không hỗ trợ Visual studio trong quá trình viết code
ASP.NET có phí sử dụng khá cao, không phù hợp sử dụng cho các doanh nghiệp nhỏ hay các cá nhân
3 Ưu nhược điểm của ASP.NET WebForm:
- Ưu:
Web forms có thể được thiết kế và lập trình thông qua các công cụ phát triển ứng dụng nhanh (RAD)
Web form hỗ trợ một tập các điều khiển (controls) có thể mở rộng
Bất kỳ một ngôn ngữ NET nào cũng có thể được dùng để lập trình với web forms
Asp sử dụng trình thực thi ngôn ngữ chung (CLR) của NET framework do
đó thừa hưởng mọi ưu thế của NET Framework Ví dụ: Khả năng thừa kế
- Nhược:
Không có kiến trúc project cố định được xác định trước để tạo ra các ứng dụng web cho khách hàng Lập trình viên cần phải vận dụng một cách linh hoạt, để tạo nên các ứng dụng, điều này đòi hỏi một khả năng sáng tạo cao hơn bình thường
Không thể tự động thực hiện kiểm tra Unit Testing, vì khi kết thúc Code Behind Web Foms xử lý rất nhiều sự kiện
Web Forms ít có khả năng kiểm soát html
Web Forms cũng không thật sự thân thiện với việc seo website
Ngoài ra Web Forms ít có khả năng hỗ trợ cho sự phát triển song song giữa ASPX và các tập tin code behind
4 Các điều khiển quan trọng của ASP.NET
- Điều khiển liên kết dữ liệu:
GridView
DropDownList
Trang 3 CheckBoxList
RadioButtonList
Button
LinkButton
- Điều khiển kiểm tra sự hợp dữ liệu
Validation
5 Các đối tượng:
Request
- Để đọc dữ liệu từ một trang
- Có 2 phương thức:
Request.Form.Get/GetValues(“tên nội dung cần đọc”);
Đọc dữ liệu được gửi tới bằng phương thức “Post” (Method=”Post”)
Request.QueryString.Get/GetValues(“tên nội dung cần đọc”);
Đọc dữ liệu gửi tới bằng phương thức “Get” (Method= “Get”)
Response
- Để gửi nội dung bất kì cho 1 trang
- Có 3 phương thức:
Response.write(<biểu thức>);
Để gửi một biểu thức cho trình duyệt VD: Response.write(Server.MachineName); để in ra tên server
Response.Redirect(“địa chỉ Url”);
Chuyển tới 1 trang khác VD: Response.Redirect(“WebForm2.aspx”);
Flush
Đưa dl còn trong bộ đêm phía server về cho trình duyệt
Session
- Là đối tượng dùng để quản lý (tạo, đọc, ghi) các biến session (giống như những trang mà 1 account cụ thể có thể truy cập trong mỗi lần đăng nhập) và một số thông
số khác
- Cú pháp tạo biến session: Session.Add("Tên_Biên","Giá trị khởi tạo");
Lưu ý: Tên biến phải đặt trong cặp dấu nháy kép <Giá trị> có thể là xâu ký tự hoặc
số
Ví dụ : Tạo một biến tên là MaNguoiDung và gán giá trị là TK34
Session.Add(“MaNguoiDung”,“TK34”);
Trang 4+ Cú pháp để đọc giá trị của một biến session như sau:
Session.Contents[“Tên_Biên”] hoặc dùng chỉ số: Session.Contents[i]; + Cú pháp để ghi (thay đổi) giá trị của biến session:
Session.Contents[“Tên_Biên”] = <Giá trị mới>
- Riêng với đối tượng Session, nó còn có các sự kiện Các sự kiện này tự động được gọi mỗi khi một phiên làm việc được tạo ra Các sự kiện này có tên là On_Start và On_End Các sự kiện này được đặt trong file Global.asax (Dùng để đếm số người đang online)
Application
- Là đối tượng dùng để quản lý (tạo, đọc, ghi) các biến có phạm vi toàn ứng dụng Có tác dụng đến mọi người dùng (Mọi trang aspx.cs đều có thể truy cập đến biến này
dù ở bất kì thời điểm nào)
- Cú pháp tạp biến:
Application.Add(“Tên_Biên”, <Giá trị khởi tạo>);
- Ví dụ: Tạo biến So_Nguoi_Truy_Cap
Application.Add(“So_Nguoi_Truy_Cap”, 0);
+ Truy xuất đến biến Application:
Application.Contents[“Tên_Biên”] hoặc chỉ số: Application.Contents[i] + Ví dụ: Đọc và ghi biến Application
Application.Contents[“So_Nguoi_Truy_Cap”] = Application.Contents[“So_Nguoi_Truy_Cap”] + 1;
Response.write(“Bạn là vị khách thứ: “ &
Application.Contents[“So_Nguoi_Truy_Cap”]);
- Ngoài ra, đối tượng Application còn có 2 phương thức thường dùng là Application.Lock(): Để khóa không cho người khác sửa đổi các biến toàn cục và Application.UnLock() để mở khóa
- Đối tượng Application cũng có 2 sự kiện đó là Application_OnStart và
Application_OnEND Sự kiện OnStart chỉ được kích hoạt duy nhất một lần khi yêu cầu đầu tiên phát sinh Sự kiện OnEND được kích hoạt khi dịch vụ web dừng
(unload)
Đối tượng Application có 2 phương thức là Lock và Unlock Khi gọi phương thức Lock (khóa) thì tất cả các ứng dụng không được phép thay đổi các giá trị Application Để các ứng dụng khác được phép thay đổi các biến Application thì gọi phương thức Unlock
- Mã lệnh viết cho 2 sự kiện này cũng được đặt trong file Global.asa
Trang 5 Server
6 Tệp tin Global.asax
- Là tập tin quản lý và cấu hình ứng dụng trong ASP.NET
- Dùng để:
Khai báo và khởi tạo giá trị cho các biến Application, Session
Viết xử lý cho các sự kiện của 2 đối tượng Application và Session
- Cấu trúc tập tin:
<! <%@ Application Language="C#" %>
<script runat="server">
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
}
void Application_End(object sender, EventArgs e)
{
// Code that runs on application shutdown
}
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
}
void Session_Start(object sender, EventArgs e)
{
// Code that runs when a new session is started
}
void Session_End(object sender, EventArgs e)
{
// Code that runs when a session ends.
// Note: The Session_End event is raised only when the sessionstate mode
// is set to InProc in the Web.config file If session mode is set toStateServer
// or SQLServer, the event is not raised.
Trang 6}
</script>
>
- Các sự kiện trong tập tin Global.asax
Application_Start: Chỉ xảy ra một lần đầu tiên khi bất kỳ trang nào trong ứng dụng được gọi Ứng dụng xây dựng tính năng đếm số người online, truy cập trong website
void Application_Start(object sender, EventArgs e)
{
// Khai báo đêm số người truy cập
Application["So_luot_truy_cap"] = 0
Application["So_nguoi_online"] = 0
}
Session_Start: Xảy ra khi có một người dùng mới yêu cầu đến bất kỳ trang aspx của ứng dụng Khi Session_Start xảy ra, một giá trị duy nhất (SessionID) sẽ được tạo cho người dùng, và giá trị này được sử dụng để quản lý người dùng trong quá trình làm việc với ứng dụng
<!—
void Session_Start(object sender, EventArgs e)
{
// Tăng giá trị biên Application
Application["So_luot_truy_cap"] = (int)Application["So_luot_truy_cap"] + 1; Application["So_nguoi_online"] = (int)Application["So_nguoi_online"] + 1; }
>
Application_BeginRequest: Xảy ra khi mỗi khi có Postback về Server Sub Application_Error: Xảy ra khi có lỗi phát sinh trong quá trình thi hành
Session_End: Xảy ra khi phiên làm việc không có gởi yêu cầu hoặc làm tươi trang aspx của ứng dụng web trong một khoảng thời gian (mặc định là 20 phút)
void Session_End(object sender, EventArgs e)
Trang 7{
// Giam giá trị biên Application
Application["So_nguoi_online"] = (int)Application["So_nguoi_online"] - 1; }
>
Qua tập tin Global.asax bạn có thể xây dựng được ứng dụng đếm số người truy cập và người online trong website chúng ta Ở người online thì dựa vào Session_Start và Session_End mà giảm tăng rồi xuất biến Application ra ngoài trang chủ còn về số lược truy cập thì cứ cộng dồn vào do đó bạn phải ghi vào file text hay vào trong CSDL số lượng đó để biến tăng dần lên theo ngày tháng
7 Cài đặt cấu hình IIS, các cách kiểm tra thành công
- IIS (Internet Information Services) là dịch vụ WebServer trên Windows
- Mặc định hệ thống đã ẩn nó đi
- Cách kích hoạt:
Truy cập vào Programs and Features theo đường dẫn:
Control Panel\Programs\Programs and Features
Trong cửa sổ Programs and Features Click Turn Windows features on or off
Mở rộng Internet Information Service Trong đó có 3 phần, bạn chỉ cần quan tâm Web Management Tools & World Wide Web Services Mở rộng 2 nhánh này và tick chọn vào checkbox
Nhấn OK và chờ vài phút để hệ thống cập nhật lại Khởi động lại máy tính của bạn nếu cần
- Cách kiểm tra cài đặt thành công:
Mở trình duyệt lên gõ: http://localhost hoặc http://127.0.0.1
Màn hình chuyển thành trang của IIS là thành công
8 Cách đếm số lượt truy cập Website, lượt đang online:
Tạo một trang đếm số lượng người truy cập
Tạo 2 trang là Index.aspx.cs và Global.asax với nội dung sau:
Trang Index.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Index.aspx.cs"
Inherits="Index" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
Trang 8<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Home Page - Hit counter</title>
</head>
<body>
<form id="form1" runat="server">
<h1>Chào mừng bạn đã đên website cua chúng tối</h1> <asp:Label runat="server" ID="lblSLKhach"></asp:Label> </form>
</body>
</html>
Trang
Index.aspx.cs
using System;
public partial class Index : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
lblSLKhach.Text="Bạn là vị khách thứ: " +
Application.Contents["SLTruyCap"].ToString(); }
}
Trang
Global.asax
<%@ Application Language="C#" %>
<script runat="server">
void Application_Start(object sender, EventArgs e)
{
Trang 9Application.Lock ();
System.IO.StreamReader sr;
sr = new System.IO.StreamReader (Server.MapPath ("SL.txt")); string S = sr.ReadLine ();
sr.Close ();
Application.UnLock ();
//Tạo một biên Applciation là SLTruyCap và khởi tạo giá trị S Application.Add ("SLTruyCap", S);
}
void Application_End(object sender, EventArgs e)
{
// Code that runs on application shutdown
}
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
}
void Session_Start(object sender, EventArgs e)
{
//Tăng số lượng người truy cập lên 1 khi có một người mới thăm Application.Contents ["SLTruyCap"] =
int.Parse (Application.Contents ["SLTruyCap"].ToString ()) + 1;
//Lưu vào file SL.txt (mở và ghi đè)
System.IO.StreamWriter sw;
sw = new System.IO.StreamWriter (Server.MapPath ("SL.txt")); sw.Write (Application.Contents ["SLTruyCap"].ToString ());
sw.Close ();
}
void Session_End(object sender, EventArgs e)
Trang 10{
}
</script>
Sau khi tạo, chạy file Index.aspx để kiểm chứng sẽ thấy rằng số lượng người truy cập luôn luôn tăng lên bất kể là server có tắt hay máy tính bị trục trặc
Đếm số người online:
Application(“SoNguoiOnline”) = Application(“SoNguoiOnline”) -1;
Application.Lock();
Application(“SoNguoiOnline”) = Application(“SoNguoiOnline”) + 1; Application.UnLock();
Để hiện thị số người online đơn giản ta dùng đoạn code sau:
Số người đang xem website: <% = Application(“SoNguoiOnline”) %>
9 Master Page, Code behind
Master Page:
- Master Page trong ASP.Net cho phép bạn design 1 lần và sử dụng lại cho tất cả các trang web trong site bạn có thừa kế Master Page này
- Khi sử dụng Master Page bạn sẽ lợi được rất nhiều, không phải mất công chỉnh sửa các trang khi có bất kì thay đổi nào ở head, footer … mà chỉ cần sửa ở master page là có tác dụng với các trang có kế thừa nó
Code behind:
- Các file chứa mã code (VB.NET hoặc C#) được gọi là Code file (cách gọi mới) hay Code behind (cách gọi cũ)
- Mã lệnh tại đây thường xử lý các tác vụ liên quan đến nghiệp vụ, trong đó cũng có các
câu lệnh cho phép gửi kết quả về cho phía trình duyệt Cụ thể là phương thức write của đối tượng Response.
Ví dụ muốn trả một xâu S về cho trình duyệt hiển thị, ta viết: Response.write(S)
- Việc sử dụng phương thức write này như thế nào để “sinh ra” các phần tử cho trình duyệt hiểu là một kỹ năng quan trọng
- Nhìn chung, người ta thường chia các web form thành 2 phần là trang chứa giao diện (aspx) và trang chứa mã code (.vb; cs) để đảm bảo tính chuyên môn hóa và dễ bảo trì hơn
10.Các điều kiện cần thiết để dựng một trang Web chạy online