动态网页制作实验 您所在的位置:网站首页 数据库动态网页开发 动态网页制作实验

动态网页制作实验

2024-06-29 22:23| 来源: 网络整理| 查看: 265

文章目录 动态网页制作实验一、 实验目的二、实验环境三、 实验内容动态网页实验(一)动态网页实验(二) 四、原理实验步骤五、关键问题及解决方法六、实验结果七、实验体会附录:源代码(仅仅附上核心代码)1.1网页login.aspx.cs或其他2.1网页myhome.aspx.cs或其他2.3 数据库生成SQL语句[包括建库、建表语句;记录不需要]

动态网页制作实验 一、 实验目的 熟悉 VS 2010 开发环境,学会使用 VS 构建网站基本结构熟悉 HTML 服务器控件,特别是 FORM 表单服务器控件的设置掌握表单处理方法掌握服务器内置对象:Request、Response、Session等内置对象的使用掌握ASP.NET日期时间类掌握在 MSSQL 2008 创建数据库、数据表,并能使用 SQL 语句进行表操作熟悉 HTML 服务器控件,特别是 FORM 表单服务器控件的设置(SELECT、INSERT、UPDATE、DELETE)掌握 ADO.NET 提供的连接式数据访问方式,了解非连接式数据访问方式 二、实验环境

Windows OS/VS 2010(C#)、SQL SERVER 2008

三、 实验内容 动态网页实验(一)

1、 通过 VS2010创建空ASP.NET网站。添加2个WEB窗体:login.aspx,myhome.aspx

2、 添加新项Visual C# Web窗体:login.aspx。 1) 设置窗体Title为:登录页 2) 在login.aspx中,使用工具箱->标准:添加3个Labl、2个TextBox、2个Button控件 3) 设置控件属性

a) ID:Label1、Label2、Label3、txtUserName、txtPwd、btnLogin、btnReset b) 设置Label标签的Text属性分别为:用户名、密码、请输入用户名 c) 设置Button按钮的Text属性分别为:登录、重写 在这里插入图片描述

图1.1 login窗体效果图

上图即login页面的效果图:添加了 3 个 Label、2 个 TextBox、2 个Button 控件,分别为用户名、密码、提示输入的文字,和两个Button按钮控件,分别用来是现登录重定向到下面的myhome窗体功能和将输入的信息清除的功能。

2.4设置Button控件Click时间响应函数 BtnLogin的Click事件: 获取TextBox控件txtUserName、txtPwd的输入值(可通过对象的属性或者Request.form集合获取相应的变量与变量值) 检查txtUserName、txtPwd的值是否为合法用户,如:用户名为“张三”,密码为“1234”,如果是的话,则创建Session变量保存当前的登录用户名与密码,再重定向至myhome.aspx;否则的话,将Label3的Text属性设置为:请输入正确的用户名与密码! 在这里插入图片描述

图1.2 用户名和密码正确重定位到myhome窗体

在这里插入图片描述

图1.3 检查用户名或者密码不正确返回提示

上两个图是利用当前的登录用户名与密码进行判断,若正确,重定向至 myhome.aspx;否则的话,将 Label3 的 Text 属性设置为:请输入正确的用户名与密码! BtnReset的Click事件:将TextBox控件txtUserName、txtPwd清空。 添加新项Visual C# Web窗体:myhome.aspx。 1、 设置窗体Title为:我的空间 2、 在myhome.aspx中,使用工具箱->标准:添加3个Label,1个Button。 3、设置控件属性: ID:Label1、Label2、Label3,btnLogout 设置 3 个 Label 标签的 Text 属性分别为:欢迎您来到您的空间! 设置 Button 的 Text 属性为:退出。 在这里插入图片描述

图1.4 密码的属性设置为不回显

4、在myhome.aspx.cs的Page_Load响应函数中: 通过 Session 变量,验证当前用户是否已登录,如未登录则重定向至login.aspx。 设置 Label2.Text 值为:当前用户名和密码,即 Session 中保存的用户名和密码 设置 Label3.Text 值为:输出当前系统时间。

在这里插入图片描述

图1.5 显示用户名、密码和时间

5、设置btnLogout的Click响应函数 退出当前 Session; 重定向到 login.aspx 窗体。

动态网页实验(二)

使用实验二.pdf 文档,通过 VS2010 创建简单的用户名/密码验证页面。(此处不赘 述)。

2、SQL Server2008 库/表。 1)启动 SQL Server2008 的 SQL Server Management Stuido,附加 NetSchool 数据库 (NetSchool_Data.MDF/NetSchool_Log.LDF),查看其中的 STUDENT/STUDENT_CLAS 表。 请通过查询,尝试相关 SQL 语句(Select、Insert、Update、Delete)并掌握。

在这里插入图片描述

图2.1 SQL语句的使用

2)创建数据库连接字符串,通过在 VS2010 中的服务器资源管理器中,添加数据库连接, 得到该数据库连接的 ConnectionString。【其中 SQL Server 身份认证为:sa/123456】 在这里插入图片描述

图2.2 SQL数据库链接

由于是在自己的计算机上做的,所以参数有些不同。

SqlConnection conn; conn = new SqlConnection("Data Source=(local);Initial Catalog=NetSchool;Integrated Security=True"); string str1 = @"SELECT * FROM [NetSchool].[dbo].[STUDENT] where USERID='" + strU + @"' and PASSWORD ='" + strP + "'"; cmd = new SqlCommand(str1, conn);

3)请根据第七章的 ADO.NET 中的面向连接访问方式,在 login.aspx 的 btnLogin 的 Click 事件中修改代码,使得原先的静态用户名/密码验证为,数据库 Netschool 中 Student 表 中已有的用户才能够登录。

3.1 静态用户名/密码验证代码(此次实验需要重新修改):

3.2 动态验证。支持当前 STUDENT 表中的所有用户能够登录当前系统。 图 2 连接式访问数据库程序框架

3.2.1 添加数据库托管程序支持:using System.Data.SqlClient;

3.2.2 根据图2 所示步骤,重写撰写 protected void btnLogin_Click(object sender, EventArgs e) { }响应函数。

3.2.3 其中判定是否有该登录用户名/密码,可利用 DataReader 对象的 READ 方法 或者 HasRows 属性,作为判断依据。

4.在 myhome.aspx 页面中添加 ListBox 控件、Button 控件。

4.1 修改 Button 控件:ID 为:btnSeachMyclass。Text 属性:查询

4.2 修改 ListBox 控件:ID 为:ListBMyClass。在 Page_Load 中,通过程序对其初 始化,添加一个 Item 项目“我所选修的课程”。

4.3 在对应的 btnSeachMyclass_Click(){ }函数中进行 Code,是的点击该按钮 后,将当前登录用户的所有选修课程的 ClassID 以 Item 的方式显示在 ListBox 控件中。 注意:login.aspx 中用户名输入,请输入 STUDENT 表中的 USERID 值。 在这里插入图片描述

图2.3 myhome页框展示

在这里插入图片描述

图2.4 所选修的课程显示 四、原理实验步骤

原理: 1、通过服务器控件获取用户输入后,合法用户则创建相应的Session变量,并进行合适的网页重定向。同时熟悉DateTime类。 2、通过服务器控件获取用户输入后,合法用户则创建相应的 Session 变量,并进行合适的网页重定向,并在 myHome.aspx 网页中显示相应的个人相关记录。其中:合法用户的判断规则:未使用数据库/表时,启用静态用户名/口令验证原则: 未使用数据库/表时,启用静态用户名/口令验证原则:否则,通过查询 MySite 数据库中 Users 表中是否有该用户/密码,为准。

实验步骤:见实验内容。

五、关键问题及解决方法

1、对于用户名和密码的显示需要跨页面传递数据,解决办法是利用Session进行跨页面的数据传递进行记录,

Session["S_uname"] = txtUserName.Text; Session["S_upwd"] = txtPwd.Text; Label2.Text = "当前用户为:" + Session["S_uname"].ToString() + "密码为:" + Session["S_upwd"].ToString(); Label3.Text = "当前时间为:" + System.DateTime.Now.ToString();

2、控件的操作很繁琐 解决办法是为每个空间配置相应的属性如ID和动作如Clicked等都很繁琐,还好VS的集成性很好,可以利用拆分的双视图进行编辑。 3、数据库的操作很繁琐 解决办法是可以在视图界面进行配置,包括控件的各种属性也是如此。在操作数据库的过程中,出现了很多的问题,由于对SQL SERVE数据库不熟悉,所以在处理解决问题上很费力,但还是没有很好的方法解决,通过查阅资料,向同学了解之后才能勉强做。

六、实验结果

最终我按照要求,利用VS,编写出了一个简单的动态网页,包括两个2 个 WEB 窗体:login.aspx,myhome.aspx。利用各种控件,实现了登录页面的验证与重定向,对于信息的记录显示与时间的展示以及退出函数的实现。还使用数据库进行了用户合法性的判断,还读取数据库中的数据到ListBox中显示给用户查询,效果如前面各个图片。

七、实验体会

通过本次实验,使得我对于网络程序设计有了更深的认识,也印证了我们在课堂上学习的内容,熟悉 了HTML 服务器控件,特别是 FORM 表单服务器控件的设置。印证了我们在课堂上学习的关于数据库的内容,熟悉了对于数据库的连接和对其中数据库数据的操作,熟悉了ListBox控件,通过对数据库数据来动态验证用户的合法性,更具有实用性。本次实验还使我对于VS的使用也有了很大的进步。 通过这次实验,我懂得了理论与实际相结合是很重要的,只有理论是远远不够的,只有把所学的理论知识与实践相结合起来,从理论知识与实践相结合,从理论中得出结论,才是真正的知识,才能提高自己的事迹动手能力和独立思考的能力。

附录:源代码(仅仅附上核心代码) 1.1网页login.aspx.cs或其他 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; public partial class login : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btnLogin_Click(object sender, EventArgs e) { string strU = txtUserName.Text; string strP = txtPwd.Text; SqlConnection conn;//定义一个连接对象 SqlCommand cmd;//定义一个命令对象 SqlDataReader rd;//定义一个读取数据对象 conn = new SqlConnection("Data Source=(local);Initial Catalog=NetSchool;Integrated Security=True"); conn.Open(); string str1 = @"SELECT * FROM [NetSchool].[dbo].[STUDENT] where USERID='" + strU + @"' and PASSWORD ='" + strP + "'";//此为SQL操作字符串 cmd = new SqlCommand(str1, conn); rd = cmd.ExecuteReader();//执行查询操作 if (rd.HasRows) { Session["S_uname"] = txtUserName.Text; Session["S_upwd"] = txtPwd.Text; rd.Close(); conn.Close(); Response.Redirect("myhome.aspx"); } else { Label3.Text = "请输入正确用户名和密码"; } } protected void btnReset_Click(object sender, EventArgs e) { txtUserName.Text = null; txtPwd.Text = null; } } 2.1网页myhome.aspx.cs或其他 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; public partial class myhome : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (Session["S_uname"] == null)//防止直接进入myhome窗体 { Response.Redirect("login.aspx"); } Label2.Text = "当前用户为:" + Session["S_uname"].ToString() + "密码为:" + Session["S_upwd"].ToString(); Label3.Text = "当前时间为:" + System.DateTime.Now.ToString(); ListBMyClass.Items.Clear(); ListBMyClass.Items.Add("我所需选修的课程");//在下拉列表中新增一项 } protected void btnSeachMyclass_Click(object sender, EventArgs e) { SqlConnection conn; SqlCommand cmd; SqlDataReader rd; conn = new SqlConnection("Data Source=(local);Initial Catalog=NetSchool;Integrated Security=True"); conn.Open(); string str1 = @"SELECT * FROM STUDENT_CLASS where USERID='" + Session["s_name"].ToString() + "'"; cmd = new SqlCommand(str1, conn); rd = cmd.ExecuteReader(); while (rd.Read())//常见的使用方法:循环调用SqlDataReader对象的read方法来遍历所有行 { ListBMyClass.Items.Add(rd["CLASSID"].ToString()); // ListBMyClass.Items.Add(new ListItem(rd["CLASSID"].ToString(), rd["CLASSID"].ToString())); } rd.Close(); conn.Close(); } protected void Button1_Click(object sender, EventArgs e) { } protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) { } protected void btnLogout_Click(object sender, EventArgs e) { Response.Redirect("myhome.aspx"); } } 2.3 数据库生成SQL语句[包括建库、建表语句;记录不需要]

Login.窗体中:

SqlConnection conn;//定义一个连接对象 SqlCommand cmd;//定义一个命令对象 SqlDataReader rd;//定义一个读取数据对象 conn = new SqlConnection("Data Source=(local);Initial Catalog=NetSchool;Integrated Security=True"); conn.Open(); string str1 = @"SELECT * FROM [NetSchool].[dbo].[STUDENT] where USERID='" + strU + @"' and PASSWORD ='" + strP + "'";//此为SQL操作字符串 cmd = new SqlCommand(str1, conn); rd = cmd.ExecuteReader();//执行查询操作 myhome窗体中: SqlConnection conn; SqlCommand cmd; SqlDataReader rd; conn = new SqlConnection("Data Source=(local);Initial Catalog=NetSchool;Integrated Security=True"); conn.Open(); string str1 = @"SELECT * FROM STUDENT_CLASS where USERID='" + Session["s_name"].ToString() + "'"; cmd = new SqlCommand(str1, conn); rd = cmd.ExecuteReader();


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有