1.导言1。理解http(超文本传输协议),它是超媒体系统应用程序之间的分布式、协作和通信协议。是万维网上信息交流的基础。它是以HTML文档从web服务器传输到web浏览器的方式进行的,如下图所示:。
在TCP/IP协议系统中,HTTP工作在TCP协议上。我们可以引出TCP/IP协议层次模型,如下图所示:。
HTTP请求方法如下:(1). options 3360返回服务器对特定资源支持的HTTP请求方法。您也可以通过向Web服务器发送一个“*”请求来测试服务器的功能。(2).HEAD:向服务器请求一个与GET请求一致的响应,只是响应正文不会被返回。这种方法可以在不传输整个响应内容的情况下获得包含在响应消息报头中的元信息。(3).GET:向特定资源发送请求。注意:GET方法不应该用在导致“副作用”的操作中,比如web app。原因之一是GET可能会被网络蜘蛛随意访问。(4).POST:将数据提交给指定的资源进行处理(如提交表单或上传文件)。数据包含在请求正文中。POST请求可能会导致创建新资源和/或修改现有资源。(5).PUT:将其最新内容上传到指定的资源位置。(6).DELETE:请求服务器删除由请求-URI标识的资源。(7).TRACK:回显服务器收到的请求,主要用于测试或诊断。2.表单提交原则这里引用Daniel的总结:(1)表单提交时,浏览器会将表单内容封装为HTTP请求,包含名称属性的值和所有表单元素的值属性,形式为name=value。(HTTP Request被web服务器获取后会被解析封装成Request对象,请求对象中有一个Parameters集合,专门用来存储所有的表单元素名称-值对。(3)每个表单元素的名称-值对被封装为一个参数,该参数实际上是一个Map,因此您可以使用request.getParameter(名称)在您的Servlet中获取它的值。既然大多头已经说得很清楚了,我们需要搞清楚的是表格是由什么提交的。这里,表单标签有一个非常重要的属性enctype,它设置了提交表单数据的编码方法。有三种类型:(1)。application/x-www-form-URL encoded:这是默认的编码方法。按值进行数据处理[这还很模糊](2)。多部分/表单数据:表单数据由二进制流(3)处理。text/plain:当表单的action属性值为mailto:URL形式时使用。用于通过表单直接发送邮件。2.HtmlForm控件1。HtmlForm控件用于控制表单元素。它的主要属性如下:attribute描述ActionURL,它定义了提交表单时将数据发送到哪里。注意:这个属性总是被设置为页面本身的URL!属性返回此元素的所有属性名称和值对。指示是否禁用控件的禁用布尔值。默认值为false。EncType用于编码表单内容的MIME类型。Id控件的唯一id。InnerHtml设置或返回Html元素的开始标记和结束标记之间的内容。特殊字符不会自动转换为HTML实体。InnerText设置或返回HTML元素的开始和结束标记之间的所有文本。特殊字符会自动转换为HTML实体。方法窗体向服务器传输数据的方式。的法律价值是“发布”和“获取”。默认为“发布”。名称表单的名称。Runat指定控件是服务器控件。必须设置为“服务器”。样式设置或返回应用于控件的CSS属性。标记名返回元素的标记名。加载目标网址的目标窗口。一个可视布尔值,指示控件是否可见。方法:发布/获取;不同的是,Get表示浏览器主动上传数据到Server,数据立即传输,其执行效率较快,但传输的数据量不能太大;Post表示服务器抓取数据。虽然不是那么直接,但可以传输的数据量是没有限制的。操作:提交数据的页面,即数据应该发送到的网站。2.post和Get的区别:http://jb51.net/web/72554.htmlForm提供两种数据传输方式:——get和POST。虽然都是数据提交方式,但在实际传输中差异较大,可能会对数据造成严重影响。
虽然Web容器屏蔽了两者之间的一些差异,以便方便地获取变量值,但这将有助于理解未来编程中的差异。表单中的get和post方法在数据传输过程中分别对应HTTP协议中的GET和POST方法。主要区别如下:1 .Get用于从服务器获取数据,而Post用于向服务器传输数据。2.Get以变量=值的形式将表单中的数据添加到操作指向的URL,并使用“?”两者都有。连接,每个变量之间用“”连接;Post是将表单中的数据放入表单的数据体中,以变量和值相互对应的方式传递给动作指向的URL。3.Get是不安全的,因为在传输过程中,数据是放在请求的URL中的,但是现在很多现有的服务器、代理服务器或者用户代理都会将请求的URL记录在一个日志文件中,放在某个地方,这样一些隐私信息就有可能被第三方看到。此外,用户还可以在浏览器上直接看到提交的数据,系统的一些内部消息会显示在用户面前。Post的所有操作对用户都是不可见的。4.Get传输的数据量较小,主要是受到URL长度的限制。而且Post可以传输很多数据,所以上传文件的时候只能用Post(当然还有一个原因,后面会提到)。5.Get将窗体的数据集的值限制为ASCII字符;而Post支持整个ISO10646字符集。6.获取是表单的默认方法。使用Post传输的数据,通过设置编码可以正确转换中文。Get传输的数据没有变化。在今后的程序中,我们必须注意这一点。1.Get方法通过url请求传输用户的数据,将表单中字段的名称与其内容成对字符串连接起来,放在action属性指示的程序url之后,如http://www.mdm.com/test.asp? Name=ASD password=sad,数据会直接显示在URL上,就像用户点击一个链接一样;在Post方法中,通过HTTP post机制,将表单中字段的名称及其内容放在HTML头中,由动作属性指示的程序发送到服务器进行处理。程序将通过stdin读取并处理表单数据。2.在获取模式下,有必要使用请求。获取变量值。而Post方法通过Request访问提交的内容。表格3。Get方法传输的数据量很小,一般限制在2 KB左右,但执行效率比Post方法好。Post传输的数据量比较大,正在等待服务器读取数据,但也有字节限制,就是为了避免对数据量大的服务器进行恶意攻击。根据微软的说法,微软对请求可以接收的最大数据量有限制。表单(),在IIS 4中是80 KB字节。IIS 5中100 KB字节:除非你确定你提交的数据可以一次提交,否则请用Post方法4提交数据,尽量Get,这样会带来安全问题。例如,当通过登录页面上的Get提交数据时,用户名和密码将出现在URL上。如果页面可以缓存或其他人可以访问客户的机器,则可以从历史记录中获取用户的帐户和密码。因此,建议表单提交使用Post方法。Post方法提交的表单页面的一个常见问题是,如果页面刷新,会弹出一个对话框,提示出于安全考虑,最好使用Post提交数据。理解了这一点之后,通过上传控件和在后来的ASP.NET中请求获取表单变量,就可以很容易理解了。此外,获取和发布之间的区别非常关键。去年面试的时候因为回答不好被偷偷带回去了。看来以后要把基础的东西熟悉扎实,才能顺利的为后面的路工作。