美文网首页
Java Servlet 运行原理分析

Java Servlet 运行原理分析

作者: 平凡的柚子 | 来源:发表于2021-01-12 13:35 被阅读0次

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 
  } 
}

最新2020整理收集的一些高频面试题(都整理成文档),有很多干货,包含mysql,netty,spring,线程,spring cloud、jvm、源码、算法等详细讲解,也有详细的学习规划图,面试题整理等,需要获取这些内容的朋友请加Q君样:11604713672

相关文章

  • Java Servlet 运行原理分析

    1 Servlet基本执行过程 Web容器(如Tomcat)判断当前请求是否第一次请求Servlet程序 。 如果...

  • JSP与Servlet

    JSP/Servlet 工作原理 Servlet Servlet 没有 main 方法,不能够独立的运行,它的运行...

  • Servlet是什么

    Servlet(Server Applet)是 Java Servlet 的简称,是使用 Java 语言编写的运行...

  • Java运行原理分析

    过硬的技术+透彻的金融业务 + 心理学 =互联网金融专家 Java运行原理分析: 1. 源文件...

  • java web相关

    java语法 jsp xml html css servlet Tomcat架构 ~ servlet工作原理 JV...

  • Servlet笔记

    Java Servlet 是运行在带有支持 Java Servlet 规范的解释器的 web 服务器上的 Java...

  • Servlet

    Servlet Servlet 简介 Java Servlet是和平台无关的服务器端组件,它运行在Servlet容...

  • Java Web(Servlet)

    Servlet Servlet是只运行在服务器端的java类,运行Servlet程序需要将代码部署到服务器Serv...

  • Servlet是什么

    Servlet是用Java编写的Server端程序,它与协议和平台无关。Servlet运行于Java-enable...

  • javaWEB之servlet

    一、Servlet 简介 1.1 Servlet是什么 Java Servlet是运行在 Web 服务器或应用服务...

网友评论

      本文标题:Java Servlet 运行原理分析

      本文链接:https://www.haomeiwen.com/subject/apldaktx.html