標籤:
Session:
每一台電腦訪問伺服器,都會是獨立的一套session,key值都一樣,但是內容都是不一樣的
以上所有內容,都跟cookies一樣,
內建對象:用於頁面之間的資料互動
為什麼要使用這麼內建對象?因為HTTP的無狀態性。
Session:在電腦中,尤其是在網路應用中,稱為“會話控制”。Session Object Storage Service特定使用者會話所需的屬性及配置資訊。這樣,當使用者在應用程式的 Web 頁之間跳轉時,儲存在 Session 對象中的變數將不會丟失,而是在整個使用者會話中一直存在下去。當使用者請求來自應用程式的 Web 頁時,如果該使用者還沒有會話,則 Web 服務器將自動建立一個 Session 對象。當會話到期或被放棄後,伺服器將終止該會話。Session 對象最常見的一個用法就是儲存使用者的喜好設定。例如,如果使用者指明不喜歡查看圖形,就可以將該資訊儲存在 Session 對象中。有關使用 Session 對象的詳細資料,請參閱“ASP 應用程式”部分的“管理會話”。注意 工作階段狀態僅在支援 cookie 的瀏覽器中保留。
每一台電腦訪問訪問伺服器,都會是獨立的一套Session,key值都一樣,但是內容都不一樣的。
這是與Cookies相同的地方。
不一樣:
1、Session的儲存位置是儲存在伺服器上
2、Session沒有持久的,它的儲存周期就是20分鐘
重點:Session不要濫用,也不要不用,濫用可能會造成伺服器內容溢出,不用會造成資源浪費,因為記憶體中的資料提取及互動是最快的
賦值:Session["key"] = 值;
取值:string a = Session["key"];
清除: Session["key"]=null;
Application:
全域對象
Application["key"] 是所有的使用者擷取這個key裡面的值都是一樣的
沒有儲存周期,它會一直儲存著
通常在什麼地方使用,版本號碼
賦值:Application["key"]=值;
取值:Application.Get("key");
ViewState:(作為瞭解)
理解成為病例
Repeater的Command操作:
1、ItemCommand事件 - 在Repeater中所有能觸發事件的控制項,都會來觸發這一個事件
2、CommandName - 判斷點擊的是什麼按鈕,e.CommandName
3、CommandArgument - 觸發事件所傳遞過來的主索引值資料,放在這裡面
介面值綁定時要用 單引號 !!!!!! e.。。。
4、ItemCreated - 項目範本中將HTML代碼產生完畢時執行一遍此事件
5、ItemDataBound - 項目範本將資料繫結後執行一遍此事件
Response對象:響應請求
Response.Write("<script>alert(‘添加成功!‘)</script>");
Response.Redirect("Default.aspx");//重新導向到Default.aspx
Request對象:擷取請求
Request["key"]來擷取傳遞過來的值
QueryString:地址欄資料傳遞 ?key=value&key=value
注意事項:不需要保密的東西可以傳
不要傳過長東西,因為長度有限,過長會造成資料丟失
增加:
在資料連線類裡面寫一個增加方法
public bool Insert(Users u)
{
bool isok = false;
cmd.CommandText = "insert into Users values(@a,@b,@c,@d,@e,@f)";
cmd.Parameters.Clear();
cmd.Parameters.Add("@a", u.UserName);
cmd.Parameters.Add("@b", u.PassWord);
cmd.Parameters.Add("@c", u.NickName);
cmd.Parameters.Add("@d", u.Sex);
cmd.Parameters.Add("@e", u.Birthday);
cmd.Parameters.Add("@f", u.Nation);
conn.Open();
try
{
cmd.ExecuteNonQuery();
isok = true;
}
catch { }
conn.Close();
return isok;
}
然後,在web表單中搭建一下表單
<form id="form1" runat="server">
<h1>使用者添加</h1>
使用者名稱:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
<br />
密碼:<asp:TextBox ID="TextBox2" runat="server" TextMode="Password"></asp:TextBox><br />
<br />
重複密碼:<asp:TextBox ID="TextBox3" runat="server" TextMode="Password"></asp:TextBox><asp:Label ID="Label1" runat="server" Text=""></asp:Label><br />
<br />
暱稱:<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox><br />
<br />
性別:<asp:RadioButtonList ID="RadioButtonList1" runat="server" RepeatDirection="Horizontal" RepeatLayout="Flow">
<asp:ListItem Value="True" Selected="True">男</asp:ListItem>
<asp:ListItem Value="False">女</asp:ListItem>
</asp:RadioButtonList><br />
<br />
生日:<asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>年
<asp:DropDownList ID="DropDownList2" runat="server"></asp:DropDownList>月
<asp:DropDownList ID="DropDownList3" runat="server"></asp:DropDownList>日
<br />
<br />
民族:<asp:DropDownList ID="DropDownList4" runat="server"></asp:DropDownList><br />
<br />
<asp:Button ID="Button1" runat="server" Text="添加" />
</form>
在form表單中把該有的控制項都加上,給DropDownList綁定資料,把按鈕的點擊事件委託好
if (!IsPostBack)
{
for (int i = DateTime.Now.Year; i >= 1900; i--)
{
ListItem li = new ListItem(i.ToString(), i.ToString());
DropDownList1.Items.Add(li);
}
for (int i = 1; i <= 12; i++)
{
ListItem li = new ListItem(i.ToString(), i.ToString());
DropDownList2.Items.Add(li);
}
for (int i = 1; i <= 31; i++)
{
ListItem li = new ListItem(i.ToString(), i.ToString());
DropDownList3.Items.Add(li);
}
DropDownList4.DataSource = new NationData().Select();
DropDownList4.DataTextField = "NationName";
DropDownList4.DataValueField = "NationCode";
DropDownList4.DataBind();
}
Button1.Click += Button1_Click;
點擊事件:
Users u = new Users();
u.UserName = TextBox1.Text;
u.PassWord = TextBox3.Text;
u.NickName = TextBox4.Text;
u.Sex = Convert.ToBoolean(RadioButtonList1.SelectedItem.Value);
string date = DropDownList1.SelectedValue + "-" + DropDownList2.SelectedValue + "-" + DropDownList3.SelectedValue;
u.Birthday = Convert.ToDateTime(date);
u.Nation = DropDownList4.SelectedItem.Value;
bool ok = new UsersData().Insert(u);
if (ok)
{
Response.Write("<script>alert(‘添加成功!‘)</script>");
Response.Write("<script>this.opener.location.href=‘Default.aspx‘;this.close();</script>");
}
else
{
Response.Write("<script>alert(‘添加失敗!‘)</script>");
}
添加完成
刪除:
方法:
public void Delete(string Uname)
{
cmd.CommandText = "delete from Users where [email protected]";
cmd.Parameters.Clear();
cmd.Parameters.Add("@a",Uname);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
建立一個頁面delete,在首頁面加一個超連結當按鈕用
<a href="Delete.aspx?un=<%#Eval("UserName") %>">刪除</a>
在delete頁面裡我們用request把Username給傳過來,然後調方法
//1、獲得要刪除的主索引值,username
string Uname = Request["un"].ToString();
//2、刪除
new UsersData().Delete(Uname);
//3、重新導向回顯示頁面
Response.Redirect("Default.aspx");
修改:
主介面和添加大致相同
還是先寫一個修改方法
public bool Update(Users u)
{
bool isok = false;
cmd.CommandText = "update Users set [email protected],[email protected],[email protected],[email protected],[email protected] where [email protected]";
cmd.Parameters.Clear();
cmd.Parameters.Add("@a", u.UserName);
cmd.Parameters.Add("@b", u.PassWord);
cmd.Parameters.Add("@c", u.NickName);
cmd.Parameters.Add("@d", u.Sex);
cmd.Parameters.Add("@e", u.Birthday);
cmd.Parameters.Add("@f", u.Nation);
conn.Open();
try
{
cmd.ExecuteNonQuery();
isok = true;
}
catch { }
conn.Close();
return isok;
}
用和刪除一樣的超連結當按鈕,連結到修改頁面
<a href="Default6.aspx?un=<%#Eval("UserName") %>" target="_blank">修改</a>
登陸狀態保持:
Cookies
在使用者電腦的硬碟上儲存的一段文本
http協議包括瀏覽器,允許網站在使用者電腦上以Cookies的形式來臨時儲存資料
如果沒有設定儲存時間,會話cookies
1、如果你20分鐘內沒有再次重新整理頁面,那麼此cookies就會自動刪除掉
2、噹噹前訪問串連中斷,如關閉瀏覽器,那麼cookies會自動刪除
作用:
保持使用者的登陸狀態
WebForm Response和Request以及Cookie