北大青鸟Y2学期_Net控件 总结_net控件总结

其他工作总结 时间:2020-02-28 06:16:13 收藏本文下载本文
【www.daodoc.com - 其他工作总结】

北大青鸟Y2学期_Net控件 总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“net控件总结”。

--------ASP.Net总结------------------第一章---------------1.1 ASP.Net简介

定义:ASP.Net是基于B/S的应用程序,可创建动态、交互的Web页面的服务器端技术。

特色和优势:(1)与浏览器无关。遵循W3C标准XHtml标准,在任何浏览器中显示效果一样。

(2)易调试。IIS是微软开发的Web服务器。

(3)编译后执行。先编译成微软中间语言MSIL,然后由即时编译器JIT编译成机器语言。

(4)丰富的控件库。在ASP.Net 2.0中内置了80多个常用空间。

(5)代码后置。将Web界面元素和程序逻辑分开显示。

1.2 开发环境搭建

安装IIS步骤:(在Windows 2003中)“控制面板”─→“添加/删除程序”─→选中“应用程序服务器”─→

“详细信息”─→选择安装相关组件和服务─→其中“万维网服务”可选择安装APS服务器安装文件

─→“确定”─→“下一步”。

设置虚拟目录:(就是设置站点)打开“Internet 信息服务(IIS)管理器”─→“开始”─→“控制面板”─→

“管理工具”─→“Internet 服务管理器”─→右键网站下面的“默认网站”─→“新建”─→“虚拟目录” ─→填写目录的名称─→选择程序放置的路径─→设置该路径的访问权限。

1.3第一个ASP.Net应用程序

创建站点:(1)文件系统。可将站点文件存储在本地硬盘或局域网中,无需IIS就可开发测试。

(2)本地IIS。可使用IIS高级功能,为Web测试时使用。

(3)FTP站点。可在服务器上保存文件,通过FTP访问。缺陷是不能使用源代码管理器。

(4)远程站点。类似于FTP,使用Http方式连接。站点配置复杂,缺点多,极少用。

TextBox控件:

属性:(1)AutoPostBack 指示用户更改了控件内容,是否回发到服务器。

(2)ReadOnly 设置只读

(3)Text 设置或获取文本内容

(4)TextMode 枚举,控件模式SingleLine单行,MultiLine多行,PaWord密码

事件:(1)TextChange

当文本发生变化且失去焦点是发生。需要设置AutoPostBack为true

--------第二章---------------2.1 ASP.Net运行机制

┌─(解析)←─[ASP.Net引擎]───→(合并生成)←─[后置代码] 第一次请求─→[.ASPX文件]

第二次请求─→[.ASPX文件]二次请求实例化┐ [生成的页面类]编译

←────────响应←───── [页面类] ←─────┘

2.2系统对象

Page对象:(就是页面类的实例)(1)@Page指令。用于编译和解析aspx页面;一个aspx页面只能有一个@Page指令。

参数:Language 指定代码语言。

AutoEventWireup 是否自动调用Page_load事件。CodeFile 代码后置文件名称。Inherits 页面类。

(2)ASP.Net页面传值。(回发机制是对Get、Post提交方式进行的一种封装)属性:IsPostBack 设置页面是否回发。

PreriousPage 指向源页面,其FindControl方法可通过ID访问相应控件。

IsCroPagePostBack 是否使用跨页提交。

Cookie对象:(指小量信息存储在浏览器目录中的文本文件)(1)写入Cookie:Response.Cookies[Cookie名称].Value=值;

(2)读取Cookie:变量名= Request.Cookies[Cookie的名称].Value;(3)添加Cookie: Response.Cookies.Add(new HttpCookie(“Cookie名称”,“值”));(4)属性:Name:Cookie变量名称

Value:Cookie变量的值

Expires:Cookie变量的有效时间

Seion对象:(会话机制,存储在服务器端的数据)(1)写入Seion: Seion[“Seion名称”]=值;

(2)读取Seion:变量=Seion[“Seion名称”];

(3)属性:SeionID 唯一的用户会话标识符。TimeOut 设置用户超时时间/分钟。IsNewSeion 是否按请求创建会话。

(4)方法:Clear 从会话状态集合中移除所有的键和值; Abandon 结束Seion,取消当前会话。

Application对象:(应用程序对象,用于用户之间的共享信息,用法与Seion一样)属性:(1)All 返回全部的Application对象变量到一个对象数组。

(2)Allkeys 返回全部的Application对象变量到一个字符串数组。

(3)Count 取消Application对象变量的数量。

(4)Item 允许使用索引或application变量名称传回变量值。

方法:(1)Add 新增一个Application对象变量。(2)Clear 清除全部的Application对象变量。

(3)get 使用索引值或变量名称传回变量值。

(4)Set 使用变量名称更新一个Application对象变量的内容。

(5)Lock 锁定全部的Application变量。

(6)UnLock 解除锁定的application变量。

Server对象:(与Web服务相关的方法)方法:(1)HtmlEncode 对Html格式进行编码。

(2)HtmlDecode 与HtmlEncode相反,对内容解码。

(3)UrlEncode 对URL地址进行编码。

(4)urlDecode 对URL地址进行解码。

(5)MapPath 返回相对路径的绝对路径位置。

(6)Execute 在当前页面执行参数指定的页面,完成后继续执行本页面。(7)Transfer 参数指定的页面处理完后,页面执行结束。

Request对象:

属性:(1)aQueryString 集合主要用于收集Http协议中Get请求方式发送的数据。

(2)Form 集合用于收集Post方法发送的数据。

(3)ServerVariable 集合包含了服务器和客服端的系统信息。(4)Params 集合是以上三种方式的集合,不区分传递方式。

Response对象:

方法:Write()输出指定文本内容。

End()使Web服务器停止当前的程序并返回结果。

Redirect()重定向到另外一个页面。

--------第三章---------------

3.1用站点导航控件与母版页搭建页面框架

分类:Html服务器控件与Web服务器控件。runat=“server”申明了控件在服务器端运行。

比较:从运行效率讲:Html控件要高,不支持服务器端编程。

从开发效率讲:Web服务器控件高。

3.2导航系统

(1)站点地图:(特殊的xml文件,文件名必须是web.sitemap,必须放置于程序根目录)注意事项:根节点有且只能有一个;其下一级有且仅有一个。

同一个URL只许出现一次。

(2)siteMapPath 控件(面包屑导航,使用站点地图作为数据源)属性:PathSeparator 控制分隔符。

PageLevelsDisplayed 控制导航显示级数。默认为-1,无限制。(3)TreeView 导航控件(树形控件,可使用站点地图或者xml文件作为数据源)属性:TextField 设置显示文字所绑定的字段。

NavigteUrlField 设置链接对应的字段。(4)Menu控件(动态菜单控件,与TreeView类似)属性:StaticDisplayLevels 静态显示的级数。

MaximumDynamicDisplayLevels 支持的最多级别数。设负数异常。

Orientation 布局类型:横向(Horizontal)与纵向(Vertical)

3.3 母版页(.“master”为文件后缀名的文件)(1)特点:高效的内容整合能力使站点容易修改和维护。

利用了对象模型和页面布局。

(2)使用:与普通页面类似,有一个ContentPlaceHolder控件,预留给内容页。

在内容页中,MasterPageFile 指定所使用的母版页的路径。

(3)区别:使用<%@ master 作为标记。

在内容页,MasterPageFile 指定所使用的母版页的路径。

--------第四章---------------

4.1 系统框架

(1)表示层:Web项目,即访问的站点,提供与所有用户进行的交互界面,通过BLL层相关方法。

(2)业务逻辑层:BLL项目,为表示层提供所有的业务方法和数据访问。

(3)数据访问层:DALFactory项目,IDAL项目、OracleDAL或SQLServerDAL项目属于数据访问层。

(4)模型层:Model项目,包含与数据库相对应的实体类,作为层与层数据传递的载体。

4.2 搭建第三波书店的架构

模型层是标准、规范、三层之间的数据传递,通过传输实体对象来达到目的。它包含了与数据

库表相对应的实体类,在模型层中,外键的处理可以有两种方式,使用外键ID或者使用外键类。外键类的优点是可以直接使用属性访问。

数据访问层涉及所有与数据表相关的操作,分为增、删、查、改(CRUD)四中类型的方法,为增

加代码的重要性,我们使用了DBHelper类。

业务逻辑层包含了所有业务逻辑的处理方法,并提供表示层和数据访问层交互的桥梁。

表示层是整个站点内容的展示和用户交互的处理,可以做简单的验证。

--------第五章---------------

5.1 数据查询与展示概述

(1)数据源空间,由System.Web.UI.DataSourceControls 类派生而来。

结构图Control类

├→DataSouceControl 控件(普通数据源控件)

│ ├→ObjectDataSource 将业务逻辑层的数据对象与表示层数据绑定控件绑定

│ └→SqlDataSource 从SQLServer、ODBC、Oracle等数据源中检索数据

└→AcceDataSource 专门用于从Acce数据库中检索数据

└→HierarchicalDataSourceControl(层次化数据源控件)

├→XmlDataSource 用于检索和处理xml等分层数据。

└→SiteMapDataSource 专门处理类似站点地图的xml 数据。

(2)数据绑定控件

结构图: BaseDataBoundControl

├→HierarchcalDataBoundControl

│ ├→TreeView

│ └→Menu

└→DataBoundControl

├→AdRototor

├→ListControl

│ ├→DropDownList

│ ├→CheckBoxList

│ ├→RadioButtonList

│ ├→ListBox

│ └→BulletList

└→CompositeDataBoundControl

├→GridView

├→DetailsView

└→FormView 5.2实现图书的分类管理

(1)GridView 控件提供的7种数据绑定列类型

①BoundFeld 用于显示普通文本,其属性DataFormatString用于设置显示格式:

{0:D}为数字;{0:yy-mm-dd}日期格式。需要设置HtmlCode为false,否则无效。

②TemplateFiled 以模板形式自定义数据绑定列的内容。

包含标头(HeaderTemplate)、脚注(FooterTemplate)、普通项(ItemTemplate)、交替

项(AlternatingTemplate)、编辑模式(EditItemTemplate)

③ButtonField 按钮,通过CommandName 设置按钮的命令。

④CommandField 与ButtonField类似,提供了创建命令按钮的功能。执行选择、编辑、插入或删除操作命令。

⑤HyperLinkField 可将绑定的数据超链接显示,其属性DataNavigateUrlFormatString

用于指向目标页面地址的格式;DataNavigateUrlField 为传递的参数。例如:

DataNavigateUrlField=“Id” Text=“详细”>

⑥ImageField 可显示图片列,一般绑定图片的路径。例如:

DataImageUrlFormatString='~/images/bookcover/{0}.jpg'>

⑦CheckBoxField 可使用复选框显示显示布尔类型数据

(2)多选和光棒效果

①多选效果关键代码

Function GetAllCheckBox(checkAll){

var items=document.getElementsByTagName(“input”);

for(i=0;i

if(items[i].type==“checkBox”){

items[i].checkBox=CheckAll.checked;

}

}

}

②光棒效果,在GridView中onRowDataBound 事件中绑定如下:

if(e.Row.RowType == DataControlRowType.DataRow){

e.Row.Attributes.Add(“onmouseover”,“currentcolor=this.style.backgroundColor;this.style.backgroundColor=#6699ff”);

e.Row.Attributes.Add(“onmouseout”,“this.style.backgroundColor=”currentcolor“);

}(3)DropDownList 常用属性和事件

①SelectedItem 属性: 设置或获取下拉菜单的选中项。Value 值; Text 显示文本。

②SelectedValue 属性: 获取选择项的值,与SelectedItem.Value 一致。

③DataTextField 属性: 设置或获取提供列表项文本内容的数据源的字段。

④DataValueField 属性:设置或获取提供列表项值的数据源的字段。

⑤AutoPostBack 属性: 控件状态是否回发,默认false。

⑥SelectIndexChanged 事件:点选定内容改变时发生。

(4)DetailsView 控件

属性:

①DefaultMode: 设置或获取控件默认的状态。分为ReadOnly 显示,Edit修改,Insert添加

②Datakey: 数据的主键。

③DatakeyNames:设置或获取一个字符串,该字符串包含数据源中间的组合。

事件:

①ItemInserting:单击添加按钮,执行添加方法之前添加。

②ItemUpdating: 单击更新按钮,执行更新方法之前添加。

附:CurrentMode 用于判断DetailView 的状态。

--------第六章(数据插入与更新)6.1 验证控件结构图

WebControl

├→ValidationSummary(汇总所有的错误报告)

└→Label └→BaseValidator(基础验证类;抽象类)

├→RequiredFieldValidator(非空验证)

├→RegularExceptionValidator(正则表达式验证)

├→CustomValidator(自定义验证)

└→BaseCompareValidator

├→RangeValidator(范围检查)

└→CompareValidator(两次密码和数据类型的验证)(1)RequiredFieldValidator

属性:ControlToValidate 验证控件的ID,所有验证控件都有该属性。

Text 出错时的提示,所有验证控件都有该属性。

ErrorMeage 提交给汇总控件的错误信息。所有验证控件都有该属性。

(2)CompareValidator

属性:ControlToValidate 验证控件的ID。

Type 设置比较类型。

Operator 设置比较运算符,默认为equals。

ValueToCompare 用于比较的值。

(3)RangeValidator

属性:MaximumValue 范围的上界。

MinimumValue 范围的下界。

Type 验证类型。

(4)RegularExceptionValidator

属性:RegularExpreion 正则表达式编辑器。

(5)CustomValidator

属性:ClientValidationFunction 用于设置客户端验证的脚本函数。

OnServerValidate 服务器端验证的时间方法。

(6)ValidationSummary

属性:ShowMeageBox 是否显示弹出的提示信息。

ShowSummary 是否显示报告的内容,用于显示提示消息的时候。

(7)IsValid属性用于判断页面中所有输入是否已通过验证,为服务器端验证。

6.2 图书的修改

(1)Calendar 日历控件(日历的显示、隐藏、选择时会回传,浪费资源)

属性:SelectedDate 设置或获取选择的日期。

VisibleDate 当前可见的日期(默认显示的月份)

TitleFormat 标题格式(”某月“或”某年某月“)

事件:SelectionChanged 选择某日期后的事件。

(2)JS版日历(页面无刷新,界面美观)

首先导入JS文件,再在文本框的onFocus事件中调用函数。

(3)图片上传FileUpload 控件

(4)ImageMap 控件(在图片中定义一些热点区域)(5)HyperLink 超链接控件

属性:NavigateUrl 设置或获取超链接所指向的Url地址。

ImageUrl 可设置为图片形式的链接。

Text 链接显示的文本。(6)MultiView 多视图控件,一般与View控件一起使用。

属性:ActiveViewIndex 设置或获取当前被激活显示的View的索引值。

--------第七章(数据查询与展示 DataList)-----------------------7.1 图书列表页的展示:DataList 结构图:System.Web.UI.Control

├→Repeater └→WebControl

├→BaseDataList

│ └→DataList

└→BaseDataBoundControl

├→DataBoundControl

├→CompositeDataBoundControl

└→GridView(1)DataList 控件模版:ItemTemplate 显示项的模版

SeparatorTemplate 分隔符的模版

(2)分页的实现:

①基于SQL语句:

a.子查询:Select Top PageSize * from 表名 where 条件 and id not in(Select Top PageSize*(CurrentPageIndex-1)id from 表名 Order by 排序)

Order by 排序

b.函数Row_NUMBER(): Select * from

(Select Row_NUMBER()over(order by 排序)as PriceRank,* from books)

as Rank where PriceRank between 21 and 30 order by 排序

②基于PagedDataSource类的分页

属性:CurrentPageIndex 当前页

PageCount 总页数

Count 总记录数

PageSize 每页记录数

DataSource 数据源

AllowPaging 控件是否实现自动分页

③页面级的状态保持:ViewState

语法:ViewState[”名称“] =值;

原理:在页面上放了一个隐藏域,数据回传时其内容一起回传。

7.2 Repeater 控件的用法

优点:不自动生成任何Html标签,带来了效率的提升,精确展示内容。

缺点:可用模版少,只能通过源代码视图进行模版的编辑。

--------第八章(常用第三方工具和控件)-----------------------8.1 常用第三方控件

(1)FreeTextBox 控件使用步骤:

①添加控件到工具箱:右键工具箱→选择项→浏览→”FreeTextBox.dll打开“→完成 ②使用FreeTextBox:<%@ Register Aembly=”FreeTextBox“ Namespace=”FreeTextBoxControls“

TagPrefix=”FTB“ %>

属性:Language 语言,”en-US“美国英文;”zh-CN“简体中文

Text 设置或获取当前文本信息。

注意:做数据绑定更新提交到服务器是,须设置Page指令中ValidateRequest=”flase“;(2)验证码控件Webvalidates

方法:Creat()创建一个新的密码。

CheckSN()判断验证码是否与输入的一致,参数为用户输入的值,返回bool类型。

8.2 代码生成工具 CodeSmith(1)在CodeSmith Explorer的DatabaseSchema文件夹下有实体类模版busineobjects.cst。

(2)模版声明:<%@ CodeTemplate Language=”C#“ TargetLanguage=”C#“ Description=”“ %>

其中,Language=”C#“ 表示模版采用的语言。

TargetLanguage=”C#“ 生成文件的类型,如.sql为”T-SQL“

Description=”“ 说明,相当于注释。

(3)定义参数:<%@ Property Name=”Number Type=“Int32” Category=“context” Description=“” %>

其中:Name=“Number 参数名。

Type=”Int32“ 参数类型。

Category=”context“ 分类,是输入框还是下拉框。

(4)基本语法:

①脚本:

②代码标签:<% 任意代码%> 和<%=字符串%>(5)组件引用:<%@ Aembly Name=”SchemaExplorer“ %>

(6)导入命名空间:<%@ Import Namespace=”ScemaExplorer“%>(7)SchemaExplorer对象层次结构:

↗Commands→Parameters ╭Columns

Database→Tables ───────→│Indexes

↘Views→Columns ╰Keys(8)组件的使用:

①表的类型 TableSchema

②列的类型 ColumnSchema

╭ForeignKeyColumns 所有外键列的集合③表对象的常见属性 │NonForeignKeyColumns 所有非外键列的集合 ╰NonKeyColumns 既不是主键又不是外键的集合

--------第九章(用户控件和HttpHandler)-----------------------9.1 用户控件①②③④⑤⑥⑦⑧⑨⑩

(1)定义:用户控件(User Control)其实就是一种自定义的组合,当多个网页中有部分相同用户

界面时使用。

(2)创建:<%@ Control Languange=”C#“ AutoEventWireup=”true“ CodeFile=”UserLogin.ascx.cs“ Inherits=”_Controls_UserLoginControl“ %>(3)使用:<%@ Register scr=”../_controls/UserLoginControl.ascx“ TagName=”UserLoginControl“ TayPrefix=”url“ %>

其中,scr=”../_controls/UserLoginControl.ascx“ 表示用户控件文件路径

TagName=”UserLoginControl“ 表示用户控件名称

TayPrefix=”url“ 控件前缀

(4)注意:

①用户控件可以包含其他用户控件,但不可以互相包含。

②用户控件不可以单独访问,不能包含或等标签。

9.2 模块的处理程序

(1)配置文件

其中,verb=”*“ 表示请求方式。

path=”Images/*.jpg“ 表示访问路径

type=”CoverHandler“ 表示处理程序的名称。

(2)Request.PhysicalPath 用于获得Http请求所对应的物理路径。

(3)数字水印步骤:

①加载原图与水印图:System.Drawing.Image image=Image.FromFile(图片路径);

②实例化一张画布: Graphics g =Grapics.FromImage(原图);

③原图上绘制水印图:g.DrawImage(水印图,new Rectangle(原图宽-水印图宽,原图高-水印图高,水印图宽,水印图高),0,0,水印图宽,水印图高,GraphicsUnit.Pixel);//位置为右下角

④释放画布: g.Dispose();

⑤释放图片: image.Dispose();

⑥设置输出格式: Response.ContentType=”image/jpeg“;

⑦将图片存入输出流:

image.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);

(4)注:使用配置HttpHanders时,在IIS上请求.html,.jpg等静态格式时会直接将结果返回

不做处理。解决方法如下:

”打开IIS控制台管理程序“→”选择对应的站点目录“→”打开属性对话框“→”目录选项卡“

→配置→”映射选项卡“→添加→”选择当前版本的aspnet_isapi.dll文件“→”可扩展名JPG“

→”注意不要选中‘确认文件是否存在’复选框“→完成→”重启IIS“

--------第十章(网站部署与定制)-----------------------------10.1 配置文件

(1)machine.config 服务器配置文件,作用与所有本机的应用程序,存在于c:Windows Microsoft.NetFramework”版本号“(2)web.config 常用配置文件,存在于ASP.NET应用程序的根目录。在所有文件夹中都可以存在(3)就近原则:当多个配置文件存在并发生冲突时,采用就近原则,若该目录缺少某配置时,则

以上一级目录为准,直到machine.config。

(4)xml格式的配置文件优点:可读性好,修改方便,扩展性好,敏感信息加密。

(5)配置数据库连接字符串:

(6)使用连接配置(需要引入System.Configuration)

String connStr=ConfigurationManager.ConnectionStrings[”MyBookShop“].ConnectionString;(7)对数据库连接字符串加密和解密(在SDK命令提示符中键入命令)

加密:aspnet_regiis.exe-pef section physical_directory-prov provider

或: aspnet_regiis.exe-pef section-app virtual_directory-prov provider

其中,physical_directory 表示站点的物理路径。

section 表示加密的配置节。

virtual_directory 指定虚拟的路径。

provider 加密提供程序

例如:aspnet_regiis.exe-pef ”connectionStrings“ ”Web项目路径“-prov

”DataProtectionConfigurationProvider“

解密:aspnet_regiis.exe-pdf ”connectionStrings“ ”Web项目路径“

注:加密和解密必须在一台机器上;命令对中文路径支持不好。

(8)Window验证配置(安全性高,仅限于Windows平台,适合公司内部站点)

(9)Papord验证

(10)Forms 验证(使用广泛,使用cookie来维护页面之间的状态,最初由亚马逊网站开发使用)

其中,foms 子标签的常用属性:

name=”Admin“ 用于指定身份验证的cookie名称,默认情况下,值为.ASPXAUTH。

loginUrl 指定为登陆而重定向到URL,默认为default.aspx。

timeout=”60“ 表单验证的有效时间即cookie时间,单位/分钟。

path cookie的指定路径,默认为(/)即可用于整个站点。

(11)授权

在标签下,有两个种子标签deny(拒绝)和allow(允许),其属性:

user 一个用逗号分隔的用户列表,其中“?”代表匿名用户,“*”代表所有用户。

roles 逗号分隔的角色列表。

verbs 逗号分隔的谓词列表,如get、head、post或debug。

登陆处理:

string strRedirect=Request[”ReturnUrl“];//获取用户请求的页面。

//给用户发凭证

System.Web.Security.FormsAuthentication.SetAuthCookie(user.Name,true);

if(strRedirect==null)......退出处理:

System.web.Security.formsAuthentication.SignOut();//删除凭证

(12)自定义错误

(13)调试和运行

debug=”true“ 是否启用调试

enable=”true“ 程序是否启用

executionTimeOut=”90“ 程序执行上限

maxRequestLength=”40%“ 最大文件上传大小,默认4MB; 10.2 配置和管理

---------------(附属)------------------------(附属)------------------------(附属)------------------------(附属)------------------------(附属)---------文件上传

if(this.FileUpload1.HasFile){ string fileName = this.FileUpload1.FileName;//获取文件名

string lastName = fileName.Substring(fileName.LastIndexOf(”.“));//后缀名

lastName = lastName.ToLower();if(lastName == ”.jpg“ || lastName == ”.gif“ || lastName == ”.bmp“ || lastName == ”.png“){ fileName = GetNum()+ lastName;this.FileUpload1.SaveAs(Server.MapPath(”~/image/“ + fileName));this.txtUrl.Text = ”image/“ + fileName;Response.Write(”“);} else { Response.Write(”");}

}

private string GetNum(){ Random rand = new Random(unchecked((int)(DateTime.Now.Ticks)));DateTime datetime = DateTime.Now;string num = datetime.Year.ToString()+ datetime.Month.ToString()+ datetime.Day.ToString()+ datetime.Hour.ToString()+ datetime.Minute.ToString()+ datetime.Second.ToString()+ rand.Next(1000,10000);return num;}---------------(完毕)---------

下载北大青鸟Y2学期_Net控件 总结word格式文档
下载北大青鸟Y2学期_Net控件 总结.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文