Session保存在服务器端,Cookie保存在客户端,Session是针对每个用户(会话)有效,生命周期从用户开始访问服务器开始,到用户断开服务器的连接终止。
Cookie是由服务器生成,发送给浏览器,浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发
送该Cookie给服务器(前提是浏览器设置为启用Cookie)
存储在客户端浏览器上的小量信息 <4k(单个Cookie对象要小于4k)
SessionID其实就是通过Cookie传输的。
1.先要在配置文件中配置链接数据库:Web.config
<connectionStrings>
<!--连接数据库 -->
<add name="DBConn" connectionString="data source=.;Integrated Security=SSPI;
database=StudentManager" providerName="System.Data.SqlClient"/>
<add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
</connectionStrings>
2.新建一个类,类中写一个方法,用ADO.NET技术来实现对数据库的查询,数据库中存在一个保存用户名和密码的表
public bool GetUserInfo(string UserName,string UserPassWord)
{
string sql = "select * from tb_UserPwd where UserName=@UserName and UserPassWord=@UserPassWord";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@UserName", UserName);
cmd.Parameters.AddWithValue("@UserPassWord", UserPassWord);
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
bool flag= reader.Read();
conn.Close();
return flag;
}
}
public class UserInfo
{
public string UserName { get; set; }
public string UserPassWord { get; set; }
}
3.在web窗体的后台代码中,实现对客户端状态管理的逻辑
StudentManager DB = new StudentManager();//实例化类
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//设置cookie之后,在第二次访问的时候要读取cookie
if (Request.Cookies["myusername"] != null)
{
this.txtUserName.Text =Request.Cookies["myusername"].Value;
}
}
}
/// <summary>
/// 设置cookie保存用户名
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnLogin_Click(object sender, EventArgs e)
{
//声明两个变量来接收用户名和密码框
string UserName = this.txtUserName.Text.Trim();
string PassWord = this.txtPassword.Text.Trim();
bool flag= DB.GetUserInfo(UserName,PassWord);//从数据库中查询用户名和密码
if (flag == true)
{
Session["UserName"] = UserName;
Response.Write("<script>location.href='defaultMaster.aspx';</script>");
if (this.CheckBox1.Checked == true)//判断记住用户名的复选框是否被选中,true,为真
{
HttpCookie username = new HttpCookie("myusername", this.txtUserName.Text);
username.Expires = DateTime.Now.AddDays(15);//设置Cookie的过期时间
Response.Cookies.Add(username);
}
}
else//如果用户名和密码错误,给出提示信息
{
Response.Write(@"<script>alert('对不起!登录失败!\r请检查您的用户名和密码是否正确!');</script>");
this.txtUserName.Text = "";
this.txtPassword.Text = "";
}
}
本人第一次发表,有很多需要改进和不足的地方,还请大家多多关照。本人将虚心接受大家的意见和批评!