Get和Post、doGet()和doPost()

Get和Post的区别

直到现在经过实践,我终于get和post的区别有了深刻的理解,现把我的理解以及在网上查到的相关资料总结如下:

是什么:
Http定义了客户端和服务器多种交互方式,其中HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法,
在此基础上HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法,具体内容请参看:
https://www.w3cschool.cn/http/yerxcfmt.html
所以,首先要清楚Get和Post是Http请求方法,其次可见其中最基本的方法就是Get和Post。

二者的区别:
从名字上来看可以很容易的有一个直观感觉,get即“获得、得到”,而post最基本的释义是“邮寄”,
get是客户端向服务端获取信息,post是客户端向服务端给与或者说是提交信息,从而可能会对服务的的数据进行修改,
二者的共同之处在于,它们都是客户端向服务的的请求方式。

就像你在读书馆申请了一本书,读书只是单纯的从书中获取知识,但是如果你申请这本书后在书上做了笔记,那就不同了。

虽然想尽量说的浅显易懂写,但是这方面的内容还是希望尽量说的全面一些,Get和Post区别的专业解释:
1. Get不会修改服务器上的数据,而Post会对服务器上的数据发送修改请求,从而修改服务器的数据。
2. Get请求的参数会拼接在url上,比如用Get提交数据时用户名、密码等信息会明文拼接在url上,不安全,而用Post请求数据参数是拼接在http请求体中的,所以是安全、可靠的。
3. Get提交的数据最多1024字节,而Post没有限制。
4. Get是安全、幂等、可缓存的,而Post是不安全、不幂等、不可缓存的。这个安全的意思与第2条中的安全是不同的,2中的安全是针对数据保密性而言的,即我们常规理解中的安全,这里的安全是指客户端向服务端发起的资源请求不会引起服务端任何变化,幂等是指同一个请求方法执行多次和执行一次的效果相同。

使用:
与Post相比,Get更简单也更快,通常提交表单用Post方法,涉及到数据保密性方面的安全问题用Post,向服务器发送大量数据用Post,其它大部分情况可用Get,查看数据而不提交表单则用Get方法。

doGet()和doPost()的使用

是什么:
从名字上来看可以很容易的有一个直观感觉,do即“处理”,所以doGet()用于处理Get请求,而doPost()用于处理Post请求,
查看API(http://tomcat.apache.org/tomcat-5.5-doc/servletapi/)可以看到servlet接口中有5个方法:init()、destroy()、getServletConfig()、getServletInfo()和service(),
根据API可知其中的方法service()的作用是:“Called by the servlet container to allow the servlet to respond to a request”,也就是说“由servlet容器调用,并允许servlet对请求作出响应”,
因此service() 方法会检查 HTTP 请求类型Get、Post等,并在适当的时候调用 doGet()、doPost()等方法,
而我们不需要对 service() 方法做任何动作,只重写 doGet() 或 doPost() 即可。

如何使用:
当新建一个servlet时,IDEA默认会给出如下形式:

@WebServlet(name = "ServletXXX")
public class ServletXXX extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

此时,只需要根据servlet请求的类型,重写相应的方法即可,
如果是Get请求,就让doGet()方法去处理,如果是Post请求,就让doPost()方法去处理,
但是通常doPost()方法更强大一些,所以如果是Post请求,就直接重写doPost()方法就好了,
而如果是Get请求,也可以把方法体写在doPost()中,在doGet()中通过doPost(request,response);调用一下即可。

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值