一,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
//新建Cookie對象
HttpCookie cookie_name = new HttpCookie("uid");
//賦值
cookie_name.Value = uid;
//寫入到Cookie里面
Response.AppendCookie(cookie_name);
在使用界面:讀取Cookie
Request.Cookies["uid"].Value.ToString();
5.QueryString傳值
在源頁面寫:Response.Redirect("Main.aspx?(要打開的頁面)uid="+uid+"&pwd="+pwd(要傳輸過去的的數值));//打開新頁面時候把數值傳過去
在目標頁面:Request["uid"].ToString();
7.跳轉頁面方式:
1.Response.Redirect("http://www.baidu.com");重定向,可以跳轉任何網頁
2.Server.Transfer("Main.aspx");只能跳轉該網站根目錄下的網站