WebForm Response和Request以及Cookie
Session:
每一台电脑访问服务器,都会是独立的一套session,key值都一样,但是内容都是不一样的
以上所有内容,都跟cookies一样,
内置对象:用于页面之间的数据交互
为什么要使用这么内置对象?因为HTTP的无状态性。
Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 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 UserName=@a";
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 PassWord=@b,NickName=@c,Sex=@d,Birthday=@e,Nation=@f where UserName=@a";
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的更多相关文章
- net1:post,get方式传值,读写cookie,读XML文件,写script语句,跳转页面,response与request类
原文发布时间为:2008-07-29 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...
- 2014-08-22 关于Response、Request等对象在cs文件中的使用
今天是在吾索实习的第33天.已经有一段时间没写过博客了,今天突然想起个值得分享的东西,所以又华丽地回归了. 废话不多说了,直奔主题.我们会发现,在我们在cs文件中,直接使用Response.Reque ...
- response和request
请求响应流程图 response response是用来向客户端响应的对象! 需要回忆一下http响应内容: l 首行:状态码 l 响应头: 1头1值,1头多值: l 响应体(正文):html ...
- java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别
这里先写几个大家容易搞混的编码设置代码: 在jsp代码中的头部往往有这两行代码 pageEncoding是jsp文件本身的编码contentType的charset是指服务器发送给客户端时的内容编码J ...
- Servlet中response、request乱码问题解决
Java Web(二) Servlet中response.request乱码问题解决 三月不减肥,五月徒伤悲,这就是我现在的状态,哈哈~ 健身.博客坚持. --WH 一.request请求参数出现 ...
- Java Web之Servlet中response、request乱码问题解决
Java Web之Servlet中response.request乱码问题解决 一.request请求参数出现的乱码问题 get请求: get请求的参数是在url后面提交过来的,也就是在请求行中, ...
- 浅谈response和request方法
一:概述 Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象. 按这个理解的话一次请求生成一个request和res ...
- Webform(五)——内置对象(Response、Request)和Repeater中的数据增删改
一.内置对象 (一)Response对象 1.简介:response 对象在ASP中负责将信息传递给用户.Response对象用于动态响应客户端请求,并将动态生成的响应结果返回到客户端浏览器中,使用R ...
- 从response.header中提取cookie,在request里添加cookie
// List<String> resp = new ArrayList<String>(); // HeaderIterator headers ...
随机推荐
- 《Python》 函数嵌套、闭包和迭代器
一.函数的嵌套: 1.函数的嵌套调用 def max2(x,y): m = x if x>y else y return m def max4(a,b,c,d): res1 = max2(a,b ...
- 在 Ubuntu 14.04 Chrome中安装Flash Player(转)
在 Ubuntu 14.04 中安装 Pepper Flash Player For Chromium 一个 Pepper Flash Player For Chromium 的安装器已经被 Ubu ...
- DevExpress v17.2新版亮点—WPF篇(七)
用户界面套包DevExpress v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WPF v17.2 新的Hamburger Menu.Sched ...
- MyEclipse WebSphere开发教程:WebSphere 7安装指南(三)
[周年庆]MyEclipse个人授权 折扣低至冰点!立即开抢>> [MyEclipse最新版下载] 五.应用WebSphere 7.0.0.x和Java SDK更新 1. 要应用这些PAK ...
- L209
China's Chang'e-4 probe entered a planned orbit Sunday morning // to prepare for the first-ever soft ...
- jQuery的noConflict以及插件扩展
一.noConflict函数 JavaScript有很多插件,如果jQuery对象的$与其他插件冲突,我们可以使用noConflict()方法去掉$或者使用其他的符号代替 注:noConflict() ...
- java poi 写入大量数据到excel中
最近在利用poi往excel中写入大量数据时,发现excel2003最多只支持65535条,大量数据时容易造成oom,上网查了一下api,发现目前对于2003,每个sheet最多支持65535条,若数 ...
- Python decode和encody
s = "我今天非常的困" bs = s.encode("utf-8")# 把字符串转化成utf-8格式bytes # bytes 不是给人看的, 给机器用的 ...
- nw + iframe嵌入page 滚动条问题
iframe 加载完之后会在原尺寸基础上增加4像素(因此我用以下方法处理): <iframe id="myiframe" style="visibility: hi ...
- C#对文件I/O的一些基本操作
System.IO命名空间包含允许在数据流和文件上进行同步,异步及写入的类型,下面是关于c#文件的I/O基本操作讲解,需要的朋友可以参考下 文件是一些永久存储及具有特定顺序的字节组成的一个有序的,具有 ...