ASP.NET-WebForm动态网站开发技术(学习笔记)一

ASP.NET-WebForm动态网站开发技术

ASP开发概述

静态网页与服务器技术 

静态网页 

  • 以.html或.htm结尾的网页
  • 只能单纯的显示文本和图像 
  • 无法和用户交互,无法根据用户的请求显示不同的网页内容(也就是无法和后台数据库交互) 

服务器端开发技术 

  • 不仅可以显示文本和图像 
  • 还可以根据用户请求,动态显示不同的网页内容(即,可以和后台数据库交互

B/S程序运行原理

ASP.NET概述

常见的服务器端开发技术 

  • PHP、 ASP、 ASP.NET、 JSP等等

ASP.NET 

  • 基于.NET平台,可以使用C#和VB.NET开发后台应用程序 
  • ASP.NET主要用来开发Web应用程序 
  • ASP.NET程序运行在IIS中 

了解IIS 

  • IIS(InternetInformation Services)是微软的Internet服务器 
  • IIS是 Windows servers 操作系统免费捆绑的组件
  • IlS是web应用程序运行的服务器

前端和后台交互基本测试

回顾表单的应用

表单在提交时自动将数据封装在Request对象中,并传给一般处理程序

后台数据的获取

后台由一般处理程序(HttpHandler)读取前台网页提交的数据一般处理程序必须实现IHttpHandler接口

 

 一般处理程序应用

结论:此种开发方式使得后台在绘制HTML页面时非常麻烦,对于复杂页面几乎无能为力

基于事件驱动开发

事件驱动开发简单应用

使用“控件+事件”方式实现计算器(和winform项目开发方式非常相似)

事件驱动开发的本质

观察服务器返回到浏览器端的HTML代码

内嵌代码

ASP.NET开发总结

ASP.NET web应用程序与网站比较

相同点

  • 1.两者可以开发web项目。
  • 2.两者基于事件机制编写程序。

不同点

  • 1.web应用程序在程序运行阶段不允许修改后台代码;网站在运行中可以随时修改后台代码,前台刷新即可。
  • 2.web应用程序命名空间管理方便,而网站项目命名空间不好区分。

ASP.NET web应用程序与网站选择

  • 一般场合:两种方式可以根据开发者喜好选择。
  • 大型项目:一般都选择web应用程序,因为程序框架清晰。

Web服务器

 

内置的开发服务器 IIS服务器

网站配置文件和网页生成过程

页面的Page指令

@Page指令定义了页面用于编译和解析的属性

关于配置文件

回顾:Windows应用程序的配置文件App.config

网站的配置文件

Web.config是网站的配置文件

根目录下的Web.config文件是整个网站的配置和管理中心

网页生成过程分析

网页生成过程总结

客户端点击提交按钮或者触发控件的事件

  • →服务器端刷新整个页面
  • →执行page_load事件
  • →执行具体控件的事件并给页面控制赋值
  • →重新生成新页面的HTML
  • →使用response对象返回包含新数据的html页面
  • 浏览器看到刷新后的页面

页面回发机制

页面内部数据传递

ASP.NET服务控件中按钮默认都是submit类型,能够提交表单。

_VIETSTATE这个隐藏域就是用来将页面的控件状态保存起来,并且在服务器端和客户端“反复传递”

理解回发

理解网页的首次加载和回发加载的时机

理解回发

  • 产生的时机:当用户操作让表单产生submit时产生回发。
  • 原理分析:当前网页被提交给服务处理,处理时服务器会对当前网页再次加载(重新绘制)。
  • Load事件:不管是首次加载还是回发,网页都回激发一个Load事件。

回发引出的问题

在页面的Load事件中对网页内容初始化

“回发”和“首次加载”

Page对象

关于Page对象

  • 每个.aspx文件对应一个Page对象
  • .aspx页面与后台代码类(局部类)合并生成页面类
  • Page对象是页面类的实例
  • 所有的.aspx文件(Web窗体页)都继承自System.Web.UI.Page

Page对象的属性和事件

Request和Response对象的使用

请求与响应

 

Request与Response对象产生的时机

 

Request与Response对象的本质

  • Request对象其实是HttpRequest对象,在页面类中系统自动创建。
  • Request对象封装了用户请求的信息(用户输入的信息或URL参数)。
  • Response对象封装服务器的响应信息。

Request对象

Request对象如何获取传递过来的数据?

  • QueryString属性(查询字符串):获取通过URL路径传来的数据
  • Form属性(表单数据):获取通过表单提交传输的数据
  • ServerVariables属性:获取Web服务器变量的集合
  • Params属性:以上三种方式传输的内容都可以使用该属性获取

QueryString属性

使用QueryString属性获取URL参数

Params属性

使用Params属性获取URL参数

通过表单提交数据(和HttpHandler获取参数完全相同)

ServerVariables属性

获取Web服务器变量的集合

Response对象

Response对象用于操作页面的输出流

Write方法:直接在页面上输出内容(在页面的最顶端输出)

Redirect方法:重定向到另一个页面(通过后台程序控制页面跳转)

ViewState对象

由计数器引出的问题

实现一个按钮计数器,每次点击显示单击总次数

分析结果

  • 计数器变量值没有被保存,每次点击的时候都会被初始化为0。
  • HTTP协议是“无状态”的,造成服务器无法记住特定用户的请求。

HTTP协议的无状态

理解无状态特性

  • Web服务器不会保留每次浏览器所发HTTP请求的具体信息和当时的状态。
  • 即使请求来自同一个浏览器,它也将其视为“陌生人”,绝不会“记得”浏览器在不久之前曾经“拜访”过自己

在ASP.NET后台中,不再有“成员变量

在ASP.NET后台中信息保存办法

  • ASP.NET专门提供了在一个网页多次请求之间保存信息的对象:ViewState(视图状态)对象来模拟“成员变量”的角色。

使用ViewState实现页面信息的保存

总结

ViewState中保存的数据全部被转换成object类型,取出时务必强制转换成特定类型。

ViewState只能在同一个页面的连续多次请求之间保存信息,页面跳转后信息就会丢失。

Session对象

不同页面之间信息共享

  • ViewState对象无法实现不同页面数据交换
  • 有时需要在一个页面操作的数据在另一个页面访问
    •   典型应用:购物网站中用户选择不同商品后,在购物车页面中显示
  • 在ASP.NET中不同页面之间共享信息的办法
    • Session(会话)对象
    • 和ViewState对象一样是“键--值”对存取数据

使用Session实现简单购物车

Session原理分析

问题:不同用户在选择商品时,Session如何区分不同用户的选择?

  • Web服务器根据SessionlD来区分不用用户,它是一个很长的字符串。
  • SessionlD在用户第一次访问时由Web服务器产生并由用户浏览器保存。
  • 用户每次的操作,浏览器在向服务器请求时都会带着自己的SessionlD。

SessionlD的查看

问题:Web服务器如何判断用户是第一次请求并为其生成SessionlD?

  • 情况1:用户第一次打开浏览器并登录网页,浏览器中没有任何SessionlD。
  • 情况2:用户把当前网站的网页全部关闭,再次登录网页,前面的SessionlD就会丢失。
  • 情况3:用户使用不同浏览器登录网页,不同浏览器之间Session无法共享。

Session实现典型对象登录

Session应用和属性

典型应用

  • 不用页面之间需要传递较为复杂的数据(如对象)
  • 保存用户的登录信息,未登录者禁止访问相关页面。

属性和方法

使用Session保存登录信息

Web程序中用户登录逻辑分析

Cookie对象的使用

Cookie对象

Cookie对象的特点

  • 存储少量不重要的数据
  • 存储在客户端的文本文件中(必须设置有效期,否则不被存储)
  • 安全性差
  • 存储的数据类型—一字符串
  • 浏览器窗口无关,但与访问的站点相关
  • 具体特定的过期时间和日期
  • 在客户端存储后,将随着浏览器对相关网站页面请求而一并发送到Web服务器

Cookie文件的位置

  • Win7中:C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Cookies

创建方法一:

  • Response.Cookies[Cookie的名称].Value =变量值;

创建方法二:

  • HttpCookie hcCookie=new HttpCookie(Cookie的名称,变量值);
  • Response.Cookies.Add(hcCookie);

读取方法:

  • string 变量名=Request.Cookies[Cookie的名称].Value;

注意:创建Cookie使用Response对象;读取使用Request对象

Application对象

Application对象

如何统计一个站点被访问的次数?

  • Application对象:应用程序级别的数据保存

Application特征:

  • 位置:服务器内存,执行速度快。
  • 使用范围:整个应用程序。
  • 类型:任意类型。
  • 生命周期:应用程序开始创建到销毁。

使用方法与Session一样采用“键--值”对方式

Global.asax文件

全局应用程序类:

  • Global.asax处理应用程序级事件的可选文件。
  • 必须放在在应用程序的根目录下。

Application对象应用

实现用户访问量、在线人数的统计

读取Application对象

ASP.NET常用对象比较

 

 

END

 

posted @ 2022-08-23 23:04  云谷の风  阅读(821)  评论(0编辑  收藏  举报