内置对象:
1、Response - 响应请求对象
Response.Redirect("Default2.aspx"); //页面重定向到Default2.aspx
Response.Write("<script>window.open('Default2.aspx');</script>");//在页面中写入一句话并显示在页面上,这里写入了一个js方法,里面写入了一句打开新页面的语句,同样执行打开新页面,也就是Response.Write,执行后面括号里写入的语句
2、Request - 接收请求对象
Request["键"] - 放在等号右边,用来取值
服务器控 件是根据ID来作为键
表单元素 是根据name值来作为键
QueryString - 页面地址拼接数据
如:Default2.aspx?aaa=呵呵&bbb=嘿嘿&ccc=hoho
1.后台Response.Redirect("Default2.aspx?key="+值);
例:创建两个Web窗体,在第一个窗体中放一个文本框和一个按钮,第二个窗体中Response.Write写入一个Request["name"]接收请求对象
在第一个窗体的文本框中输入东西,点击按钮,页面重定向到第二个窗口,并且将文本框中输入的内容赋值给名为name的接收请求对象
窗口2的后台:
Response.Write(Request["name"]);//在页面中写一个Request接收请求对象,接收传过来的值,name是给他起得名字
也可以用其他的控件来接收Request["name"]中所赋的值,比如将Request["name"]里的值给一个文本框,添加文本框,后台Textbox1.Text=Request["name"];
窗口1的后台:
//页面中按钮点击,执行页面重定向,并且将文本框中的信息通过页面地址拼接数据一起传到定向页面
void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("Default2.aspx?name=" + TextBox1.Text);
}
2.Form表单会通过submit按钮自动提交数据,将数据提交给action设置的页面中去,method=“get”方式来提交
method 提交方式
action 目标页面
在From的括号里写 method=“get” action="页面名字.aspx"
get提交方式:会在地址栏窗口aspx?后面拼接一些系统生成的代码
提交窗口不需要写后台,写一个文本框和一个按钮,直接在Form中写提交方法和重定向页面,点击submit按钮直接将文本框中的内容传到新页面,新页面后台通过id来获取传来的值
窗口1:
<form id="form1" method="get" action="Default2.aspx" runat="server"> <div> <asp:TextBox ID="user" runat="server"></asp:TextBox><br /> /*ID为user*/ <asp:Button ID="Button1" runat="server" Text="Button" /> </div> </form>
窗口2:将文本框的Text为通过窗口1的ID接收的值:TextBox1.Text = Request["user"];
post提交方式 - 直接数据提交方式
除了不在地址栏拼接数据,其它的没有任何区别
就是将method="get" 的提交方式改为method="post" 提交,这种方法地址栏aspx?后面没有拼接数据
3、Session
就是一个临时保存数据的对象,保存在服务器
可以理解为容器,变量
可以存Object类型,一个连接为独立的一组,默认生命周期为20分钟,如果在这20分钟内重新进行数据提交或是页面刷新,都会重置这20分钟倒计时时间。
如果Session["键"]里面没有内容的时候,使用时会抛出异常,所以一定要在使用session的值之前判断此是否为空。
注意:Session不要过度使用,因为放的东西太大了,用户连接多了就会导致内存溢出,服务器崩溃;也不要不使用,会造成资源浪费,因为内存中的数据是最快速的;
例:创建三个Web窗体,第一个为登录页面,两个文本框账号和密码,通过Session将账号密码存放,点击按钮,将两个文本框中的值在第二个窗体显示,第二个窗体设置一个按钮,点击打开第三个窗体,在第三个窗体中显示Session中的值
第一个窗体:
前端:
<body> <form id="form1" runat="server"> <h1>登 录</h1> <div> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br /><br /> <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br /><br /> <asp:Button ID="Button1" runat="server" Text="登 录" /> <asp:Label ID="Label1" runat="server" Text=""></asp:Label> </div> </form> </body>
后端:
void Button1_Click(object sender, EventArgs e) { //将文本框中的值放进Session中,在新开的页面接收这个Session中的值 if (TextBox1.Text == "Admin" && TextBox2.Text == "123") { Session["code"] = TextBox1.Text; Session["pwd"] = TextBox2.Text; Response.Redirect("Default2.aspx"); } else { Label1.Text = "用户名密码有误!"; } }
第二个窗体:
前端:
<body> <form id="form1" runat="server"> <div> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label> <asp:Button ID="Button1" runat="server" Text="注 册" /> </div> </form> </body>
后端:
protected void Page_Load(object sender, EventArgs e) { Button1.Click += Button1_Click; if (Session["code"] != null&&Session["pwd"]!=null)//要进行判断是否为空 { Label1.Text = "您的账号是:" + Session["code"].ToString(); Label2.Text = "您的密码是:" + Session["pwd"].ToString(); } else { Response.Redirect("Default1.aspx"); } //此页面如果不关闭。默认20分钟后此页面传过来的值则会无效 } void Button1_Click(object sender, EventArgs e) { Response.Redirect("Default3.aspx"); }
第三个窗体:
前端:
<body> <form id="form1" runat="server"> <h1>注册成功</h1> 账号:<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br /> 密码:<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label> </form> </body>
后端:
protected void Page_Load(object sender, EventArgs e) { if (Session["code"] != null && Session["pwd"] != null) { Label1.Text = Session["code"].ToString(); Label2.Text = Session["pwd"].ToString(); } else { Response.Redirect("Default1.aspx"); } }
4、cookie
临时保存数据的一个对象,保存在客户端
不要保存很重要的信息,因为会随时被用户删掉,有些程序会自动抓取用户电脑上的cookie信息,如果密码保存进去了,就会被抓取到
赋值:使用Response对象
1、Response.Cookies.Add(new HttpCookie("键", 值));
2、Response.Cookies["键"].Value = 值;
3、制作持久Cookie :
Response.Cookies["键"].Expires = DateTime.Now.AddDays(7);//设置7天后过期
取值:使用Request对象
Request.Cookies["UserName"].Value
例:创建两个窗体,一个作为登录窗体,两个文本框和一个单选框及一个按钮,单选框用来记录Cookie的保存时间,另一个窗体将Cookie中的值显示,添加一个清除Cookie的按钮
窗体一:
前端:
<body> <form id="form1" runat="server"> <h1>用户登录</h1> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br /><br /> <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br /><br /> <asp:Button ID="Button1" runat="server" Text="登 录" /> <asp:Label ID="Label1" runat="server" Text=""></asp:Label> <br /><br /> <asp:CheckBox ID="CheckBox1" runat="server" Text="3天自动登录" /> </form> </body>
后端:
void Button1_Click(object sender, EventArgs e) { if (TextBox1.Text == "马志杰" && TextBox2.Text == "123") { Response.Cookies["user"].Value = TextBox1.Text; if (CheckBox1.Checked)//如果单选框是选中的 { //这个cookie三天到期,也就是保存三天 Response.Cookies["user"].Expires = DateTime.Now.AddDays(3); } Response.Redirect("Default6.aspx"); } else { Label1.Text = "账号密码有误!"; } }
窗体二:
前端:
<body> <form id="form1" runat="server"> <h1>欢迎界面</h1> <asp:Label ID="Label1" runat="server" Text="Label"> </asp:Label><asp:Button ID="Button1" runat="server" Text="退 出" /> </form> </body>
后端:
protected void Page_Load(object sender, EventArgs e) { Button1.Click += Button1_Click; if (Request.Cookies["user"] != null) { Label1.Text = Request.Cookies["user"].Value + "小盆友,不欢迎你回来!"; } else { Response.Redirect("Default5.aspx"); } } void Button1_Click(object sender, EventArgs e) { Response.Cookies["user"].Expires = DateTime.Now.AddDays(-2); Response.Redirect("Default5.aspx"); }
5、Appliction
临时保存数据的一个对象,保存在服务器端
全局变量
所有人访问的都是同一个对象
赋值:
Application["键"] = 值;
取值:
Application.Get("键")