Java Servlet 运行原理分析
程序员文章站
2023-12-31 23:11:52
1 servlet基本执行过程web容器(如tomcat)判断当前请求是否第一次请求servlet程序 。如果是第一次,则web容器执行以下任务: 加载servlet类。 实例化servlet类。...
1 servlet基本执行过程
web容器(如tomcat)判断当前请求是否第一次请求servlet程序 。
如果是第一次,则web容器执行以下任务:
- 加载servlet类。
- 实例化servlet类。
- 调用init方法并传入servletconfig对象
如果不第一次执行,则:
- 调用service方法,并传入request和response对象
web容器在需要删除servlet时(例如,在停止服务器或重新部署项目时)将调用destroy方法。
2 web容器如何处理servlet请求
web容器负责处理请求。让我们看看它如何处理请求。
- 将用户请求与web.xml文件中的servlet进行映射。
- 创建请求和响应对象
- 创建新的线程,并在该线程上调用servlet的service方法
- 在public的service方法内部调用protected的service方法
- protected的service方法根据请求的类型调用doget方法。
- doget方法生成响应并将其传递给客户端。
- 发送响应后,web容器将删除请求和响应对象。该线程是继续留在线程池中还是被删除取决于服务器实现。
3 public的service方法部分源码
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); }
4 protected的service方法部分源码
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 } }
以上就是java servlet 运行原理分析的详细内容,更多关于java servlet 运行原理的资料请关注其它相关文章!