ASP.NET教程之关于ASP.net服务器的进侵办法详解
效率会有不少的变化。而实际上java是基于堆栈机器来设计,这和我们常见的基于寄存器的本地机器是差异比较大的。总体来说,这是一种虚拟机的设计思路。asp.net|服务器|详解<Pstyle="TEXT-INDENT:2em">有个伴侣在QQ上问了我关于ASP.net服务器的进侵办法我将ASP.net上的一些进侵经常使用手腕告知人人<Pstyle="TEXT-INDENT:2em">1.ASP中经常使用的尺度组件:FileSystemObject,这个组件为ASP供应了壮大的文件体系会见才能,能够对服务器硬盘上的任何有权限的目次和文件举行读写、删除、更名等操纵。FSO工具来自微软供应的剧本运转库scrrun.dll中。利用上面的代码就能够在ASP中创立一个FSO工具:Setfso=CreateObject("Scripting.FileSystemObject")我们利用fso工具包括的属性和办法,如Drive、Drives、Folder、Floders、File、Files等对服务器的磁盘、目次和文件举行读、写、删除等操纵。这一壮大的文件体系会见才能给ASP共享空间供应者带来了严峻的平安成绩,良多ASP空间的办理员都删除此组件或将这个组件更名以免用户利用这一尺度组件。删除组件或组件更名的确是一个复杂的办法而且也很无效,可是却使宽大用户没法利用它的壮大的功效。收集上另有一种看起来很美的计划,它同意用户利用FileSystemObject组件又不影响服务器的平安,即对每个用户都设置一个自力的服务器用户和单个目次的操纵权限。可是这类办法是有成绩的。由于ASP和ASP.NET中在这方面的成绩非常相似,以是我们将在ASP.NET的响应办理举措部分详加申明。在ASP.NET中我们发明这一成绩仍旧存在,而且变得加倍难以办理。这是由于.NET中关于体系IO操纵的功效变得加倍壮大,而使这一成绩更严峻的是ASP.NET所具有的一项新功效,这就组件不必要象ASP那样必需要利用regsvr32来注册了,只需将Dll类库文件上传到bin目次下就能够间接利用了。这一功效的确给开辟ASP.NET带来了很年夜的便利,可是却使我们在ASP中将此dll删除大概更名的办理办法得到功效了,提防此成绩就变得加倍庞大。在会商办理计划之前,我们先来看一下怎样来完成上述的伤害的功效<Pstyle="TEXT-INDENT:2em">2.文件体系<Pstyle="TEXT-INDENT:2em">我们还要利用System.IO称号空间的其他几个类是:<Pstyle="TEXT-INDENT:2em">System.IO.Directory:供应用于创立、挪动和列举经由过程目次和子目次的静态办法的类<Pstyle="TEXT-INDENT:2em">System.IO.File:供应用于创立、复制、删除、挪动和翻开文件的静态办法的类<Pstyle="TEXT-INDENT:2em">System.IO.FileInfo:供应创立、复制、删除、挪动和翻开文件的实例办法的类<Pstyle="TEXT-INDENT:2em">System.IO.StreamReader:完成一个TextReader,使其以一种特定的编码从字撙节中读取字符。<Pstyle="TEXT-INDENT:2em">每一个我们所利用的类的属性和办法的详细用法我们将以代码正文的体例在程序中加以申明。<Pstyle="TEXT-INDENT:2em">System.IO称号空间在.NETFRAMEWORK供应的mscorlib.dll中,在利用VS.Net编程之前必要将此Dll援用到此项目中。<Pstyle="TEXT-INDENT:2em">我们所编写的程序都利用了Codebehind体例,即每个aspx程序都有一个对应的aspx.cs程序,aspx程序中只是写与页面显现相干的代码,一切逻辑完成的代码都放在响应的aspx.cs文件中,如许就能够更好得做到显现与逻辑的分别。因为我们的目标不是会商Codebehind手艺,以是就不在对此多加会商了。<Pstyle="TEXT-INDENT:2em">在这篇文章里,我们只先容几个次要的类及其关头办法的用法,具体程序请检察附带的源代码。<Pstyle="TEXT-INDENT:2em">程序一:显现服务器确当前信息和全体逻辑驱动器的称号的程序listdrivers.aspx<Pstyle="TEXT-INDENT:2em">次要办法1:我们利用GetSysInf()办法来失掉服务器确当前情况战争台的信息<Pstyle="TEXT-INDENT:2em">//猎取体系信息的办法,此办法在listdrivers.aspx.cs文件中<Pstyle="TEXT-INDENT:2em">publicvoidGetSysInf(){<Pstyle="TEXT-INDENT:2em">//猎取操纵体系范例<Pstyle="TEXT-INDENT:2em">qDrives=Environment.OSVersion.ToString();<Pstyle="TEXT-INDENT:2em">//猎取体系文件夹<Pstyle="TEXT-INDENT:2em">qSystemDir=Environment.SystemDirectory.ToString();<Pstyle="TEXT-INDENT:2em">/*猎取映照到历程高低文的物理内存量,经由过程这一内存映照量能够懂得ASP.NET程序在运转时必要几体系物理内存,有助于更好的计划我们的全部使用,由于物理内存量是以Byte为单元的,以是我们将此数值除以1024,能够失掉单元为KB的物理内存量*/<Pstyle="TEXT-INDENT:2em">qMo=(Environment.WorkingSet/1024).ToString();<Pstyle="TEXT-INDENT:2em">//猎取以后目次(即该历程从中启动的目次)的完整限制路径<Pstyle="TEXT-INDENT:2em">qCurDir=Environment.CurrentDirectory.ToString();//猎取主机的网<Pstyle="TEXT-INDENT:2em">络域名<Pstyle="TEXT-INDENT:2em">qDomName=Environment.UserDomainName.ToString();<Pstyle="TEXT-INDENT:2em">//猎取体系启动后经由的毫秒数<Pstyle="TEXT-INDENT:2em">qTick=Environment.TickCount;<Pstyle="TEXT-INDENT:2em">//盘算失掉体系启动后经由的分钟数<Pstyle="TEXT-INDENT:2em">qTick/=60000;<Pstyle="TEXT-INDENT:2em">//猎取呆板名<Pstyle="TEXT-INDENT:2em">qMachine=Environment.MachineName;<Pstyle="TEXT-INDENT:2em">//猎取运转以后历程的用户名<Pstyle="TEXT-INDENT:2em">qUser=Environment.UserName;<Pstyle="TEXT-INDENT:2em">/*检索此盘算机上格局为"<驱动器号>:"的逻辑驱动器的称号,前往字符串数组,这是下一步操纵的关头地点*/<Pstyle="TEXT-INDENT:2em">achDrives=Directory.GetLogicalDrives();<Pstyle="TEXT-INDENT:2em">//猎取此字符串数组的维数,断定有几个逻辑驱动器<Pstyle="TEXT-INDENT:2em">nNumOfDrives=achDrives.Length;<Pstyle="TEXT-INDENT:2em">}体系信息不必要举行操纵,我们复杂的用asp:Label将他们显现出来就好了。逻辑驱动器的个数在分歧的服务器上是不定的,以是用不定长数组保留逻辑驱动器的称号,并且逻辑驱动器的称号也是我们下一步扫瞄目次和文件的基本,故我们接纳了数据网格DataGrid来显现和处置它。显现和处置逻辑驱动器称号的DataGrid的代码(代码在listdrivers.aspx文件):<Pstyle="TEXT-INDENT:2em"><asp:DataGridid="DriversGrid"runat="server"AutoGenerateColumns="false"><Pstyle="TEXT-INDENT:2em"><Columns><Pstyle="TEXT-INDENT:2em"><asp:BoundColumnHeaderText="ID"DataField="ID"/><Pstyle="TEXT-INDENT:2em"><asp:BoundColumnHeaderText="磁盘名"DataField="Drivers"/><Pstyle="TEXT-INDENT:2em"><asp:HyperLinkColumn<Pstyle="TEXT-INDENT:2em">HeaderText="具体信息"<Pstyle="TEXT-INDENT:2em">DataNavigateUrlField="Drivers"DataNavigateUrlFormatString="listdir.aspx?dir={0}"<Pstyle="TEXT-INDENT:2em">DataTextField="Detail"<Pstyle="TEXT-INDENT:2em">Target="_new"/><Pstyle="TEXT-INDENT:2em"></Columns><Pstyle="TEXT-INDENT:2em"></asp:DataGrid>前两个BoundColumn列都是显现序号和实践逻辑驱动器称号的,必要申明的是第三列,我们在进进各个逻辑驱动器显现目次和文件之前必要将所选择的逻辑驱动器的称号传送到显现目次的文件往,以是必要一个特别的超等链接行HyperLinkColumn,我们将DataNavigateUrlField设置为数据源中要绑定到HyperLinkColumn中的超等链接的URL的字段,在此即逻辑驱动器称号。然后将DataNavigateUrlFormatString设置为当URL数据绑定到数据源中的字段时,此HyperLinkColumn中的超等链接的URL的显现格局,即要链接到的下一级处置页面,在此为listdir.aspx?dir={用户点击行的逻辑驱动器称号}1.ASP中经常使用的尺度组件:FileSystemObject,这个组件为ASP供应了壮大的文件体系会见才能,能够对服务器硬盘上的任何有权限的目次和文件举行读写、删除、更名等操纵。FSO工具来自微软供应的剧本运转库scrrun.dll中。利用上面的代码就能够在ASP中创立一个FSO工具:Setfso=CreateObject("Scripting.FileSystemObject")我们利用fso工具包括的属性和办法,如Drive、Drives、Folder、Floders、File、Files等对服务器的磁盘、目次和文件举行读、写、删除等操纵。这一壮大的文件体系会见才能给ASP共享空间供应者带来了严峻的平安成绩,良多ASP空间的办理员都删除此组件或将这个组件更名以免用户利用这一尺度组件。删除组件或组件更名的确是一个复杂的办法而且也很无效,可是却使宽大用户没法利用它的壮大的功效。收集上另有一种看起来很美的计划,它同意用户利用FileSystemObject组件又不影响服务器的平安,即对每个用户都设置一个自力的服务器用户和单个目次的操纵权限。可是这类办法是有成绩的。由于ASP和ASP.NET中在这方面的成绩非常相似,以是我们将在ASP.NET的响应办理举措部分详加申明。在ASP.NET中我们发明这一成绩仍旧存在,而且变得加倍难以办理。这是由于.NET中关于体系IO操纵的功效变得加倍壮大,而使这一成绩更严峻的是ASP.NET所具有的一项新功效,这就组件不必要象ASP那样必需要利用regsvr32来注册了,只需将Dll类库文件上传到bin目次下就能够间接利用了。这一功效的确给开辟ASP.NET带来了很年夜的便利,可是却使我们在ASP中将此dll删除大概更名的办理办法得到功效了,提防此成绩就变得加倍庞大。在会商办理计划之前,我们先来看一下怎样来完成上述的伤害的功效
<Pstyle="TEXT-INDENT:2em">2.文件体系<Pstyle="TEXT-INDENT:2em">我们还要利用System.IO称号空间的其他几个类是:<Pstyle="TEXT-INDENT:2em">System.IO.Directory:供应用于创立、挪动和列举经由过程目次和子目次的静态办法的类<Pstyle="TEXT-INDENT:2em">System.IO.File:供应用于创立、复制、删除、挪动和翻开文件的静态办法的类<Pstyle="TEXT-INDENT:2em">System.IO.FileInfo:供应创立、复制、删除、挪动和翻开文件的实例办法的类<Pstyle="TEXT-INDENT:2em">System.IO.StreamReader:完成一个TextReader,使其以一种特定的编码从字撙节中读取字符。<Pstyle="TEXT-INDENT:2em">每一个我们所利用的类的属性和办法的详细用法我们将以代码正文的体例在程序中加以申明。<Pstyle="TEXT-INDENT:2em">System.IO称号空间在.NETFRAMEWORK供应的mscorlib.dll中,在利用VS.Net编程之前必要将此Dll援用到此项目中。<Pstyle="TEXT-INDENT:2em">我们所编写的程序都利用了Codebehind体例,即每个aspx程序都有一个对应的aspx.cs程序,aspx程序中只是写与页面显现相干的代码,一切逻辑完成的代码都放在响应的aspx.cs文件中,如许就能够更好得做到显现与逻辑的分别。因为我们的目标不是会商Codebehind手艺,以是就不在对此多加会商了。<Pstyle="TEXT-INDENT:2em">在这篇文章里,我们只先容几个次要的类及其关头办法的用法,具体程序请检察附带的源代码。<Pstyle="TEXT-INDENT:2em">程序一:显现服务器确当前信息和全体逻辑驱动器的称号的程序listdrivers.aspx<Pstyle="TEXT-INDENT:2em">次要办法1:我们利用GetSysInf()办法来失掉服务器确当前情况战争台的信息<Pstyle="TEXT-INDENT:2em">//猎取体系信息的办法,此办法在listdrivers.aspx.cs文件中<Pstyle="TEXT-INDENT:2em">publicvoidGetSysInf(){<Pstyle="TEXT-INDENT:2em">//猎取操纵体系范例<Pstyle="TEXT-INDENT:2em">qDrives=Environment.OSVersion.ToString();<Pstyle="TEXT-INDENT:2em">//猎取体系文件夹<Pstyle="TEXT-INDENT:2em">qSystemDir=Environment.SystemDirectory.ToString();<Pstyle="TEXT-INDENT:2em">/*猎取映照到历程高低文的物理内存量,经由过程这一内存映照量能够懂得ASP.NET程序在运转时必要几体系物理内存,有助于更好的计划我们的全部使用,由于物理内存量是以Byte为单元的,以是我们将此数值除以1024,能够失掉单元为KB的物理内存量*/<Pstyle="TEXT-INDENT:2em">qMo=(Environment.WorkingSet/1024).ToString();<Pstyle="TEXT-INDENT:2em">//猎取以后目次(即该历程从中启动的目次)的完整限制路径<Pstyle="TEXT-INDENT:2em">qCurDir=Environment.CurrentDirectory.ToString();<Pstyle="TEXT-INDENT:2em">//猎取主机的网<Pstyle="TEXT-INDENT:2em">tail"<Pstyle="TEXT-INDENT:2em">HeaderText="具体信息"<Pstyle="TEXT-INDENT:2em">Target="_new"<Pstyle="TEXT-INDENT:2em">/><Pstyle="TEXT-INDENT:2em">在两个DataGrid(DirGrid,FileGrid)中我们分离设置了两个HyperLinkColumn列来导航到分歧的处置页面。<Pstyle="TEXT-INDENT:2em">在两个DataGrid中我们都利用了一个删除的按钮列:<Pstyle="TEXT-INDENT:2em"><asp:ButtonColumnHeaderText="删除"<Pstyle="TEXT-INDENT:2em">Text="删除"<Pstyle="TEXT-INDENT:2em">CommandName="Delete"<Pstyle="TEXT-INDENT:2em">/><Pstyle="TEXT-INDENT:2em">因为增加、更新、删除功效列都是DataGrid的默许模板列,以是能够在Vs.net中经由过程DataGrid的属性天生器主动增加此列。<Pstyle="TEXT-INDENT:2em">猎取上一页面所传送来的参数的代码:<Pstyle="TEXT-INDENT:2em">由于鄙人面发生数据源的办法中必要利用由上一个页面传送过去的参数来断定目次和文件的称号,以是在页面的Page_Load办法里利用了以下代码:<Pstyle="TEXT-INDENT:2em">strDir2List=Request.QueryString["dir"];<Pstyle="TEXT-INDENT:2em">字符串strDir2List即传过去的目次名或文件名。<Pstyle="TEXT-INDENT:2em">由于我们利用了两个DateGrid,就必要举行两次数据绑定,就有两个分歧的天生数据源的办法。<Pstyle="TEXT-INDENT:2em">天生目次数据网格(DirGrid)数据源的办法:<Pstyle="TEXT-INDENT:2em">//经由过程此办法前往一个汇合情势的数据视图DataView,用来初始化子目次的DataGrid<Pstyle="TEXT-INDENT:2em">ICollectionCreateDataSourceDir(){<Pstyle="TEXT-INDENT:2em">dtDir=newDataTable();<Pstyle="TEXT-INDENT:2em">DataRowdr;<Pstyle="TEXT-INDENT:2em">//向DataTable中增加新的数据列,共四列<Pstyle="TEXT-INDENT:2em">dtDir.Columns.Add(newDataColumn("DirID",typeof(Int32)));<Pstyle="TEXT-INDENT:2em">dtDir.Columns.Add(newDataColumn("DirName",typeof(string)));<Pstyle="TEXT-INDENT:2em">dtDir.Columns.Add(newDataColumn("DelDir",typeof(string)));<Pstyle="TEXT-INDENT:2em">dtDir.Columns.Add(newDataColumn("DirDetail",typeof(string)));<Pstyle="TEXT-INDENT:2em">//依据传进的参数(目次名)失掉此目次下一切子目次名的字符串数组<Pstyle="TEXT-INDENT:2em">string[]DirEntries=Directory.GetDirectories(strDir2List);<Pstyle="TEXT-INDENT:2em">//利用foreach轮回能够对未知长度的数组举行遍历轮回<Pstyle="TEXT-INDENT:2em">foreach(stringDirNameinDirEntries){<Pstyle="TEXT-INDENT:2em">dr=dtDir.NewRow();<Pstyle="TEXT-INDENT:2em">dr=i;//序号<Pstyle="TEXT-INDENT:2em">dr=DirName;//文件夹称号<Pstyle="TEXT-INDENT:2em">dr="删除";<Pstyle="TEXT-INDENT:2em">dr="检察概况";<Pstyle="TEXT-INDENT:2em">dtDir.Rows.Add(dr);<Pstyle="TEXT-INDENT:2em">i++;<Pstyle="TEXT-INDENT:2em">}<Pstyle="TEXT-INDENT:2em">DataViewdvDir=newDataView(dtDir);<Pstyle="TEXT-INDENT:2em">//前往失掉的数据视图<Pstyle="TEXT-INDENT:2em">returndvDir;}
<Pstyle="TEXT-INDENT:2em">天生文件数据网格(FileGrid)数据源的办法:<Pstyle="TEXT-INDENT:2em">//经由过程此办法前往一个汇合情势的数据视图DataView,用来初始化文件的DataGrid<Pstyle="TEXT-INDENT:2em">ICollectionCreateDataSourceFile(){<Pstyle="TEXT-INDENT:2em">dtFile=newDataTable();<Pstyle="TEXT-INDENT:2em">DataRowdr;<Pstyle="TEXT-INDENT:2em">dtFile.Columns.Add(newDataColumn("FileID",typeof(Int32)));<Pstyle="TEXT-INDENT:2em">dtFile.Columns.Add(newDataColumn("FileName",typeof(string)));<Pstyle="TEXT-INDENT:2em">dtFile.Columns.Add(newDataColumn("DelFile",typeof(string)));<Pstyle="TEXT-INDENT:2em">dtFile.Columns.Add(newDataColumn("FileDetail",typeof(string)));<Pstyle="TEXT-INDENT:2em">//依据传进的参数(目次名)失掉此目次下一切文件名的字符串数组<Pstyle="TEXT-INDENT:2em">string[]FileEntries=Directory.GetFiles(strDir2List);<Pstyle="TEXT-INDENT:2em">foreach(stringFileNameinFileEntries){<Pstyle="TEXT-INDENT:2em">dr=dtFile.NewRow();<Pstyle="TEXT-INDENT:2em">dr=i;<Pstyle="TEXT-INDENT:2em">dr=FileName;<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">dr="删除";<Pstyle="TEXT-INDENT:2em">dr="检察概况";<Pstyle="TEXT-INDENT:2em">dtFile.Rows.Add(dr);<Pstyle="TEXT-INDENT:2em">i++;<Pstyle="TEXT-INDENT:2em">}<Pstyle="TEXT-INDENT:2em">dvFile=newDataView(dtFile);<Pstyle="TEXT-INDENT:2em">returndvFile;<Pstyle="TEXT-INDENT:2em">}<Pstyle="TEXT-INDENT:2em">我们编程完成了两个DataSource只需在页面的Page_Load办法里对两个DataGrid举行数据绑定便可将失掉的DataTable中的数据显现在aspx页面的DataGrid上。<Pstyle="TEXT-INDENT:2em">数据绑定代码://对子目次数据列表DirGrid举行数据源界说和数据绑定<Pstyle="TEXT-INDENT:2em">DirGrid.DataSource=CreateDataSourceDir();<Pstyle="TEXT-INDENT:2em">DirGrid.DataBind();<Pstyle="TEXT-INDENT:2em">//对文件数据列表FileGrid举行数据源界说和数据绑定<Pstyle="TEXT-INDENT:2em">FileGrid.DataSource=CreateDataSourceFile();<Pstyle="TEXT-INDENT:2em">FileGrid.DataBind();<Pstyle="TEXT-INDENT:2em">经由过程我们上边先容的次要办法,我们完成了对某个逻辑驱动器或目次中的一切子目次和文件举行了列表显现,而且能够依据显现了局更进一步的扫瞄子目次大概检察文件的属性和内容提纲。扫瞄子目次仍旧是经由过程listdir.aspx这个程序,没有任何子目次级别请求,没有目次深度限定。<Pstyle="TEXT-INDENT:2em">删除子目次和文件的次要办法和代码:<Pstyle="TEXT-INDENT:2em">在删除子目次时,我们必要用到Directory.Delete(string,bool)办法,此办法有两种:<Pstyle="TEXT-INDENT:2em">1.publicstaticvoidDelete(string);<Pstyle="TEXT-INDENT:2em">从指定路径删除空目次。<Pstyle="TEXT-INDENT:2em">2.publicstaticvoidDelete(string,boolean);<Pstyle="TEXT-INDENT:2em">删除指定的目次并(假如唆使)删除该目次中的任何子目次,将boolean设置为true的话,则删除此目次下的一切子目次和文件,不然将boolean设置为false。<Pstyle="TEXT-INDENT:2em">在这里我们利用了第二种办法,假如选择删除的话,将删除此目次下的一切子目次和文件。<Pstyle="TEXT-INDENT:2em">注重:Directory类的一切办法都是静态的,因此无需具有目次Directory的实例便可被挪用。<Pstyle="TEXT-INDENT:2em">/*完成删除子目次的办法,此办法为VS.NET主动增加,注重DataGridCommandEventArgse为DirGrid中CommandName="Delete"的ButtonColumn的事务,经由过程此事务,我们能够失掉是那一行的ButtonColumn按钮列被点击,进而断定我们必要删除的子目次的称号*/<Pstyle="TEXT-INDENT:2em">privatevoidDirGrid_DeleteCommand(objectsource,System.Web.UI.WebControls.DataGridCommandEventArgse){<Pstyle="TEXT-INDENT:2em">/*界说一个单位格,e.Item为此事务所产生行的一切项目,e.Item.Cells为全部行的第二个单位格的内容,在此DataGrid中为子目次的称号<Pstyle="TEXT-INDENT:2em">*/<Pstyle="TEXT-INDENT:2em">TableCellItemCell=e.Item.Cells;<Pstyle="TEXT-INDENT:2em">//失掉此子目次的称号的字符串<Pstyle="TEXT-INDENT:2em">stringitem=ItemCell.Text;<Pstyle="TEXT-INDENT:2em">//删除此子目次<Pstyle="TEXT-INDENT:2em">Directory.Delete(item,true);<Pstyle="TEXT-INDENT:2em">//删除落后行数据绑定以更新数据列表<Pstyle="TEXT-INDENT:2em">DirGrid.DataBind();<Pstyle="TEXT-INDENT:2em">}<Pstyle="TEXT-INDENT:2em">在删除文件时,我们必要用到File.Delete(stringpath);<Pstyle="TEXT-INDENT:2em">注重:File类的一切办法都是静态的,因此无需具有目次的实例便可被挪用。<Pstyle="TEXT-INDENT:2em">privatevoidFileGrid_DeleteCommand(objectsource,<Pstyle="TEXT-INDENT:2em">System.Web.UI.WebControls.DataGridCommandEventArgse){<Pstyle="TEXT-INDENT:2em">TableCellItemCell=e.Item.Cells;<Pstyle="TEXT-INDENT:2em">//失掉此文件称号的字符串<Pstyle="TEXT-INDENT:2em">stringitem=ItemCell.Text;<Pstyle="TEXT-INDENT:2em">//删除此文件<Pstyle="TEXT-INDENT:2em">File.Delete(item);<Pstyle="TEXT-INDENT:2em">//删除落后行数据绑定以更新数据列表<Pstyle="TEXT-INDENT:2em">DirGrid.DataBind();<Pstyle="TEXT-INDENT:2em">}经由过程上边的次要办法我们在页面上完成了一个删除某一个子目次大概文件的功效,此功效在测试时必要稳重利用,一旦删除没法经由过程惯例办法恢复。其他如目次或文件更名、修正内容等办法都能够在此程序基本上增加响应的功效,完成办法也很复杂。列位喜好者能够经由过程增加响应功效,使之扩大为一个基于Web的服务器文件办理体系。我们也能够由此看到这个程序的伤害性,一个没有对此平安隐患接纳提防措施的服务器的文件体系就都表露在了利用此程序的用户眼前。
那做企业软件是不是最好用J2EE? CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。 PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。 网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项! 主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。 ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。 比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。 比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
页:
[1]