asp.net 作业合集一
实验4 ASP.NET内置对象的使用
实验类型:设计性实验 要求:必做 学时:4
实验时间及地点:
实验目的
1、掌握Response、Request、Server对象的常用方法;
2、掌握Cookie信息、Session信息、Application信息的建立与使用方法;
实验内容
1、使用Redirect方法实现页面跳转。
2、使用Request对象获取页面间传送的值。
3、Server对象的MapPath方法使用。
4、利用Cookie实现密码记忆功能。
5、使用Session对象进行页面间传值。
6、统计网站总访问量。
7、制作一个简单的在线聊天室。
实验步骤
1、使用Redirect方法实现页面跳转。
设计一个页面,在后台先判断当前日期是偶数还是奇数,如果是偶数,则跳转至新浪网站,否则跳转至搜狐网站。
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string url = "";
int day = DateTime.Now.Day;
if(day % 2 == 0 )
{
url = "http://www.sina.com.cn";
}
else
{
url = "http://www.sohu.com";
}
Response.Redirect(url);
}
}
2、使用Request对象获取页面间传送的值。
设计2个页面,在第一个页面里输入用户名,在第二个页面里利用Request[“元素名”]来获取第一个页面里输入的用户名。
string uname = Request.QueryString["Textbox1"];
Response.Write(uname);
3、使用Server对象的MapPath方法获得物理地址。
1)新建窗体页面,参考下图进行前台界面设计:
public partial class Default4 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = Server.MapPath("~");
Label2.Text = Server.MapPath("~\\Default2/aspx");
}
}
2)后台代码参考:
4、利用Cookie实现密码记忆功能。
1)新建页面,设计一个用户登录的界面,用Cookies保存登录信息。
2)说明:选择记住密码的checkbox,就创建一个cookie用于记录密码的内容,同时设置有效期。当下次加载的时候,判断有没有这个密码cookie,如果有再判断这个cookie是否过期,若未过期,就将这个cookie里存的值取出来,放到对应的文本框中。建议把有效期设置为10s,原因是为了看到的效果明显些。在20s之前,密码部分还是一直有值,过了20s,就自动清空了,这是因为cookie到期了。
public partial class Default5 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(null!=Request.Cookies["uname"]&&null!=Request.Cookies["pwd"])
{
TextBox1.Text = Request.Cookies["uname"].Value;
TextBox2.Attributes["Value"] = Request.Cookies["pwd"].Value;
CheckBox1.Checked = true;
}
}
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
if(CheckBox1.Checked)
{
Response.Cookies["uname"].Value = TextBox1.Text;
Response.Cookies["pwd"].Value = TextBox2.Text;
Response.Cookies["uname"].Expires = DateTime.Now.AddSeconds(20);
Response.Cookies["pwd"].Expires = DateTime.Now.AddSeconds(20);
}
}
protected void Button2_Click(object sender, EventArgs e)
{
TextBox1.Text = "";
TextBox2.Text = "";
CheckBox1.Checked = false;
}
}
5、使用Session对象进行页面间传值。
设计2个页面,在第一个页面里输入用户名和密码,存到Session变量中,在第二个页面中通过访问第一个页面建立的Session变量,获取第一个页面里输入的用户名和密码。
<body>
<form id="form1" runat="server">
<div>
<p>
用户名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</p>
<p>
密码 :
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</p>
<p>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="登录" />
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="重置" />
</p>
</div>
</form>
</body>
public partial class Default6 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
if ("" != TextBox1.Text && "" != TextBox2.Text) ;
{
Session["uname"] = TextBox1.Text;
Session["pwd"] = TextBox2.Text;
Response.Redirect("Default7.aspx");
}
}
protected void Button2_Click(object sender, EventArgs e)
{
TextBox1.Text = "";
TextBox2.Text = "";
}
}
6、统计网站总访问量。
通过Application对象和对文件的读写操作来统计网站的总访问量。新建全局应用程序类文件Global.asax,当应用程序启动时读取文件中的数据,将其值赋给Application对象。当新会话启动时,需要获取Application对象中的数据信息并使总访问量加1。当应用程序结束时,将已更改的总访问量存放在文件中。
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
Application["counter"] = 0;
int count = 0;
string count_path = Server.MapPath("./counter.txt");
StreamReader srd = File.OpenText(count_path);
while(-1 != srd.Peek())
{
string str = srd.ReadLine();
count = int.Parse(str);
}
srd.Close();
Application["counter"] = count;
}
void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码
int count = (int)Application["counter"];
string count_path = Server.MapPath("./counter.txt");
StreamWriter srw = new StreamWriter(count_path, false);
srw.Write(count);
srw.Close();
}
void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
}
void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
Application.Lock();
int count = (int)Application["counter"];
count += 1;
Application["counter"] = count;
string count_path = Server.MapPath("./counter.txt");
StreamWriter srw = new StreamWriter(count_path, false);
srw.Write(count);
srw.Close();
Application.UnLock();
}
void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不引发该事件。
}
</script>
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
Response.Write("网站总访问人数:" + Application["counter"].ToString());
}
}
7、制作一个简单的在线聊天室。
要求使用Application对象。新建全局应用程序类文件Global.asax,当应用程序启动时初始化计数器。设计效果如下图所示。
<%@ Application Language="C#" %>
<%@ Import Namespace="System.IO" %>
<script runat="server">
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
Application["online"] = 0;
Application["chat"] = "";
}
void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码
}
void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
}
void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
Application.Lock();
Application["online"] = 1 + (int)Application["online"];
Application.UnLock();
}
void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不引发该事件。
Application.Lock();
Application["online"] = (int)Application["online"] - 1;
Application.UnLock();
}
</script>
protected void Button1_Click(object sender, EventArgs e)
{
if (TextBox1.Text != "" && TextBox1.Text != "")
{
Session["name"] = TextBox1.Text;
Response.Redirect("default2.aspx");
}
else
Response.Write("<script language='javascript'>alert('用户名或密码不能为空!');</script>");
}
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Session["name"] != null)
{
Label1.Text = "当前在线人数:" + Application["online"].ToString();
TextBox1.Text = Application["chat"].ToString();
Label2.Text = Session["name"].ToString();
Response.AddHeader("refresh", "30");
}
else
Response.Redirect("Default.aspx");
}
protected void Button1_Click(object sender, EventArgs e)
{
string newmessage = Session["name"] + ":" + DateTime.Now.ToString() + "\r" + TextBox2.Text + "\r" + Application["chat"];
if (newmessage.Length > 500)
newmessage = newmessage.Substring(0, 499);
Application.Lock();
Application["chat"] = newmessage;
Application.UnLock();
//Label2.Text = "";
TextBox1.Text = Application["chat"].ToString();
}
}
实验小结
我掌握Response、Request、Server对象的常用方法;
掌握Cookie信息、Session信息、Application信息的建立与使用方法;