原文链接:
接下来我们有必要了解下servlet的工作原理,这样才能更好地理解servlet。本文我们将以之前开发过的servlet程序来讲解servlet的内部细节。
web容器(如tomcat)判断当前请求是否第一次请求servlet程序 。
如果是第一次,则web容器执行以下任务:
加载servlet类。
实例化servlet类。
调用init方法并传入servletconfig对象
如果不第一次执行,则:
调用service方法,并传入request和response对象
web容器在需要删除servlet时(例如,在停止服务器或重新部署项目时)将调用destroy方法。
web容器负责处理请求。让我们看看它如何处理请求。
public的service方法将servletrequest对象转换为httpservletrequest类型,而servletresponse对象转换为httpservletresponse类型。然后,调用传递这些对象的服务方法。让我们看一下内部代码:
public void service(servletrequest req, servletresponse res) throws servletexception, ioexception { httpservletrequest request; httpservletresponse response; try { request = (httpservletrequest)req; response = (httpservletresponse)res; } catch(classcastexception e) { throw new servletexception("non-http request or response"); } service(request, response); }
protected的service方法判断请求的类型,如果请求类型为get,则调用doget方法,如果请求类型为post,则调用dopost方法,依此类推。让我们看一下内部代码:
protected void service(httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception { string method = req.getmethod(); if(method.equals("get")) { long lastmodified = getlastmodified(req); if(lastmodified == -1l) { doget(req, resp); } .... //rest of the code } }
欢迎关注我的公众号::一点教程。获得独家整理的学习资源和日常干货推送。
如果您对我的系列教程感兴趣,也可以关注我的网站:
如对本文有疑问, 点击进行留言回复!!
网友评论