Get与Post区别与范例讲解,Nodejs之http的表单提交

事先介绍了http模块的央求与响应的经过,也介绍了TCP协议的客户端与服务端的数额传输,http协议是TCP上层协议。这里创办了贰个简单易行的web服务器,并对交付表单数据举行拍卖,依据了不起的Node.js一书总括。

POST的安全性要比GET的安全性高。注意:这里所说的安全性和上边GET提到的“安全”不是同个概念。上面“安全”的含义仅仅是不作数据修改,而那边安全的意义是当真的Security的意思,举例:通过GET提交数据,用户名和密码将公开现身在U揽胜L上,因为(1)登入页面有一点都不小希望被浏览器缓存,(2)其余人查看浏览器的历史纪录,那么人家就足以得到你的账号和密码了,除却,使用GET提交数据还有大概会招致克罗斯-site
request forgery攻击。

一、 J2EE WEB应用文件目录结构

Java
Web选取由一组静态HTML页、Servlet、JSP和其余连锁的class组成,它们一齐组成三个大的工程项目。各类组件在Web应用中都有牢固的寄存目录。Web应用的安排新闻寄放在web.xml文件中。在发表某个零部件(如Servlet)时,必须在web.xml文件中增添相应的布局音信
Java Web应用程序必须选择专门的职业的目录结构

1.
应用程序根目录,能够取自由的名字,全部的HTML、JSP文件都位居这一个目录下
  1.1 WEB-INF目录: 必须目录
    1.1.1 web.xml: Web应用布置描述文件,必须文件
    1.1.2 classes目录:
      1)
用于贮存单个*.classes字节码文件,Servlet类公事也寄放在那几个目录下
    1.1.3 lib目录:
      1) 存放第三方类库文件,即打包后的JA途观文件
    1.1.4 TLD文件: 标签库描述文件
  1.2 其他静态文件:
    1.2.1 HTML
    1.2.2 CSS
    1.2.3 JavaScript
    1.2.4 图片等
  1.3 *.jsp: 存猖狂意多个JSP页面

图片 1

繁多情状下,需求传递一些新闻,从浏览器到
Web 服务器,最终到后台程序。浏览器采取二种格局可将那么些音信传递到 Web
服务器,分别为 GET 方法和 POST 方法。

  提交以往,必要取得央浼音讯的需要体,因为POST方法中国国投息都在央浼体中,用req绑定data事件获取数据,这里供给注意的是必须得在数据接受达成后再对数据开始展览操作,即必须绑定end事件监听伏乞新闻是还是不是传输达成。

6.张开考虑

林炳文Evankaka原创小说。转发请评释出处

  req是呼吁信息,req.url表示央浼的地址,当服务器运维之后,req央浼的网站为127.0.0.1:贰仟,此时req.url为‘/’,则赶回的是一串表单数据,在表单数据中装置了method是post,action是‘/url’,表面提交数据的主意是POST,将数据提交的地点为127.0.0.1:三千/url,而付出今后要赢得新的页面即127.0.0.1:3000/url,此时req.url为‘/url’,故展现的另二个页面。

依附HTTP标准,POST表示大概修退换服务器上的能源的伸手。

四、使用 Servlet 读取表单数据

Servlet
管理表单数据,这一个数据会依据不相同的动静选择区别的艺术自动分析:

  • getParameter():您能够调用
    request.getParameter() 方法来获得表单参数的值。
  • getParameterValues():譬如参数出现二次以上,则调用该方法,并再次来到四个值,比如复选框。
  • getParameterNames():若果您想要获得当前恳请中的全体参数的完全列表,则调用该办法。

如上正是本文的全体内容,希望对大家的读书抱有支持,也可望大家多多帮忙脚本之家。

GET比POST更不安全,因为参数直接揭破在U途达L上,所以不能够用来传递敏感音讯。

五、二者分别

===========================================================

   
首先:Post传输数据时,不须求在U大切诺基L中展现出来,而Get方法要在U福睿斯L中显示。 
   
其次:Post传输的数据量大,能够高达2M,而Get方法由于饱受U凯雷德L长度限制,只好传递差不离1024字节. 
   
再度:Post便是为了将数据传送到劳动器段,Get正是为着从服务器段取得数据.而Get之所以也能传送数据,只是用来统一希图报告服务器,你毕竟需求哪些的数据.Post的音讯作为http需要的开始和结果,而Get是在Http尾部传输的。

六、再说Servlet中的GET和POST之间的界别

        get和post那是http协议的两种办法,别的还应该有head, delete等
。这二种艺术有本质的分别,get只有二个流,参数附加在url后,大小个数有严俊限制且只好是字符串。post的参数是经过别的的流传递的,不经过url,所以能够非常的大,也足以传递二进制数据,如文件的上传。

       
在servlet开辟中,以doGet()和doPost()分别管理get和post方法。
别的还会有四个doService(),
它是贰个调解措施,当一个伸手发生时,首先实践doService(),不管是get依然post。在HttpServlet那个基类中贯彻了叁个角度,首先剖断是呼吁时get还是post,假若是get就调用doGet(),
假设是post就调用doPost()。你也能够直接过载doService()方法,那样您能够随意是get依然post。都会实行这几个方法。

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属性所指的U劲客L中,值和表单内相继字段一一对应,在U中华VL中得以看到。post是因此HTTP
post机制,将表单内每家每户字段与其剧情放置在HTML
HEADECRUISER内一同传送到ACTION属性所指的UTiggoL地址。用户看不到这些进度。
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”>是不平等的。

您可能感兴趣的小说:

  • 健全分析node
    表单的图形上传
  • Nodejs下用submit提交表单提示cannot
    post错误的解决方式
  • nodejs
    落成模拟form表单上传文件
  • angularjs
    $http实现form表单提交示例
  • httpclient模拟post诉求json封装表单数据的贯彻方式

“大家信任公众都能够成为三个技术员,未来开班,找个师兄,带您入门,掌握控制本身攻读的韵律,学习的中途不再盲目”。

七、使用楷模

在eclipse新建一个web工程,取名随便,然后加多web.xml  
index.jsp、还恐怕有servlet..结构如下:

本文工程无偿下载

图片 2

GetServlet.java代码如下:

doGet

    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String name1 = request.getParameter("name1");
        String price1 = request.getParameter("price1");

        out.println("<HTML>");
        out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println("  <BODY>");
        out.print("    This is ");
        out.print(this.getClass());
        out.println(", using the POST method");
        out.println("<br></br>");
        out.println("名称:"+name1);
        out.println("<br></br>");
        out.println("价格:"+price1);
        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();

    }

doPost

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String name2 = request.getParameter("name2");
        String price2 = request.getParameter("price2");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println("  <BODY>");
        out.print("    This is ");
        out.print(this.getClass());
        out.println(", using the POST method");
        out.println("<br></br>");
        out.println("名称:"+name2);
        out.println("<br></br>");
        out.println("价格:"+price2);
        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }

index.jsp:

<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Insert title here</title>
</head>
<body>
    <form action="servlet/GetServlet" method="GET">
        名称: <input type=text name=name1 value=""> 
        价格: <input type=text name=price1 value=""><br> 
        <input type="submit" value="您采用了GET方式提交"> <br> 
    </form>
    --------------------------------这是分割线-------------------------------------
    <br></br>
    <form action="servlet/GetServlet" method="POST">
        名称: <input type=text name=name2 value=""> 
        价格: <input type=text name=price2 value=""><br> 
        <input type="submit" value="您采用了POST方式提交"> 
    </form>
</body>
</html>

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <!-- 配置初始打开的页面 -->
    <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
     <!-- 类名 -->
    <servlet-name>GetServlet</servlet-name>
    <!-- 所在的包 -->
    <servlet-class>com.mucfc.chapter0.GetServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>GetServlet</servlet-name>
    <!-- 访问的网址 -->
    <url-pattern>/servlet/GetServlet</url-pattern>
    </servlet-mapping>
</web-app>

下一场就是运营了:

图片 3

用get提交

图片 4

用post提交

图片 5

本文工程无需付费下载

  此前也计算过,向服务器交由数据供给利用POST方法,GET方法的伸手新闻都在查询字符串中,未有诉求体,而POST方法的传输的数量都在诉求体中,故提交表单数据时须要动用POST方法。

GET央求参数会被完好保存在浏览器历史记录里,而POST中的参数不会被保存。

二、GET 方法

GET
方法向页面供给发送已编码的用户新闻。页面和已编码的新闻中间用 ?
字符分隔,如下所示:

http://www.test.com/hello?key1=value1&key2=value2

GET 方法是私下认可的从浏览器向 Web
服务器传递音信的点子,它会生出多个相当长的字符串,出现在浏览器的地方栏中。假诺你要向服务器传递的是密码或其余的灵活音讯,请不要选取GET 方法。GET 方法有高低限制:央浼字符串中最多只可以有 10贰14个字符。

那些消息应用 QUE汉兰达Y_ST卡宴ING
头传递,并能够通过 QUEOdysseyY_STRubiconING 情况变量访谈,Servlet 使用 doGet()
方法管理那体系型的呼吁。

交付数据后:

2.文化深入分析

三、POST 方法

另三个向后台程序传递新闻的相比较可信的秘籍是
POST 方法。POST 方法打包消息的章程与 GET 方法基本同样,可是 POST
方法不是把音信作为 U猎豹CS6L 中 ?
字符后的文本字符串举办发送,而是把那一个新闻作为叁个单独的音信。音信以专门的学业输出的花样传播后台程序,您能够分析和使用那几个职业输出。Servlet
使用 doPost() 方法管理那体系型的伸手。

图片 6

GET:央浼钦点的页面信息,并回到实体中央

 //提交表单数据
 var http=require('http');
 var querystring=require('querystring');

 var server=http.createServer(function (req,res) {
 //req.url不同则返回的页面不同
 if('/'==req.url){
  res.writeHead(200,{'Content-Type':'text/html'});
  res.write([
  '<form method="post" action="/url">',
  '<h1>My Form</h1>',
  '<fieldset>',
  '<label>Personal Information</label>',
  '<p>What is your name?</p>',
  '<input type="text" name="name">',
  '<button>submit</button>',
  '</form>'
  ].join(''));
  res.end();
 }else if('/url'==req.url&&req.method=='POST'){
  var reqBody='';
  req.on('data',function (data) {
  reqBody += data;
  });
  req.on('end',function () {//用于数据接收完成后再获取
  res.writeHead(200,{'Content-Type':'text/html'});
  res.write('you have sent a '+req.method+' request\n');
  res.write('<p>Content-Type:'+req.headers['content-type']+'</p>'
   +'<p>Data:your name is '+querystring.parse(reqBody).name+'</p>');
  res.end();
  })
 }else{
  res.writeHead(404);
  res.write('Not Found');
  res.end();
 }
 }).listen(3000,function () {
 console.log('server is listening 3000');
 });

GET诉求在UPRADOL中传递的参数是有长度限制的,而POST么有。

图片 7

GET和POST使用的遇到

  querystring是询问字符串模块,用于对查询字符串的分析,parse方法将查询字符串深入分析成三个目标。在git中运作服务器,获得页面是这么的:

GET和POST是怎样?HTTP协议中的二种发送必要的点子。HTTP是何等?HTTP是依据TCP/IP的关于数据如何在万维网中哪些通讯的协议。HTTP的平底是TCP/IP。所以GET和POST的尾部也是TCP/IP,也正是说,GET/POST都以TCP链接。GET和POST能做的政工是同样同样的。你要给GET加上request
body,给POST带上url参数,技能上是完全行的通的。GET发生一个TCP数据包;POST爆发多个TCP数据包。

POST方法提交表单数据

自家的特邀码:31050617,只怕您能够向来点击此链接:一同来读书

新闻结构:

幂等:

POST把提交的数目则停放在是HTTP包的包体中。如:name1=value1&name2=value2

今日给我们大快朵颐一下,修真院官方网址js职责5,深度思索中的知识点——get 与
post的界别?application json 与form表单的区分?

平时回答:

对此传递进度来讲,指的是交给的数量不会向来在地址栏看见。(1)登陆页面有比非常的大希望被浏览器缓存,(2)别的人查看浏览器的历史纪录。

基于HTTP标准,GET用于新闻获得,而且应当是安全的和幂等的。所谓安全的意味该操功能于获取新闻而非修改新闻。换句话说,GET央浼一般不应发生副成效。正是说,它独有是获得财富音信,就好像数据库查询同一,不会修改,扩张数据,不会影响能源的情状。这里安全的意义仅仅是指是非修改消息。

率先说HTTP的定义:在Web应用中,服务器把网页传给浏览器,实际上正是把网页的HTML代码发送给浏览器,让浏览器呈现出来。而浏览器和服务器之间的传导协议是HTTP。HTTP协议是Hyper
Text Transfer Protocol(超文本传输协议)的缩写,是用来从万维网(WWW:World
Wide Web)服务器传输超文本到本地浏览器的传递协议。
职业规律:HTTP协议工作于客户端-服务端,浏览器作为HTTP客户端通过UWranglerL(统一财富定位符)向HTTP服务端发送诉求,服务器收到到诉求后,向客户端发送响应音讯。

application/x-www-form-urlencoded那应当是最广大的POST提交数据的不二等秘书籍了。浏览器的原生form表单,倘若不设置enctype属性,
那么最后就能以application/x-www-form-urlencoded格局交给数据。须要类似于上边那样(
非亲非故的央浼头在本文中都省略掉了):POST HTTP/1.1
Content-Type: application/x-www-form-urlencoded;charset=utf-8
title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3首先,Content-Type被内定为application/x-www-form-urlencoded;
其次,提交的数码根据key1=val1&key2=val2的方法开始展览编码,key和val都进展了U哈弗L转码。
超过58%服务端语言都对这种格局有很好的辅助。