动态网页制作实验

动态网页制作实验

一、 实验目的

  1. 熟悉 VS 2010 开发环境,学会使用 VS 构建网站基本结构
  2. 熟悉 HTML 服务器控件,特别是 FORM 表单服务器控件的设置
  3. 掌握表单处理方法
  4. 掌握服务器内置对象:Request、Response、Session等内置对象的使用
  5. 掌握ASP.NET日期时间类
  6. 掌握在 MSSQL 2008 创建数据库、数据表,并能使用 SQL 语句进行表操作熟悉 HTML 服务器控件,特别是 FORM 表单服务器控件的设置(SELECT、INSERT、UPDATE、DELETE)
  7. 掌握 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();
本书展示一个完整网站的设计和实现过程,详细地介绍动态网页设计和制作的技术和相关理论,全书共分为8章,主要内容包括:动态网站设计概述、动态网站编程环境、网站主页设计与PHP基础、网站计数器设计与PHP文件访问、会员注册和管理设计与数据获取、网上社区设计与PHP数据库访问、网上购书与PHP面向对象技术、网站优化与PHP的高级功能等,本书内容系统全面,案例典型实用,讲述直观详尽,非常适合动态网页设计与制作的初学者使用,还可作为高等院校教材和“实用型”人才培训教材。 目录 第1章 动态网站设计概述 1.1 动态网站的特点 1.2 动态网站的运行机制 1.2.1 域名 1.2.2 网页 1.2.3 浏览器 1.2.4 服务器 1.3 动态网站的规划 1.3.1 确定网站的类型 1.3.2 确定网站的主题 1.3.3 确定网站的整体风格 1.3.4 确定网站的内容 1.3.5 规划界面 1.3.6 规划站点的目录结构和链接结构 1.3.7 编写网站策划书 1.4 动态网站开发前的准备 1.4.1 申请域名 1.4.2 接入Internet 1.4.3 选择软硬件平台 1.4.4 选择网站建设服务商 第2章 动态网站编程环境 2.1 动态网页编程环境的构成要素 2.1.1 操作系统 2.1.2 服务器端程序 2.1.3 程序语言 2.1.4 数据库 2.1.5 基于PHP常见动态网站开发环境 2.2 安装和配置Apache 2.2.1 安装Apache前的准备 2.2.2 安装Apache 2.2 13测试Apache 2.2.4 配置Apache 2.2.5 在Windows上管理Apache 2.3 安装和配置PHP 2.3.1 安装PHP前的准备 2.3.2 安装PHP 2.3.3 配置PHP 2.3.4 测试PHP 2.4 安装和配置MySQL 2.4.1 安装MySQL,前的准备 2.4.2 安装MySQL 2.4.3 配置MySQL 2.4.4 在Windows上手动启动和停止MySQL 2.4.5 安装phpMyAdmin 2.5 AppServ组件安装 2.5.1 安装AppSery前的准备 2.5.2 安装。AppSery 2.5.3 测试AppSery 2.5.4 配置Apache 2.5.5 修改MySQL服务器的密码 2.6 PHP的集成开发环境 2.6.1 Dream weaver开发工具 2.6.2 Eclipse开发工具 2.6.3 其他开发工具 第3章 网站主页设计与PHP基础 3.1 网站主页的设计 3.1.1 主页中的页面元素, 3.1.2 规划主页的结构 3.1.3 布局页面版式 3.1.4 用Fireworks创建网页模型 3.2 网站主页的实现 3.2.1 在Dream weaver中创建网站 3.2.2 布局页面元素的样式 3.2.3 实现主页的结构 3.2.4 编辑主页的栏目内容 3.3 网站主页中的链接策略 3.4 PHP语言基础 3.4.1 PHP的程序结构 3.4.2 PHP的句法结构 3.4.3 PHP的数据类型 3.4.4 PHP的控制语句 第4章 网站计数器设计与PHP文件访问 4.1 网站计数器的设计 4.1.1 系统架构 4.1.2 系统设计 4.2 网站计数器的实现 4.2.1 文本输出的网页计数器 4.2.2 图片输出的网页计数器 4.2.3 调试代码 4.3 PHP的函数 4.3.1 PHP函数概述 4.3.2 白定义函数 4.3.3 PHP内置函数 4.4 PHP访问文件 4.4.1 PHP支持的文件系统 4.4..2 PHP访问文件的方法 4.4.3.PHP访问目录 4.5 文件管理器 第5章 会员注册和管理设计与数据获取 5.1 会员注册和管理概述 5.2 会员注册和管理设计 5.2.1 系统架构 5.2.2 系统设计 5.3 注册模块的实现 5.3.1 页面样式表 5.3.2 网页的头部、尾部和数据库连接文件 5.3.3 注册的主页和处理程序 5.3.4 用户申请购书卡页和处理程序 5.3.5 注册用户资料页与处理程序 5.3.6 调试代码 5.4 会员管理模块的实现 5.4.1 页面样式表 5.4.2 网页的头部、尾部和连接数据库 5.4.3 会员管理的主页 5.4.4 用户分级登录页和处理程序 5.4.5 用户购书卡专区页和处理程序 5.4.6 会员修改资料页与处理程序 5.4.7 会员找回密码页与处理程序 5.4..8 购书卡管理页与处理程序 5.4.9 调试代码 5.5 表单数据处理 5.5.1 PHP与表单 5.5.2 表单数据的采集 5.5.3 表单数据处理描述 5.6 cookie与会话管理 5.6.1 数据传递概述 5.6.2 cookie 5.6.3 会话管理 第6章 网上社区设计与PHP数据库访问 6.1 网上社区概述 6.2 留言板的设计 6.2.1 留言板的架构 6.2.2 留言板的设计描述 6.3 留言板的实现 6.3.1 网页的头部、尾部和系统配置文件 6.3.2 留言板的主页——欢迎页 6.3.3 写留言页和回复留言 6.3.4 浏览留言主题页 6.3.5 浏览主题留言页 6.3.6 管理员登录页 6.3.7 屏蔽和删除留言页 6.3.8 调试代码 6.4 聊天室的设计 6.4.1 聊天室的架构 6.4.2 聊天室的设计描述 6.5 聊天室的实现 6.5.1 网页的头部、尾部和系统配置文件 6.5.2 聊天室的主页——登录页 6.5.3 聊天室页 6.5.4 浏览聊天信息页 6.5.5 离开页 6.5.6 注销页 6.5.7 调试代码 6.6 PHP访问数据库 6.6.1 PHP访问数据库的机制 6.6.2 连接数据库服务器 6.6.3 PHP数据库管理函数 6.6.4 PHP查询数据函数 6.6.5 其他数据管理工具 第7章 网上购书与PHP面向对象技术 7.1 网上购书系统分析 7.1.1 系统工作流程分析 7.1.2 系统功能模块分析 7.2 网上购书系统设计 7.2.1 模块的逻辑结构设计 7.2.2 数据库设计 7.2.3 数据操作类设计 7.2.4 界面设计 7.3 网上购书系统实现 7.3.1 数据操作类 7.3.2 图书查询 ’7.3.3 图书显示处理 7.3.4 购物车 7.3.5 订单处理 7.3.6 调试代码 7.4 PHP面向对象技术 7.4.1 基本概念 7.4.2 定义类 7.4.3 创建对象 7.4.4 使用对象的属性和方法 7.4..5 对象的操作 第8章 网站优化与PHP的高级功能 8.1 用户注册安全管理 8.1.1 用户注册安全管理的策略 8.1.2 优化用户注册页面 8.1.3 PHP的GD函数库 8.1.4 图片缩略图 8.2 图像文件上传处理 8.2.1 网站图像存储策略 8.2.2 上传图书封面图像 8.2.3 PHP文件上传处理 8.3 电子邮件处理 8.3.1 PHP电子邮件处理概述 8.3.2 向客户发送邮件 8.3.3 PHP发送电子邮件的方式 8.4 正则表达式 8.4.1 正则表达式简介 8.4.2 常用表单项验证 8.4.3 正则表达式的法则 参考文献
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李霁明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值