• servlet中doGet()和doPost()的区别


    1.生成方式

    get方法有四种:

      ①直接在URL地址栏中输入URL

      ②网页中的超链接

      ③form中method为get

      ④form中method为空时,默认是get提交

    post只知道有一种:form中method属性为post。

    2、数据传送方式

    get方式:表单数据存放在URL地址后面。所有get方式提交时HTTP中没有消息体。

    post方式:表单数据存放在HTTP协议的消息体中以实体的方式传送到服务器。

    3、服务器获取数据方式

    GET方式:服务器采用request.QueryString来获取变量的值。

    POST方式:服务器采用request.Form来获取数据。

    4、传送的数据量

    GET方式:数据量长度有限制,一般不超过2kb。因为是参数传递,且在地址栏中,故数据量有限制。

    POST方式:适合大规模的数据传送。因为是以实体的方式传送的。

    5、安全性

    GET方式:安全性差。因为是直接将数据显示在地址栏中,浏览器有缓冲,可记录用户信息。所以安全性低。

    POST方式:安全性高。因为post方式提交数据时是采用的HTTP post机制,是将表单中的字段与值放置在HTTP HEADER内一起传送到ACTION所指的URL中,用户是看不见的。

    6、在用户刷新时

    GET方式:不会有任何提示、

    POST方式:会弹出提示框,问用户是否重新提交

    1. get是从服务器上获取数据,post是向服务器传送数据。
    2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,
      在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。
      用户看不到这个过程。
    3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。 4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。 5. get安全性非常低,post安全性较高。但是执行效率却比Post方法好。
      建议:
      1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;   2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;

     

    Servlet的doGet/doPost 是在 javax.servlet.http.HttpServlet 中实现的

    doGet:处理GET请求

    doPost:处理POST请求

      当发出客户端请求的时候,调用service 方法并传递一个请求和响应对象。Servlet首先判断该请求是GET 操作还是POST 操作。然后它调用下面的一个方法:doGet 或doPost。如果请求是GET就调用doGet方法,如果请求是POST就调用doPost方法。doGet和doPost都接受请求(HttpServletRequest)和响应(HttpServletResponse)。

      get只有一个流,参数附加在url后,地址行显示要传送的信息,大小个数有严格限制且只能是字符串,大小限制在1024KB。post的参数是通过另外的流传递的, 不通过url,所以可以很大,也可以传递二进制数据,如文件的上传。

      get通过URL提交的参数会显示在地址栏中,这在系统的安全方面可能带来问题;post提交的参数不会显示在地址栏中。这样post就可以提高get的安全性能,避免数据的泄露。

      当form框里面的method为get时,执行doGet方法,使用get提交就必须在服务器端用doGet()方法接收;当form框里面的method为post时,执行doPost方法,使用post提交就必须在服务器端用doPost()方法接收。

      在request请求里面,编码转换;get方法得到的内容每一个都要进行编码转换,而post方法则只要设置request.setCharacterEncoding("UTF-8")就可以,不要再从request得到的每个数据进行编码转换了。


    1、安全

    GET调用在URL里显示正传送给SERVLET的数据,这在系统的安全方面可能带来问题,例如用户名和密码等

    POST就可以在一定程度上解决此类问题

    2、服务器接收方式

    服务器随机接受GET方法的数据,一旦断电等原因,服务器也不知道信息是否发送完毕

    而POST方法,服务器先接受数据信息的长度,然后再接受数据

    3、form运行方式

    当form框里面的method为get时,执行doGet方法

    当form框里面的method为post时,执行doPost方法

    4、容量限制

    GET方法后面的信息量字节大小不要超过1.3K,而Post则没有限制

    ###########最后说明的是:

      你可以用service()来实现,它包含了doget和dopost ;service方法是接口中的方法,servlet容器把所有请求发送到该方法,该方法默认行为是转发http请求到doXXX方法中,如果你重载了该方法,默认操作被覆盖,不再进行转发操作!

      service()是在javax.servlet.Servlet接口中定义的, 在 javax.servlet.GenericServlet 中实现了这个接口,

    而 doGet/doPost 则是在 javax.servlet.http.HttpServlet 中实现的, javax.servlet.http.HttpServlet 是 javax.servlet.GenericServlet 的子类.

      所有可以这样理解, 其实所有的请求均首先由 service() 进行处理, 而在 javax.servlet.http.HttpServlet 的 service() 方法中, 主要做的事情就是判断请求类型是 Get 还是 Post, 然后调用对应的 doGet/doPost 执行.

  • 相关阅读:
    The path "" is not valid path to the gcc binary.
    ADB命令介绍
    Android 中Message,MessageQueue,Looper,Handler详解+实例
    Sqlite 修改字段
    曾经光辉岁月 永远海阔天空
    用AchartEngineActivity引擎自定义图表控件和背景折线图
    一个帖子学会Android开发四大组件
    Android获得系统时间(24小时制)
    TagBuilder
    MVC
  • 原文地址:https://www.cnblogs.com/wdpnodecodes/p/7412935.html
Copyright © 2020-2023  润新知