java servlet执行流程_Java Servlet运行原理代码解析

本篇文章小编给大家分享一下Java 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方法

在pubpc的service方法内部调用protected的service方法

protected的service方法根据请求的类型调用doGet方法。

doGet方法生成响应并将其传递给客户端。

发送响应后,Web容器将删除请求和响应对象。该线程是继续留在线程池中还是被删除取决于服务器实现。

3、pubpc的service方法部分源码

pubpc的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

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值