一,IIS
1.首先知道IIS是個什么東西:它是web服務器軟件,安裝在服務器上,接受客戶端發來的請求,並傳送給服務器端,然后響應請求並送回給客戶端。類似於飯店里的服務員。
2.會安裝IIS——控制面板-程序-打開或關閉windows功能
3.會進行基本的設置:安裝完成后,打開控制面板-管理工具-IIS
應用程序池——設置.Net4.0框架
默認目錄:C:\inetpub目錄下 虛擬目錄:在別的盤可以設置虛擬目錄
二,建立.Net的Web項目
1.文件-新建-網站
在文件位置可選擇文件系統和HTTP
HTTP:是用IIS建立和運行項目
文件系統:使用VS自帶的IIS Express建立和運行項目,一般默認用此法創建
2.進入界面后
App_Code:系統文件夾。所有的.cs單獨的類文件要放在App_Code文件夾中。(即所有的數據訪問類data和DA文件)
Web.Config配置文件。程序配置內容放在里面,通常用來放鏈接字符串。
頁面文件:.aspx(設計界面)和.aspx.cs(源代碼)兩部分,在編譯或運行的時候會把二者自動合成一個類。
3.案例:在頁面上動態顯示數據庫信息
1.在div中新建一個表格,添加第一行數據
2.利用C#代碼動態生成以下幾行
<div> <h1>人員顯示</h1> <table width="100%" border="1" cellpadding="5" cellspacing="1"> <tr bgcolor="blue" align="center" style="color:white;font-weight:bold"> <td >代號</td> <td >姓名</td> <td >性別</td> <td >民族</td> <td >生日</td> </tr> <%List<InfoData> list=new InfoDA().Select(); foreach (InfoData data in list) { %> <tr align="center" bgcolor="green"> <td><%=data.Code %></td> <td><%=data.Name %></td> <td><%=(data.Sex?"男":"女") %></td> <td><%=data.NationData.Name %></td> <td><%=data.Birthday %></td> </tr> <%} %> </table> </div>
注意:<%%>內不需要輸入數據,里面存放要執行的C#代碼
<%=%>內需要輸入數據,里面存放需要顯示的數據
說明:在aspx.cs中導入命名空間,使用using XXXXX導入;。在aspx中導入命名空間使用<%@ Import Namespace="XXXXX" %>導入。
三,web下常用的五個對象
1.Request——獲取請求
string s=Request[""]; //中括號內填寫地址欄中?后面名值對中的名或者是表單元素的name名
string d1 = Request["TextBox1"];
2.Response——響應請求
Response.Write("字符串"); //服務器的程序代碼向頁面輸入一串字符。
Response.Redirect("重定向頁面"); //重定向頁面到指定頁面
注意:所有的Web程序都是無狀態的。即本頁面與下一個打開的子頁面或者上一個父頁面都沒有關系,不會傳值
原因是它們使用的HTTP協議本身就是無狀態的
表現:每個返回到客戶的頁面,都與之前或之后的頁面不相關,無法訪問之前頁面的數據,或為之后頁面送數據。
解決:在服務端或客戶端通過使用幾個對象來專門存儲相關狀態的數據。
在服務端存儲狀態的對象:Session和Application
在客戶端存儲狀態的對象:Cookie
3.Session:每個獨立的瀏覽器都會創建一個獨立的Session,不是一台電腦一個Session
Session存儲的數據在當前會話中共享,關閉會話即消失
特性:Session在20分鍾之內如果沒有會話操作,則會自動釋放
語法:(1)用Session存值:Session["key名"] = 值; 值,不只是個字符串,可以是對象。
(2)從Session取值:類型 變量名 = (強制轉換的類型名)Session["key名"]
(3)釋放Session:釋放某個Session:Session["key名"]=null;
釋放所有Session:Session.clear();
自動釋放:20分鍾
4.案例
登錄界面,登錄成功后轉向另一界面並顯示“歡迎您XXX”加上當前時間
I,登錄界面
protected void Button1_Click(object sender, EventArgs e) { if (TextBox1.Text.Length > 0 && TextBox2.Text.Length > 0) { Session["user"] = TextBox1.Text; Response.Redirect("Default.aspx"); } }
II,顯示頁面
protected void Page_Load(object sender, EventArgs e) { if (Session["user"] == null) { Response.Redirect("Default2.aspx"); } if (Session["test"] == null) { Session["test"] = DateTime.Now.ToString(); } Label1.Text =" 歡迎您:"+Session["user"].ToString()+"<br/>"; Label1.Text +=Session.SessionID+" " + Session["test"].ToString(); }
4.Application:所有的會話共享一個Application空間,任何一個人改變Application的內容,其他人都會發現被改變了。Application中的內容不會被自動釋放
(1)用Application存值:Application["key名"] = 值; 值,不只是個字符串,可以是對象。
(2)用Application取值:類型 變量名 = (強制轉換的類型名)Application["key名"]
(3)判斷Application中是否存有某個值
if(Application[“key名”] == null)
{
}
(4)釋放Application:Application["key名"] = null;
案例:每次訪問頁面都會累加訪問次數
protected void Page_Load(object sender, EventArgs e) { if (Application["count"] == null) { Application["count"] = 0; } Application["count"] = (int)Application["count"] + 1; Label1.Text = Application["count"].ToString(); }
5.Cookie:保存在客戶端內存或硬盤上
臨時Cookie是存在瀏覽器內存中的,持久Cookie是存在電腦硬盤上瀏覽器相關的Cookie目錄下的
設置Cookie
Response.Cookies["key名"].Expires = 過期時間。
Response.Cookies["key名"].Value = 值。
讀取Cookie
string s = Request.Cookies["key名"].ToString();
案例:設置Cookie登錄(記住用戶名,30天免登錄)
protected void Button2_Click(object sender, EventArgs e) { if (TextBox1.Text.Length > 0 && TextBox2.Text.Length > 0) { if (CheckBox1.Checked == true) { Response.Cookies["user"].Expires = DateTime.Now.AddDays(30); } Response.Cookies["user"].Value = TextBox1.Text; Response.Redirect("Default5.aspx"); } }
登陸成功后跳轉頁面,點擊退出重新登錄並清除Cookie
protected void Page_Load(object sender, EventArgs e) { if (Request.Cookies["user"] == null) { Response.Redirect("Default2.aspx"); } Label1.Text = Request.Cookies["user"].Value; } protected void Button1_Click(object sender, EventArgs e) { Response.Cookies["user"].Expires = DateTime.Now.AddDays(-1);//過期時間為昨天,即清除Cookie Response.Redirect("Default2.aspx"); }