GET和POST的本质区别是什么? 使用GET,form中的数据将编码到url中,而使用POST的form中的数据则在http协议的header中传输。在使用上,当且仅当请求幂等(字面意思是请求任意次返回同样的结果,本质是请求本身不会改变服务器数据和状态)时使用GET,当请求会改变服务器数据或状态时(更新数据,上传文件),应该使用POST。 区别使用GET,POST意义何在? 重复访问使用GET方法请求的页面,浏览器会使用缓存处理后续请求。使用POST方法的form提交时,浏览器机遇POST将产生永久改变的假设,将让用户进行提交确认。当编成人员正确的使用GET,POST后,浏览器会给出很好的缓存配合,时响应速度更快。 在form提交阶段的差别 form提交的第一步是创建数据集,并根据ENCTYPE对数据集进行编码。ENCTYPE有两个值:multipart/form-data,application/x-www-form-urlencoded(默认值),前者可同时用于GET,POST,后者只用于POST。然后进行数据传输–对于GET方法,数据集使用content type application/x-www-form-urlencoded编码并附在url后面,在这种模式下,数据严格限制为ASCII码;对于POST,使用content type编码字符集并将其构造成消息发送。 在服务器处理部分的差别 原则上,除理GET和POST请求是没有分别的。但由于数据通过不同的方法编码,需要有不同的解码机制。所以,方法变化将导致处理请求的代码变化。比如对于cgi,处理GET时通过环境变量获得参数,处理POST请求时则通过标准输入(stdin) 获得数据。 从使用经验,我们有如下总结: 1、get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。 2、对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。两种方式的参数都可以用Request来获得。 3、get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。 4、get安全性非常低,post安全性较高。 5、<form method=”get” action=”a.asp?b=b”>跟<form method=”get” action=”a.asp”>是一样的,也就是说,action页面后边带的参数列表会被忽视;而<form method=”post” action=”a.asp?b=b”>跟<form method=”post” action=”a.asp”>是不一样的。 另外 Get请求有如下特性:它会将数据添加到URL中,通过这种方式传递到服务器,通常利用一个问号?代表URL地址的结尾与数据参数的开端,后面的参数每一个数据参数以“名称=值”的形式出现,参数与参数之间利用一个连接符&来区分。 Post请求有如下特性:数据是放在HTTP主体中的,其组织方式不只一种,有&连接方式,也有分割符方式,可隐藏参数,传递大批数据,比较方便。
问题: B/S软件开发的过程中,软件开发人员使用的已经不仅仅是一门单纯的编程语言。除了会用C# 或者java(c++,vb,php…)等高级语言外,还需要使用html或者xml设定页面结构,使用javascript设定页面行为,使用css/XSTL进行页面布局。将来或许还会有更多的技术和实现方法(Flesh, silverlight, javaFX, Felx),林子大了什么问题都会出现。特别是页面的呈现和逻辑代码的处理如果不当,将会出现很多麻烦。 传统的做法 假设有这样一段html 页面代码 <HTML> <HEAD> <TITLE> alert inside html </TITLE> <script language=”javascript”> function promptTest(string){ this.alert(string); } </script> </HEAD> <BODY> <input type=”button” value=”点击我” onclick=”promptTest(‘hello,you have just clicked on me’);”/> </BODY> </HTML> 在浏览器中用户会看到一个按钮,点击后弹出一个消息框,上面显示hello,you have just clicked on me。这里仅仅是一个简单的函数。在实际项目中,特别是在使用了ajax的项目中,有可能到处都是javascript函数。在这个例子中,使用onclick=”promptTest(‘hello,you have just clicked [...]
项目中经常会遇到树形数据的展现,包括导航,选择等功能,所以树控件在大多项目中都是必须的。那一个实用的树应该具备什么功能呢? 根据我的项目实践情况,主要是几个关键点: 1:支持静态的树,即一次性将全部数据加载到客户端。 2:异步树,即一次只加载一级或若干级节点,子节点可以异步加载数据。 3:Checkbox树(可能是静态树也可能是异步树),用于选择(如选择组织机构,选择数据字典项)等,最好是能够支持节点级联(这个是难点) 4:能够承载大数据量,并性能表现优异 5:能够在主流浏览器中运行良好
10.4.1 Frameset与Frame的区别 首先讲解Frameset与Frame之间的区别。 <Frameset></Frameset>用来划分框架,每一个框架由<Frame></Frame>标记。<Frame></Frame>必须在<Frameset></Frameset>之内使用,代码如下: <FRAMESET border=1 frameSpacing=1 borderColor=#47478d rows=* cols=180,*> <FRAME src=”inc/admin_left.htm” name=left scrolling=no id=”left”> <FRAME src=”inc/admin_center.htm” name=main scrolling=”no”> </FRAMESET> 在上面的例子当中,<Frameset></Frameset>把页面分为左右两个部分,左侧框架中的页面是admin_left.htm,右侧框架中的页面是admin_center.htm。 注意:<Frame></Frame>标记的框架顺序为从左至右或从上到下。 两者的差别如下: ● <Frameset>为框架标记,说明该网页文档为框架组成,并设定文档中组成框架集的框架的布局。 ● <Frame>用以设置组成框架集中各个框架的属性。 10.4.2 Frameset参数设置 <Frameset>需要设置一些特定的参数,这些参数直接决定了整个页面的布局,代码如下: <Frameset border=1 frameSpacing=1 borderColor=#47478d rows=* cols=180,*> 关于上段代码的各项参数设置及其含义如表10.3所示。 表10.3 Frameset参数 参 数 说 明 Border 设定框架的边框厚度,以pixels为单位 frameborder 设定是否显示框架的边框,0为不显示,1为显示 FrameSpacing 表示框架与框架之间的距离 BorderColor 设定框架的边框颜色 Row 将文档分为上下的框架,Row后的值可以为数值或百分数,*表示占用余下的空间,数值的个数代表水平分成的框架个数,例如Rows=“210,*,10%”,表示页面分为上中下三个框架页,上边的框架占用210px,下边的框架占用整个文档的10%,余下的空间为中间的框架占用。*是一个相对的概念,例如Row=*,表示页面中没有上下结构的框架布局 [...]
<input onclick=”window.location.reload()” type=”button” value=”刷新” /> <input onclick=”window.history.go(1)” type=”button” value=”前进” /> <input onclick=”window.history.go(-1)” type=”button” value=”后退” /> <input onclick=”window.history.forward()” type=”button” value=”前进” /> <input onclick=”window.history.back()” type=”button” value=”后退” /> 后退+刷新 <input onclick=”window.history.go(-1);window.location.reload()” type=”button” value=”后退” />
在模块化的系统设计中, 一般应该在模块内, 通过获取模块的部署路径(dirname(__FILE__), php5.3以后更是提供了__DIR__常量)从而使用绝对路径.
近期评论