应用的状态PPT课件

上传人:博****1 文档编号:592282217 上传时间:2024-09-20 格式:PPT 页数:58 大小:402KB
返回 下载 相关 举报
应用的状态PPT课件_第1页
第1页 / 共58页
应用的状态PPT课件_第2页
第2页 / 共58页
应用的状态PPT课件_第3页
第3页 / 共58页
应用的状态PPT课件_第4页
第4页 / 共58页
应用的状态PPT课件_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《应用的状态PPT课件》由会员分享,可在线阅读,更多相关《应用的状态PPT课件(58页珍藏版)》请在金锄头文库上搜索。

1、第第5章章Web应用的状态管理应用的状态管理内容内容Web应用状用状态概述概述客客户端状端状态维护技技术服服务器端状器端状态维护技技术HTTP协议“无状态的协议”vWeb服务器每分钟对上千个用户进行管理的一种方服务器每分钟对上千个用户进行管理的一种方式就是执行所谓的式就是执行所谓的“无状态无状态”连接。只要有一个希连接。只要有一个希望浏览器返回一个页面、图像或其他资源的请求,望浏览器返回一个页面、图像或其他资源的请求,就发生以下事情:就发生以下事情:连接到服务器连接到服务器告诉服务器想要的页面、图像或其他项告诉服务器想要的页面、图像或其他项服务器发送请求资源服务器发送请求资源服务器切断连接,把

2、用户忘得干干净净。服务器切断连接,把用户忘得干干净净。 Web Form的“连续”和“有状态”的假象v的设计者们,从实际访问者的角度重新考虑了的设计者们,从实际访问者的角度重新考虑了这一过程:访问者打开一个页面,点击一个按这一过程:访问者打开一个页面,点击一个按钮,看到新的画面钮,看到新的画面这一切似乎都是连续的。这一切似乎都是连续的。状态管理vWeb应用本质上是无状态的,如需保存状态应用本质上是无状态的,如需保存状态则需要做状态管理,状态维护是对同一页或则需要做状态管理,状态维护是对同一页或不同页的多个请求维护状态和页信息的过程不同页的多个请求维护状态和页信息的过程 ,保持用户信息(状态)的

3、连续性。,保持用户信息(状态)的连续性。状态管理状态维护技术状态维护技术v视图状态:视图状态:使用一个或多个隐藏域来保存控件的状态。使用一个或多个隐藏域来保存控件的状态。v控件状态:控件状态:当开发自定义控件时,保存控件的状态数据。当开发自定义控件时,保存控件的状态数据。v隐藏域:隐藏域:标准的标准的HTML隐藏域。隐藏域。vCookie:用于在客户端保存少量的数据。用于在客户端保存少量的数据。v查询字符串:查询字符串:查询字符串是在页查询字符串是在页URL的结尾附加的信息。的结尾附加的信息。v应用程序状态:应用程序状态:用于保存服务器端的全局应用程序信息。用于保存服务器端的全局应用程序信息。

4、v会话状态:会话状态:保存会话状态信息。保存会话状态信息。v配置文件属性:配置文件属性:提供了一个称为配置文件属性的功能,提供了一个称为配置文件属性的功能,可以保存服务器端的全局应用程序信息。可以保存服务器端的全局应用程序信息。客户端状态管理v客户端状态管理客户端状态管理不如服务器端状态管理选项安全不如服务器端状态管理选项安全不如服务器端管理选项可靠不如服务器端管理选项可靠可存储的信息量可能受到限制可存储的信息量可能受到限制用户可以删用户可以删除除 Cookie恶意的用户可通过某恶意的用户可通过某些方法来些方法来篡改篡改 或或读取读取其中的内容其中的内容Web 服务器服务器客户端计算机客户端计

5、算机客户端客户端状态信状态信息息服务器端状态管理可通过应用程序状态(可通过应用程序状态(Application)、会话)、会话状态(状态(Session)、配置文件、数据库保存会)、配置文件、数据库保存会话状态来实现话状态来实现Web 服务器服务器客户端计算机客户端计算机服务器端状态信息服务器端状态信息SessionID客客户户端状端状态维护态维护技技术术视图状状态隐藏域藏域查询字符串字符串Cookie视图视图状状态态视图状状态概述概述设置置页面是否保留面是否保留视图状状态在配置文件在配置文件设置是否保留置是否保留视图状状态设置页面是否保留视图状态v设置设置Page指令或指令或Page的的En

6、ableViewState属性指示当前页请求结束属性指示当前页请求结束时,该页是否保持其视图状态以及它包含的时,该页是否保持其视图状态以及它包含的任何服务器控件的视图状态任何服务器控件的视图状态 v关闭页面的视图状态关闭页面的视图状态设置页面是否保留视图状态(例)v关闭页面的视图状态关闭页面的视图状态protected void Page_Load(object sender, EventArgs e) = false; 在配置文件中设置是否保留视图状态v在配置文件的节点下,修改在配置文件的节点下,修改Pages元素的元素的EnableViewState属性,来控制所有页面是属性,来控制所有页

7、面是否启用视图状态信息否启用视图状态信息 对视图状态进行分块v 设置页的设置页的 MaxPageStateFieldLength 属性,对属性,对ViewState 属性中存储的数据进行分块,可以在文属性中存储的数据进行分块,可以在文件中设置分块大小件中设置分块大小使用使用视图状状态存取数据存取数据 视图状状态(ViewState)是一个字典)是一个字典对象,通象,通过Page类的的ViewState属性公开,是属性公开,是页用来在往返行程之用来在往返行程之间保留保留页和控件属性和控件属性值的默的默认方法(只在本方法(只在本页有效)有效)视图状状态可存可存储的数据的数据类型:型:字符串;整数;

8、布字符串;整数;布尔值;Array 和和ArrayList 对象;哈希表;自定象;哈希表;自定义类型型转换器器ViewStateview1 = Hello World;【例例5-1】视图状态示例程序。视图状态示例程序。参见示例参见示例第第05章章ClientStateDemoViewStateDemo.aspx使用视图状态具有以下使用视图状态具有以下3个优点:个优点:耗费的服务器资源较少(与耗费的服务器资源较少(与Application、Session相比)相比)。因为,视图状态数据都写入了客户端计算机中。因为,视图状态数据都写入了客户端计算机中。易于维护。默认情况下,易于维护。默认情况下,.

9、NET系统自动启用对控件状系统自动启用对控件状态数据的维护。态数据的维护。增强的安全功能。视图状态中的值经过哈希计算和压增强的安全功能。视图状态中的值经过哈希计算和压缩,并且针对缩,并且针对Unicode实现进行编码,其安全性要高于实现进行编码,其安全性要高于使用隐藏域。使用隐藏域。使用视图状态具有以下使用视图状态具有以下3个缺点:个缺点:性能问题。由于视图状态存储在页本身,因此性能问题。由于视图状态存储在页本身,因此如果存储较大的值,用户显示页和发送页时的速如果存储较大的值,用户显示页和发送页时的速度可能减慢。度可能减慢。设备限制。移动设备可能没有足够的内存容量设备限制。移动设备可能没有足够

10、的内存容量来存储大量的视图状态数据。因此,对于移动设来存储大量的视图状态数据。因此,对于移动设备上的服务器控件,将使用其它的实现方法。备上的服务器控件,将使用其它的实现方法。潜在的安全风险。视图状态存储在页上的一个潜在的安全风险。视图状态存储在页上的一个或多个隐藏域中。虽然视图状态以哈希格式存储或多个隐藏域中。虽然视图状态以哈希格式存储数据,但它可以被篡改。如果在客户端直接查看数据,但它可以被篡改。如果在客户端直接查看页源文件,可以看到隐藏域中的信息,这导致潜页源文件,可以看到隐藏域中的信息,这导致潜在的安全性问题。在的安全性问题。隐隐藏域藏域隐藏域是一个存藏域是一个存储库,直接存,直接存储在

11、在页中的任何特定于中的任何特定于页的信息,在的信息,在视图状状态、会、会话状状态和和 Cookie 等方法被等方法被禁用或不可用,禁用或不可用,则可以使用可以使用 HiddenField 控件来存控件来存储状状态值 隐藏域的藏域的设置和置和读取取protected void Page_Load(object sender, EventArgs e) string strUserName = Jakey; h1.Value = strUserName;查询字符串v查询字符串提供了一种维护状态信息的方法查询字符串提供了一种维护状态信息的方法 ,输入查询字符串以问号,输入查询字符串以问号 (?) 开

12、始的属性开始的属性/值对,值对,且可以有多个查询字符串,它们之间以且可以有多个查询字符串,它们之间以“&”分隔分隔http:/=basic&price=100【例例5-2】演示查询字符串的使用。演示查询字符串的使用。参见示例参见示例第第05章章ClientStateDemoQueryString.aspx 使用查询字符串的优点:使用查询字符串的优点:不需要任何服务器资源。查询字符串包含在对特定不需要任何服务器资源。查询字符串包含在对特定URL的的HTTP请求中。请求中。广泛的支持。几乎所有的浏览器和客户端设备均支持使用查广泛的支持。几乎所有的浏览器和客户端设备均支持使用查询字符串传递值。询字符

13、串传递值。实现简单。实现简单。完全支持查询字符串方法,其中包含了使用完全支持查询字符串方法,其中包含了使用HttpRequest对象的对象的Params属性读取查询字符串的方法。属性读取查询字符串的方法。使用查询字符串的缺点:使用查询字符串的缺点:潜在的安全性风险。用户可以通过浏览器直接看到查询字符潜在的安全性风险。用户可以通过浏览器直接看到查询字符串中的信息。用户可将此串中的信息。用户可将此URL设置为书签或发送给别的用户,从设置为书签或发送给别的用户,从而通过此而通过此URL传递查询字符串中的信息。传递查询字符串中的信息。有限的容量。有些浏览器和客户端设备对有限的容量。有些浏览器和客户端设

14、备对URL的长度有的长度有2083个个字符的限制。字符的限制。CookieCookie概述概述编写写Cookie演示和演示和练习:编写写Cookie编写多写多值Cookie演示和演示和练习:编写多写多值Cookie控制控制Cookie的范的范围演示和演示和练习:控制:控制Cookie的范的范围修改和修改和删除除Cookie演示和演示和练习:删除除Cookie和和删除多除多值Cookie的子的子键Cookie和会和会话状状态Cookie概述概述Cookie 是存是存储在客在客户端文件系端文件系统的文本文件中,或者存的文本文件中,或者存储在客在客户端端浏览器会器会话的内存中的少量的数据的内存中的少

15、量的数据Cookie 是随是随页输出并由服出并由服务器器发送到客送到客户端的特定于站端的特定于站点的信息点的信息Cookie 可以是可以是临时的(随着的(随着浏览器关器关闭而自而自动消失),消失),也可以是永久性的也可以是永久性的Cookie 保存在客保存在客户端端设备上,当上,当浏览器器请求某求某页时,客,客户端会将端会将 Cookie 中的信息中的信息连同同请求信息一起求信息一起发送。服送。服务器可以器可以读取取 Cookie 的的值Cookie的用途v用户的个人配置用户的个人配置v登录和登录和“remember me”v弹出窗口弹出窗口编编写写Cookie使用使用HttpResponse

16、 对象象 来来设置置Cookie,需要,需要设置置Cookie名称、名称、值、过期期时间等信息等信息/通过新建通过新建HttpCookie对象来添加对象来添加CookieHttpCookie aCookie = new HttpCookie(lastVisit);/新建新建HttpCookie对象对象 = (); = DateTime.Now.AddDays(1);/设置设置Cookie的过期的过期Response.Cookies.Add(aCookie);/将将Cookie添加到添加到Cookies集合集合/读取读取Cookie值值string userName;if (Request.Co

17、okiesuserName != null) userName = Request.CookiesuserName .Value; 编编写多写多值值Cookie在一个在一个 Cookie 中存中存储多个名称多个名称/值对,名称,名称/值对称称为子子键/直接添加直接添加CookieResponse.CookiesuserInfouserName = patrick;Response.CookiesuserInfolastVisit = ();Response.CookiesuserInfo.Expires = DateTime.Now.AddDays(1);/读取读取Cookie值值string

18、 userName;if (Request.CookiesuserName != null) if (Request.CookiesuserInfo userName != null) userName = Request.CookiesuserInfouserName ; 控制控制Cookie的范的范围围限制限制 Cookie 的域范的域范围将将 Cookie 限制到某个文件限制到某个文件夹或或应用程序用程序 控制控制Cookie的范的范围围限制限制 Cookie 的域范的域范围Response.Cookiesdomain.Value = ();Response.Cookiesdomain.

19、Expires = DateTime.Now.AddDays(1);Response.Cookiesdomain.Domain = support. ;控制控制Cookie的范的范围围将将 Cookie 限制到某个文件限制到某个文件夹或或应用程序用程序HttpCookie appCookie = new HttpCookie(AppCookie); = written + (); = DateTime.Now.AddDays(1); = /App1;Response.Cookies.Add(appCookie);修改和修改和删删除除Cookie由于由于Cookie存存储在客在客户端,不能直接修

20、改和端,不能直接修改和删除除 Cookieu通通过给Cookie赋新新值替替换旧版本旧版本Cookie的的办法来修改法来修改u可以通可以通过设置置Cookie立即立即过期的期的办法来法来删除除CookieCookie的应用的应用 一般只要有会员、用户机制的网站或论坛在登录的时候都会一般只要有会员、用户机制的网站或论坛在登录的时候都会有这么一个复选框有这么一个复选框记住我的名字记住我的名字|两周内不再登录两周内不再登录|在此在此计算机上保存我的信息计算机上保存我的信息,说法较多,实现起来差不多,下面,说法较多,实现起来差不多,下面就来实现这样一个简单的例子。就来实现这样一个简单的例子。【例例5-

21、3】演示演示Cookie的使用。的使用。 参见示例参见示例第第05章章ClientStateDemo 服服务务器端状器端状态维护态维护技技术术会会话状状态应用程序状用程序状态会话状态v会话标识符会话标识符v配置会话状态配置会话状态 v会话状态事件会话状态事件v会话状态变量的使用会话状态变量的使用 v会话状态的利弊会话状态的利弊 v会话状态是中非常重要的服务器端状态管理技术,会话状态是中非常重要的服务器端状态管理技术,同时也是功能很强大的状态管理技术。同时也是功能很强大的状态管理技术。v会话状态是特定于用户的,当一个用户开始访问会话状态是特定于用户的,当一个用户开始访问Web应用程序时,将会产生

22、一个会话状态。应用程序时,将会产生一个会话状态。v不同的用户具有不同的会话状态,如果有一万个用不同的用户具有不同的会话状态,如果有一万个用户,将会有一万个会话状态。户,将会有一万个会话状态。v会话状态在存储与用户相关的信息方面非常有用,会话状态在存储与用户相关的信息方面非常有用,如博客登录后就可以使用会话状态存储通过验证的如博客登录后就可以使用会话状态存储通过验证的用户信息。用户信息。会话标识符v浏览器的会话使用存储在浏览器的会话使用存储在 SessionID 属性中的唯一属性中的唯一标识符进行标识标识符进行标识v会话会话 ID 使使 ASP.NET 应用程序能够将特定的浏览器应用程序能够将特

23、定的浏览器与与 Web 服务器上相关的会话数据和信息相关联服务器上相关的会话数据和信息相关联v会话会话 ID 的值在浏览器和的值在浏览器和 Web 服务器间通过服务器间通过 Cookie 进行传输,如果指定了无进行传输,如果指定了无 Cookie 会话,则通过会话,则通过 URL 进行传输进行传输 会话标识符v无无Cookie的的SessionIDu将将 文件的文件的 sessionState 节的节的 cookieless 属性设属性设置为置为 true,可以指定不将会话标识符存储在,可以指定不将会话标识符存储在 Cookie 中,而是存储在中,而是存储在URL中中 会话标识符会话标识符配置

24、会话状态配置会话状态 v会话状态模式概述会话状态模式概述uASP.NET 会话状态支持若干用于会话数据的存储会话状态支持若干用于会话数据的存储选项选项u在在 文件中为文件中为 sessionState 元素的元素的 mode 属性分属性分配一个配一个 SessionStateMode 枚举值,可以指定枚举值,可以指定ASP.NET 会话状态使用的模式会话状态使用的模式配置会话状态(续)配置会话状态(续) vInProc模式(进程内模式)模式(进程内模式)u是默认会话状态模式,使用是默认会话状态模式,使用SessionStateMode枚举的枚举的InProc值指定值指定u进程内模式将会话状态值

25、和变量存储在本地进程内模式将会话状态值和变量存储在本地 Web 服务器的内存中服务器的内存中u是唯一支持是唯一支持 Session_End 事件的模式事件的模式配置会话状态(续)配置会话状态(续) vStateServer模式(状态服务器模式)模式(状态服务器模式)u会话状态存储在一个称为会话状态存储在一个称为 ASP.NET 状态服务的进状态服务的进程中,该进程是独立于程中,该进程是独立于 ASP.NET 辅助进程或辅助进程或 IIS 应应用程序池的单独进程用程序池的单独进程u使用此模式可以确保在重新启动使用此模式可以确保在重新启动 Web 应用程序时保应用程序时保留会话状态,并使会话状态可

26、用于网络场中的多个留会话状态,并使会话状态可用于网络场中的多个 Web 服务器服务器 配置会话状态配置会话状态 (续)(续) vSQL Server模式模式u会话状态存储到一个会话状态存储到一个 SQL Server 数据库中数据库中u可以确保在重新启动可以确保在重新启动 Web 应用程序时保留会话状应用程序时保留会话状态,并使会话状态可用于网络场中的多个态,并使会话状态可用于网络场中的多个 Web 服服务器务器 配置会话状态(续)配置会话状态(续) vCustom摸式(自定义模式)摸式(自定义模式)u指定使用自定义会话状态存储提供程序来存储会指定使用自定义会话状态存储提供程序来存储会话状态数

27、据话状态数据u在中配置在中配置sessionState 的提供程序为自定义的会的提供程序为自定义的会话状态存储提供程序话状态存储提供程序vOff模式:此模式禁用会话状态。模式:此模式禁用会话状态。 会话状态事件v在文件编写用于管理用户会话的事件:在文件编写用于管理用户会话的事件:uSession_Start 事件:在新会话开始时触发事件:在新会话开始时触发uSession_End 事件:在会话被放弃或过期时触发事件:在会话被放弃或过期时触发 vSession_Start事件:事件:通过向文件添加一个名为通过向文件添加一个名为Session_Start的事件过程来处理。如果请求开始的事件过程来处

28、理。如果请求开始一个新会话,一个新会话,Session_Start事件过程会在请求开事件过程会在请求开始时运行。如果请求不包含始时运行。如果请求不包含SessionID值或请求所值或请求所包含的包含的SessionID属性引用一个已过期的会话,则属性引用一个已过期的会话,则会开始一个新会话。可以使用会开始一个新会话。可以使用Session_Start事件事件初始化会话变量并跟踪与会话相关的信息。初始化会话变量并跟踪与会话相关的信息。vSession_End事件:事件:通过向文件添加一个名通过向文件添加一个名为为Session_End的事件过程来处理。的事件过程来处理。Session_End事件

29、过程在调用事件过程在调用Abandon方法方法或会话过期时运行。如果超过了某一会话或会话过期时运行。如果超过了某一会话Timeout属性指定的分钟数并且在此期间内属性指定的分钟数并且在此期间内没有请求该会话,则该会话过期。没有请求该会话,则该会话过期。会话状态变量的使用会话状态变量的使用 v向会话状态添加项向会话状态添加项u以键以键/值对形式直接向值对形式直接向Session中添加项以持久保中添加项以持久保留值留值 ,并且根据添加的键名称访问会话状态的值,并且根据添加的键名称访问会话状态的值/添加添加SessionUserName =mary;或:或:Session.Add(UserName

30、,mary); /访问访问If(Session UserName != null) string strUsername = Session UserName.ToString();会话状态变量的使用会话状态变量的使用v会话的过期会话的过期u配置会话过期时间,默认过期时间为配置会话过期时间,默认过期时间为20分钟分钟u编写代码设置编写代码设置Session对象的对象的Timeout属性,属性,来设置会话状态过期时间来设置会话状态过期时间void Session_Start(object sender, EventArgs e) = 30; 使用会话状态v删除会话状态中的项删除会话状态中的项u调

31、用调用Session对象的对象的Clear和和RemoveAll方法来删除方法来删除会话状态集合中的所有项会话状态集合中的所有项u调用调用Remove和和RemoveAt删除其中的某一项删除其中的某一项u调用调用Abandon方法取消当前会话,即会话立即过期方法取消当前会话,即会话立即过期Session.Remove(UserName);Session. Abandon();【例例5-4】演示会演示会话状状态变量的使用。量的使用。参见示例参见示例第第05章章ServerStateDemo 和和 会话状态的利弊会话状态的利弊 使用会话状态的优点:使用会话状态的优点:v实现简单。实现简单。v会话特

32、定的事件。会话特定的事件。v数据持久性。数据持久性。v平台可伸缩性。平台可伸缩性。v无需无需Cookie支持。支持。v可扩展性。可扩展性。使用会话状态的缺点:使用会话状态的缺点:v使用会话状态时,要注意其性能问题。使用会话状态时,要注意其性能问题。 应应用程序状用程序状态态应用程序状用程序状态概述概述添加和添加和读取取应用程序状用程序状态中的中的值演示和演示和练习:使用:使用应用程序状用程序状态来存来存储信息信息删除除应用程序状用程序状态的的值应用程序状用程序状态概述概述应用程序状用程序状态是一种全局存是一种全局存储机制,可以供机制,可以供Web应用用程序中的所有程序中的所有页面(或文件)面(

33、或文件)访问存存储在在HttpApplicationState 类的的实例中,例中,该类在客在客户端第一次从某个特定的端第一次从某个特定的 ASP.NET 应用程序虚用程序虚拟目目录中中请求任何求任何 URL 资源源时创建建 目的在于存目的在于存储需要在服需要在服务器往返行程之器往返行程之间及及页请求求之之间维护的信息的信息 添加和添加和读读取取应应用程序状用程序状态态中的中的值值应用程序状用程序状态存存储在一个在一个键/值字典中,可以将特定于字典中,可以将特定于应用程序的信息添加到此用程序的信息添加到此结构以在构以在页请求期求期间读取它取它一般在文件中的一般在文件中的应用程序启用程序启动事件

34、中初始化事件中初始化应用程序用程序状状态值,而在所有的,而在所有的页面中都可以面中都可以访问 ();ApplicationWebVisitCount = (int)ApplicationWebVisitCount + 1;(); 删删除除应应用程序状用程序状态态的的值值调用用HttpApplicationState类的的Clear或或RemoveAll方法,方法,删除除应用程序状用程序状态集合中的所有集合中的所有变量量调用用Remove或或RemoveAt方法来清除某一个方法来清除某一个变量量 Application.Remove(“TotalCounter”); /通过传递变量名来删除通过传

35、递变量名来删除Application.RemoveAt(0);/通过传递序号来删除通过传递序号来删除应用程序状态举例应用程序状态举例 【例例5-4】下面利用下面利用应用程序状用程序状态变量量实现网站在网站在线人数和人数和访问总人数的人数的统计功能。功能。参见示例参见示例第第05章章ServerStateDemo 应用程序状态的利弊应用程序状态的利弊 使用应用程序状态的优点如下:使用应用程序状态的优点如下:v实现简单。应用程序状态易于使用,通过键实现简单。应用程序状态易于使用,通过键/值对进值对进行存储和访问。行存储和访问。v应用程序的范围。由于应用程序状态可供应用程序应用程序的范围。由于应用程

36、序状态可供应用程序中的所有页来访问,因此在应用程序状态中存储信中的所有页来访问,因此在应用程序状态中存储信息可能意味着仅保留信息的一个副本。息可能意味着仅保留信息的一个副本。使用应用程序状态的缺点如下:使用应用程序状态的缺点如下:v资源要求。由于应用程序状态存储在内存中,因此资源要求。由于应用程序状态存储在内存中,因此比将数据保存到磁盘或数据库中速度更快。但是,比将数据保存到磁盘或数据库中速度更快。但是,在应用程序状态中存储较大的数据块可能会耗尽服在应用程序状态中存储较大的数据块可能会耗尽服务器内存,这会导致服务器将内存分页到磁盘。务器内存,这会导致服务器将内存分页到磁盘。v易失性。由于应用程序状态存储在服务器内存中,易失性。由于应用程序状态存储在服务器内存中,因此每当停止或重新启动应用程序时应用程序状态因此每当停止或重新启动应用程序时应用程序状态都将丢失。都将丢失。 小小结Web应用状用状态概述概述客客户端状端状态维护技技术服服务器端状器端状态维护技技术实验实验参照实验手册,并在教师指导下完成实验报告。参照实验手册,并在教师指导下完成实验报告。习题习题详见本书第七章后习题部分,请学生独立完成。详见本书第七章后习题部分,请学生独立完成。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号