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方法

在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 运行原理的资料请关注脚本之家其它相关文章!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值