WEB基础知识:

WWW一个大规模在线式信息储藏所。

浏览器:交互式应用程序。(C/S架构,瘦客户端)

  • HTTP协议:超文本传输协议,无状态协议。此处注意的是HTTP协议下的网络连接是即时性的,一旦传输完毕则立即关闭。
  • WEB服务器:一种可以管理各种web文件并为提出HTTP请求的浏览器提供Http相应的软件。常见的为apache与IIS。
  • 静态网页:纯HTML网页。简单可靠和性能。预先定义的格式存在。
  • 动态网页:可以为不同需求提供个性化服务,服务器根据客户端访问即时解释(或翻译)创建的
    • 常见客户端技术:JavaScript、VBScript、JavaApplet
    • 常见服务器端技术:CGI、PHP、ASP、JSP、ASP.NET

ASP.NET简介:完全给予模块和组件。

  • 基本概念
    • Client:客户端,接受服务的一端。Server:提供服务的一端。
    • Request:请求,Response:响应
    • CGI(单请求单进程)、ISAPI(单进程共享用户、DLL编译进进程,C语言)
    • Microsoft.NET:一个开发平台,包括用于创建和操作新一代服务的.NET基础结构和工具。
    • WEB Service:.NET支持将软件做成服务的方式执行。Web Service则是在Internet上的程序逻辑。此处运用的面向对象的思想(当然也可以说是面向服务,SOA深层追究起来,还是面向接口编程,仍旧是面向对象的发展衍生)
  • 发展史
  • ASP.NET与ASP区别:编译型与解释型,ASP以脚本语言为核心(导致无法底层操作)
  • 工作原理:客户端访问WEB服务器,WEB服务器调用相关页面,查询相关数据然后生成页面返回浏览器。(ASP与ASP.NET都是这般)。ASP.NET独有的思想:程序被访问时,首先编译,生成MSIL语言,然后MSIL再被编译成机器码执行。

    引入MISL语言的原因:

    • 通过JIT(即时)编译器将MSIL编译成机器码,这样通过不同的JIT可以生成不同的机器码,从而实现跨平台(不同的计算机系统支持不同的JIT编译器)
    • .NET框架的要求。.NET框架需要支持多种语言混合编程,所以需要一个统一的中间层语言MSIL。
    • 运用MSIL作为中间便一层的寄存器,这样只有第一次被访问时缓冲较长,后面将直接调用编译后的文件,因此执行速度非常快。(至于为什么不寄存生成好的页面,而只是保存在生成中间过程的页面,此处自己可以理解)

建立ASP.NET运行环境:

  • IIS:Microsoft Internet Information Service,运行在Wins系统下的WEB服务器。
  • MDAC:Microsoft Data Access Components。
  • .NET Framework和ASP.NET

开始编写ASP.NET程序

  • 开发环境选择
  • VS.NET

 

C#语言基础(不做笔记了)

 

HTML控件和WEB服务器控件

ASP.NET是给予控件设计的,对HTML控件的功能进行了扩展。同时ASP.NET自身也提供了一些服务器控件。所以ASP.NET有两种服务器控件:

  • HTML控件
  • WEB服务器控件

 

HTML控件:

  • 必须属性
    • runat ="server " 因为此处是服务器空间
    • id =" name " 因为是面向对象的,每一个控件就是一个对象实例,对象实例必须有自己的名字,而且在文件作用域范围是唯一的(此处的文件作用域是全局)
  • 可选属性(稍微列举部分HTML控件公有属性)
    • Attributes:用于获取ASP.NET页面上的服务器控件标记所表示的所有属性名称和值。需要注意的是在HTML服务器控件中操作Attributes集合和操作ViewState相同。

      语法:HTML控件名.Attributes(HTML标记属性名)="属性值"

    • Disabled:设置或者获取一个值,该值只是当HTML控件呈现在浏览器上时是否包含Disabled属性,若包含该属性将使该控件成为只读控件。

      语法:HTML控件名.Disabled=布尔值

    • InnerHtml:该属性用来设置某容器控件中的文字。此处支持HTML语法
    • InnerText:同上,不同点在于输出的为纯文本,不支持HTML语法解析
    • Style属性:DHTML新增属性,设置控件外观样式。
    • Value属性:设置控件的值,用于上下文逻辑运算
  • WEB表单(Form):
    • WEB页:HTML代码标记组成的页面,所有的HTML代码都包含在<html></HTML>之间
    • HTML表单:web页中多个<form></form>之间所定义的控件组,用让用户输入数据并提交给WEB服务器进行处理。包含了表单内部控件以及响应的布局信息
    • WEB表单:形式上同HTML表单一致。不同点在于WEB表单包含了表单内部控件、相应的布局信息以及数据提交之后的数据处理代码。

    注意:<form></form>标记是一个饿容器,表示其中的内容是可以返回到web服务器的。如果不定义表单不能实现用户输入数据的提交。表单又两个重要的属性:

    • Action:指定对表单进行处理的脚本的地址。(也就是说表单被提交到服务器端后由谁来处理)在action中指定处理者的URL。
    • Method:
      • Post:将表单中的信息作为一个数据块发送到服务器端。
      • Get:默认方法。提交的数据被附加到URL(在ACTION中指定)的末端,作为URL的一部分发送到服务器端。

      两者之间的区别:

      HTTP 定义了与服务器交互的不同方法,最基本的方法是 get post。事实上 get 适用于多数请求,而保留 post仅用于更新站点。根据 HTTP 规范,get 用于信息获取,而且应该是安全的和幂等的。所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,get 请求一般不应产生副作用。幂等的意味着对同一 URL的多个请求应该返回同样的结果。完整的定义并不像看起来那样严格。从根本上讲,其目标是当用户打开一个链接时,她可以确信从自身的角度来看没有改变资源。比如,新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。反之亦然。post请求就不那么轻松了。post 表示可能改变服务器上的资源的请求。仍然以新闻站点为例,读者对文章的注解应该通过 post请求实现,因为在注解提交之后站点已经不同了(比方说文章下面出现一条注解);
      FORM提交的时候,如果不指定Method,则默认为get请求,Form中提交的数据将会附加在url之后,以?分开与url分开。字母数字字符原样发送,但空格转换为"+"号,其它符号转换为%XX,其中XX为该符号以16进制表示的ASCII(或ISOLatin-1)值。get请求请提交的数据放置在HTTP请求协议头中,而post提交的数据则放在实体数据中;
      get
      方式提交的数据最多只能有1024字节,而post则没有此限制。
      在表单里使用"post""get"有什么区别
      Form里面,可以使用post也可以使用get。它们都是method的合法取值。但是,postget方法在使用上至少有两点不同:
      1
      get方法通过URL请求来传递用户的输入。post方法通过另外的形式。
      2
      get方式的提交你需要用Request.QueryString来取得变量的值,而post方式提交时,你必须通过Request.Form来访问提交的内容。

       

WEBFORM组成:

  • 指令(Directives):可以放在页面的任何地方,作为习惯,通常那个放在文件开头。非必需。语法:<%@Cmd Attr="Value %>.
    • @page:定义该页面被解析器和编译器处理的方式。每个页面只能包含一条@page指令。此可以省略不写(因为是asp.netwinform的默认指令)
      • AspCompattrue/false。默认值false。设置为true时,可以是该page运行与一个STA线程,可以调用其他STA组件,性能较低。
      • AutoEventWireUptrue/false。指定页面的事件是否自动传送,默认true
      • Buffertrue/false。指定HTTP响应缓冲是否有效,默认true
      • ClassName:指定页面被请求时被自动动态编译的类。
      • ClientTarget:指定用户代理或其他别名,一边ASP.NET服务器控件为该代理程序生成相应内容。
      • CodePage:如果使用了运行页面的WEB服务器上默认代码页之外的代码页,则必需指定代码页,该代码页必需存在创建该页面的计算机上。
      • ComplierOptions:编译器选项,指定编译该页时的行为。
      • ContentType:指定响应的HTTP Content Type
      • Debug:指定编译该页面时,是否加入调试信息
      • EnableSeesionStatetrue/ReadOnly/false。是否以及何种方式使用Session状态。默认true
      • EnableViewStateMactrue/false。指定是否在页面从客户端回传时运行计算机身份正确性检查。
      • Errorpage:定义一个重定向的页面。
      • Language:指定内敛代码和代码声明端中代码使用的语言
      • ResponseEncoding:指定页面内容的编码方法
      • Trace:指定页面跟踪是否有效,用在调试页面。默认false
      • TraceMode:当Trace设置true时,用于设置跟踪信息显示方式。SortByTime/SortByCategory。默认前者。
    • @import:现实导入一个命名空间,是页面可以使用该命名空间中的类和接口。
  • 代码声明段(Code Declaration Blocks):定义成员变量和方法,这些成员变量和方法是表示ASP.NET页面和用户控件的page类或UserControl类的成员。

    语法:

    <script runat="server" language="##" src="##">

    Code……

    </script>

    其中language如果没有指定,则默认@page中的语言。(如果代码段存在用户控件,那么则默认是用户控件的language属性的值)

  • 内联代码段(Code Render Blocks):定义了内联代码或者内联表达式,当页面生成HTML代码的阶段时这些代码和表达式将被执行。

    语法:

    内联代码段:<%inline code%>

    内联表达式:<%=inline expression%>

    内联代码使用Response对象输出HTML代码。在内联代码中企图输出"%>"是错误的,但可以string s="%"+">",然后输出sResponse.Write(s);

  • 服务器端的注释(Server-Side Comments):格式:<%-- comments -->。提示:在代码段和内联代码段中可以使用代码语言所允许的注释语法,而不是服务器端注释语法。如:

    <script runat="server" language="C#">

    //C# line comment

    /*C# block comment*/

    </script>

  • 服务器端包含指令(Server-Side Include Directive Syntax):服务器端报刊指令用来将指定文件的内容插入到asp.net页面中,语法:<!--#include file|virtual = filename-->。属性file指定了要包含的文件自爱服务器上的物理路径,可以是绝对的,也可以是相对的,但必需位于页面的统一路径下,或者页面所在的路径的子目录下。Virtual则指定了一个网站上的虚拟路径,和file一样可以绝对也可以相对。属性值为文件名filename,并以引号包含。包含的文件在任何动态代码被执行前处理,类似与C语言的#include机制

 

Anchor控件:该控件是HTML中几乎可以说是最常用的控件,ASP.NET中对这个控件的扩展主要是增肌了一个OnServerClick属性,指明当单击这个连接的时候可以产生什么样的事件。

  • HrefURL地址,欲连接的地址
  • Target:如果设帝国网页框架,则可将欲开启的连接开启到指定的框架。_blank_self_parent_top或者具体值
  • Title:鼠标移动到控件上的小提示
  • Name:书签名称

 

Button控件:最重要的还是OnServerClick

InputButton:最重要的还是OnServerClick

InputCheckBox:复选框

InputRadioButton:单选框。此处需要注意的属性是name属性,当一组需要关联的时候,一定要将name属性设置一致。

HtmlImage

  • Src图片文件地址
  • Width Height Border Align
  • Alt:图片无法加载时显示的文字或者鼠标移动到图片上显示的文字

InputFile:包含内置的Browser按钮,利用它程序员可以将文件从客户端传到服务器的某个指定目录。

  • Accept:获取或者设置用都好隔开的MIME编码列表,这个列表可限制浏览器允许用户选择的文件类型
  • MaxLength:返回文件路径的最大长度。获取或者设置从客户端上传文件的最大路径长度
  • PostedFile:用于访问客户端指定的上床文本。返回值是System.Web.HttpPostedFile。他可以访问要上传的文件,问了确保安全,并不会在各个请求过程中保留这个值
  • Size:获取或者设置文件路径文本框的宽度

 

WEB服务器控件:

公共属性:

  • AccessKey:快捷键
  • Backcolor BorderWidth Bordercolor Borderstyle Enabled Font Height Width TabIndex ToolTip Visible

具体控件:

  • 用于文本输入和显示的内部控件:
    • TextBox:可取代HTML<Input Type="Text"/"Password">以及<TextArea>三种控件
    • TableTableRowTableCell
      • BackImageUrl
      • CellPadding
      • CellSpacing
      • GridLines设定表格的水平线或者垂直线是否出现
      • HorizontalAlgin:设定水平对齐方式
      • RowsTableRow集合对象
      • Label
  • 用于控制传送的内部控件:把控制权交给服务器或者其他页面。
    • Panel:群组控件,可以让人们决定Panel中的控件是否要显示出来
    • Button:标准的提交按钮控件。功能是出发接受者的Click事件。
    • LinkButton
    • ImageButton
    • HyperLink
  • 用于选择的列表控件
    • CheckBox
    • CheckBoxList
    • DropDownList
    • ListBox:对于CheckBoxList以及RadioButtonList的一个整合
    • RadioButton:通过GroupName来绑定彼此之间的关系
    • RadioButtonList:可以管理很多子项,让彼此的关系通过一个对象展现出来,从而方便管理且加快效率。
    • ListItem:不可以独立存在,依附于RadioButtonListDropDownList以及CheckBoxList控件存在,一个ListItem代表一个ListControl控件的选项内容。

Page.IsPostBack:检测页面是否是第一次加载,第一次加载则为false,否则为true

AutoPostBack:以TextBox为例子,如果设置为true,则当使用者按下Enter或者Tab让光标离开该控件时,则出发OnTextChange事件,并触发Page_load事件。

 

ASP.NET常用内置对象:

  • Request
  • Response
  • Application
  • Session
  • Server

 

Response对象:主要用于输出数据到客户端,其正确类别名称是HttpResponse,和Request一样,属于Page对象的成员,所以也是不用声明便可以直接使用的对象。

  • Buffer 表明页输出是否被缓冲。
  • CacheControl 决定代理服务器是否能缓存 ASP 生成的输出。
  • Charset 将字符集的名称添加到内容类型标题中。
  • ContentType 指定响应的 HTTP 内容类型。 默认值是Text/Html,也可以是用image/gif来表示gif图形。
  • Expires 在浏览器中缓存的页面超时前,指定缓存的时间。
  • ExpiresAbsolute 指定浏览器上缓存页面超时的日期和时间。
  • IsClientConnected 表明客户端是否与服务器断开。
  • Pics 将 PICS 标记的值添加到响应的标题的 PICS 标记字段中。
  • Status 服务器返回的状态行的值。
  • Cookies Cookie集合
  • AppendToLog 在该请求的 Web 服务器日志条目后添加字符串。
  • BinaryWrite 将给出信息写入到当前 HTTP 输出中,并且不进行任何字符集转换。
  • Clear 清除任何缓冲的 HTML 输出。
  • End 停止处理 .asp 文件并返回当前的结果。
  • Redirect 将重指示的信息发送到浏览器,尝试连接另一个 URL。
  • Write将变量作为字符串写入当前的 HTTP 输出
  • Flush 立即发送缓冲的输出。
  • Close 关闭客户端的联机
  • AddHeader:从名称到值设置HTML标题
  • ClearHeaderrs:将缓冲区中所有的页面表头清除

 

Request对象:对象在 HTTP 请求期间,检索客户端浏览器传递给服务器的值 。

  • ApplicationPath:传回目前正在执行程序之伺服端的虚拟目录。
  • Browser:传回有关客户端浏览器的功能信息
  • ClientCertificate:传回有关客户端的安全认证信息
  • ConnectionID:传回目前客户端所发出的网页浏览请求的联机ID
  • ContentEncoding:传回客户端所支持的字符设定
  • ContentType:传回目前需求的MIME内容类型
  • Cookies:传回一个Cookie对象集合
  • FilePath:目前执行网页的相对地址
  • Files:客户端上传文档集合
  • Form:有关窗体变量的集合
  • Headers:有关HTTP标头的集合
  • HttpMethod:传回客户端HTTP数据传输方式
  • IsAuthenticated:传回HTTP联机是否有效
  • QueryString:传回附属在网址后面的参数内容

主要方法:

  • MapPath:传回实际路径 语法 MapPath(ByVal 虚拟路径 As String) As String
  • SaveAs:将HTTP请求的信息存储到磁盘中。
  • Get:服务器端采用QueryString("ParameterName")获取参数值(注意,此处得到的都是字符串,需要强制类型转换成需要的类型)
  • Post:数据用Request.Form集合来读取。同样此处得到的都是字符串,需要根据实际情况强制转换。
  • 使用环境变量:通过ServerVariables属性可以得到一个浏览器工作环境的对象,通过该对象的属性可以访问客户端的系统、主机IP等等详细信息。
  • 获取浏览器信息:通过Browser属性可以获得一个浏览器的对象,从而可进一步访问其属性

 

Application对象:Application对象在整个应用程序的生存周期都是有效的,因而可以当作全局变量一样使用,也可以在多个页面之间共享。Application对象变量的生命周期止于IIS服务的关闭或者使用Clear方法清除。

语法:Application("varName")="value"

  • Allkeys:返回应用年高中保存的公用对象的名字数组。
  • Contents:返回this指针,主要是为了兼容ASP而保留
  • Count:返回当前应用中保存的公用对象的数目
  • Item:返回当因每个应用中保存的公用对象集合中的指定对象。Application.Item(VarName)=object。通常会省略Item协会曾Application(变量名)=要保存的对象。这里需要注意的是Application保存的对象是应用程序所共享,而.NET平台是一个多用户多线程的环境,因为在使用的时候要注意避免冲突。
  • StaticObjects:返回在应用程序文件中形如:<object runat=server></object>定义的对象的集合。
  • Add:加入一个对象到Application对象的Stat集合中。语法:Application.Add("name","value");
  • Remove:根据标识从Application对象的Stat集合中删除。Appliaction.Remove("name");
  • RemoveAll:全部清除
  • Clear:作用和RemoveAll一样
  • Get:根据名字或者下标来获得指定的对象元素。Application.Get("name");Appliaction.Get(0)
  • Set:根据指定标识活下标修改值。Application.Set("name")=value;
  • GetKey:根据下标获得标识名。Application.Getkey(0);
  • LockUnlock方法:解决多线程冲突问题。
  • Appliaction_onstartApplication对象的生命周期开始时触发的事件。该事件是在global.asa中定义实现体。
  • Application_onendApplication对象的生命周期结束时触发的事件
  • Application_BeginRequest
  • Application_EndRequest

 

Session对象:存储跨网页程序的变量或对象。SeesionApplication的不同点是Session是针对单一网页使用者的,也就是说每个联机的计算机都有各自的Session对象变量,不同的联机之间无法互相存取。Session的生命周期止于联机计算机的离线,也就说当网页使用者关掉浏览器或者超过设定的Session变量对象的有效时间,Session对象变量就会自动消失。其使用方式与Application类似。

常用属性:

  • All:返回全部的Session对象变量到一个数组
  • Count:返回Session对象变量的个数
  • Item:根据索引值或者变量名来回传或设定变量内容
  • TimeOut:设定有效时间。

方法:

  • Add
  • Clear
  • Remove
  • RemoveAll

事件:

  • Session_Start
  • Session_End

 

Server对象:

属性:

  • MachineName:传回Server端计算机的名称,String
  • ScriptTimeOut:用于传回请求超时的时间,Int

方法:

 

Cookie:类别名:HTTPCookie。在ASP.NET中采用的是面向对象的方法来创建Cookie,所有Cookie都是由HttpCookie类创建的。把需要在Cookie中保存的信息准备好之后,再用Reponse对象的AppendCookie方法,把这个Cookie写到客户端的硬盘上。对于每个Cookie最好不要大于4KB,因为每个cookie的设置都回导致数据在客户的计算机和服务器之间的传送,这样会增加网络的流量。从而导致网络的负担家中。此外不要把敏感的信息存储在这里。

  • 创建永久性CookieCookieExpires属性,datetime类型,设置过期时间。
  • 使用Cookie字典:Cookie.value.Add("key","value");
  • 检索Cookie:写Cookie用的是Reponse对象,读则需要使用Request对象。Request.Cookies("CookieName")("key")
  • 检测用户是否使用了Cookie
    • 使用Session对象进行检查:Session中存储某些信息时,他可以在随后的页面中访问,如果后面的页面这个值不存在,则说明未开启cookie
    • 通用方法:在客户端保存一Cookie,然后立即访问该Cookie,如果值一样,则开启,否则禁止。
    • navigator.cookieEnabled

 

 

Asp.NET高级编程

Page类:

工作流程:HTTP请求到达->IIS识别ASPX文件请求->调用ASP.NET模块->ASP.NET模块将该页面放在ASP.mypage_aspx类中,生成一个心的类->新生成的类被实例化为一个CLR中的对象->在该对象上调用一种显示方法->该显示方法通过aspnet_isapi.dllIIS返回相应HTML->IIS将得到的HTML作为HTTP响应返回提出请求的客户端。

Page类就是上述流程中动态生成的类。

命名空间:System.Web.UI

  • 页面状态:Web表单与HTML表单的重大区别在于Web表单会保存很多状态信息,但HTTP是无状态的协议,如果由服务器端保存,则服务器容易超载。所以此处思想是让页面自己保存自己的状态,解决方案就是Page类的ViewState属性,所有页面在两次请求之间会自己保存自己的viewstate
  • 页面指令:
    • @page指令
    • @import指令 <%@import NameSpace="namespace"%>
    • @Implement指令:可以在页面中实现一个.NET接口,当实现接口的时候,要确定页面支持接口所定义的属性方法和事件,者对于用户自定义控件的使用十分重要。

      语法: <%@Implements Interface="interface"%>

    • @Register指令:如果用户编写了自定义控件,就必需要告诉编译器有关这个控件的内容、位置等信息。如果不能给编译器以足够的信息,那么就会导致编译错误,这是需要使用@register指令。

      语法:

      <%Register TagPrefix="形容自定义控件实例的字符串",TagName="在页面中的控件名称" Src="控件的位置"%>用于写好的控件的引用

      <%Register TagPrefix="形容自定义控件实例的字符串",NameSpace="命名空间" Assembly="可执行程序的名字"%>用于自行编写的.dll或者exe的引用。

    • @Assembly指令:用于直接引用一个dll或者exe文件这样的配件,以便页面中的程序可以直接使用这个装配件中的定义的类和接口。语法:<%@Assembly src="pathname"%>或者<%@Assembly Name="assembleyname"%>
    • @Reference指令:用于识别当前页面在运行期间应该动态编译和连接的页面或者控件
  • 事件驱动:

    典型事件:

    • Page_Init:初始化工作
    • Page_Load:加载工作
    • Page_Unload:收尾工作

 

 

ASP.NET的其他WEB控件:

  • 日历控件:
  • 广告控件

验证控件

posted on 2010-05-26 13:04  BLoodMaster  阅读(2482)  评论(0编辑  收藏  举报