在asp.net中一个网页或窗口被看成一个web form,web form 被看成是一个对象而被赋予了属性、方法,事件。.net架构里面一个比较重要的概念就是"对象":所有的控件都是对象,甚至数据类型都成了对象;每种数据类型都有自己特有的属性和方法。
web form的后缀名是aspx。当一个浏览器第一次请求一个aspx文件时,web form页面将被clr(common language runtime)编译器编译。此后,当再有用户访问此页面的时候,由于aspx页面已经被编译过,所以,clr会直接执行编译过的代码。
为了简化程序员的工作,aspx页面不需要手工编译,而是在页面被调用的时候,由clr自行决定是否编译。一般来说,下面两种情况下,aspx会被重新编译:
1.aspx页面第一次被浏览器请求;
2.aspx被改写
由于aspx页面可以被编译,所以aspx页面具有组件一样的性能。这就使得aspx页面至少比同样功能的asp页面快250%!
web页面处理过程
和所有的服务器端进程一样,当aspx页面被客户端请求时,页面的服务器端代码被执行,执行结果被送回到浏览器端。这一点和asp并没有太大的不同。
但是,asp.net的架构为我们做了许多别的事情。比如,它会自动处理浏览器的表单提交,把各个表单域的输入值变成对象的属性,使得我们可以像访问对象属性那样来访问客户的输入。它还把客户的点击映射到不同的服务器端事件。
web form的处理过程如下:
用户对server control的一次操作,就可能引起页面的一次往返处理:页面被提交到服务器端,执行响应的事件处理代码,重建页面,然后返回到客户端。
每一次页面被请求,或者页面事件被提交到服务器,asp.net运行环境将执行必要的代码,重建整个页面,把结果页面送到浏览器,然后抛弃页面的变量、控件的状态和属性等等页面信息。当下一次页面被处理时,asp.net运行环境是不知道它的上一次执行情况的。
在asp.net中,页面对象的属性、页面控件的属性被称为"view state"(页面状态)。页面状态在asp.net中被受到特别关照。请看服务器端(page1.aspx)的代码:
| <!--源文件:form\web页面简介\page1.aspx--> <html> <body> <script language="vb" runat="server"> sub showvalues(sender as object, args as eventargs) divresult.innertext = "you selected '" _ & selopsys.value & "' for machine '" _ & txtname.value & "'." end sub </script> <div id="divresult" runat="server"> </div> <form runat="server"> 机器名: <input type="text" id="txtname" runat="server"> <p /> 操作系统: <select id="selopsys" size="1" runat="server"> <option>windows 95</option> <option>windows 98</option> <option>windows nt4</option> <option>windows 2000</option> </select> <p /> <input type="submit" value="submit" runat="server" onserverclick="showvalues"> </form> </body> </html> |
| <html> <body> you selected 'windows 98' for machine 'iceberg'. <form name="ctrl0" method="post" action="pageone.aspx" id="ctrl0"> <input type="hidden" name="__viewstate" value="a0z1741688109__x"> 机器名: <input type="text" id="txtname" name="txtname" value="tizzy"> <p /> 操作系统: <select id="selopsys" size="1" name="selopsys"> <option value="windows 95">windows 95</option> <option selected value="windows 98">windows 98</option> <option value="windows nt4">windows nt4</option> <option value="windows 2000">windows 2000</option> </select> <p /> <input type="submit" value="submit"> </form> </body> </html> |
| if len(request.form("selopsys")) > 0 then stropsys = request.form("selopsys") strname = request.form("txtname") response.write("you selected '" & stropsys _ & "' for machine '" & strname & "'.") end if |
| if len(selopsys.value) > 0 then response.write("you selected '" & selopsys.value _ & "' for machine '" & txtname.value & "'.") end if |
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器