前言
Servlet(Server Applet)是JavaServlet的简称,主要功能是交互式浏览和数据修改,生成动态Web内容。Servlet运行于支持Java的应用服务器中,Servlet可以响应任何类型的请求,但通常情况下只用来拓展基于HTTP协议的Web服务器。【摘自百度百科】。
这篇文章之中我们只讲解常用的基于HTTP协议HttpServlet请求。
应用结构解析
HttpServlet类实现了Servlet接口的Service方法并要求调用doGet()或doPost()方法之一。当客户端发出Http请求时,Servlet调用service()方法并且传递一个请求和响应对象,然后由Servlet判断该请求是get操作还是post操作,然后调用以下两种方法。doGet()方法和doPost()方法都接受(HttpServletRequest))和响应对象(HttpServletResponse).
doGet():
用于处理GET请求。doGet()在请求过程中只产生一个流,参数附加在url之后,参数大小和个数都有严格的限制,并且只接受字符串类型的数据。get请求的的所有参数都显示展现的,因此不是更加安全,通常只用于数据的请求。
doPost():
处理POST请求。doPost()在请求过程中会产生两个流,参数不附加在url之后,是通过另外一个流传递的。因此post请求传递的数据可以很大并且还可以传递二进制的数据,如文件上传等。post请求的参数是隐藏的,因此相对安全一点,在做密码传送或者数据更改的请求时通常使用此方法。
doService():
在以上两个方法调用之前还有一个doService()方法。当一个请求发生时,不管是get()方法还是post()方法都首先执行doService()方法,因此可以直接过载doService()方法。
方法定义
service()方法是在javax.servlet.Servlet接口中定义的,在javax.servlet.GenericServlet中实现。
doGet()和doPost()方法是在javax.servlet.http.HttpServlet中实现的,javax.servlet.http.HttpServlet是 javax.servlet.GenericServlet 的子类。
因此从这个结构上也解释了上面所说的:所有请求都需要经过service()方法,service()的作用就是判断该请求是get类型的还是post类型的,然后调用对应的doGet()|doPost()。
结语
这篇文章只对http请求过程的调用做简单解析,下一篇文章我们会对servlet的数据发送和接受以及生命周期做解析,请大家关注本头条号持续查看。各位客官和粉丝如果有其他的问题需要解答请在留言板回复,我会做相应解析。如果问题过于复杂我会专门写一篇文章做解读。