• 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会自动删除

    作用:
    保持用户的登陆状态

  • 相关阅读:
    JDK 9 发布仅数月,为何在生产环境中却频遭嫌弃?
    MyBatis 延迟加载,一级缓存,二级缓存设置
    mysql jdbc url
    idea中模块累积编写
    Idea中通过Git将代码同步到GitHub
    HomeBrew安装及使用
    (二)Java秒杀项目之实现登录功能
    (一)Java秒杀项目之项目环境搭建
    Spring实现构造注入
    Mybatis动态SQL之使用foreach完成复杂查询
  • 原文地址:https://www.cnblogs.com/weiwenxin01/p/5906757.html
Copyright © 2020-2023  润新知