JavaWeb_Servelet运行原理和生命周期

Servlet是一个Java应用程序,运行在服务器端,用来处理客户端请求并作出响应的程序。

Servlet多线程体系结构是建立在Java多线程机制之上的,它的生命周期是由Web容器负责的。

Servlet运行原理

 当客户端第一次请求某个Servlet时,Servlet容器将会根据web.xml配置文件实例化这个Servlet类,此时它贮存于内存中。。当有新的客户端请求该Servlet时,一般不会再实例化该Servlet类,也就是有多个线程在使用这个实例。

①客户端向服务器端发出请求;

②这个过程比较重要,这时Tomcat会创建两个对象:HttpServletResponse和HttpServletRequest。并将它们的引用(注意是引用)传给刚分配的线程;

③线程开始着手接洽servlet;

④servlet根据传来的是GET和POST,分别调用doGet()和doPost()方法进行处理;

⑤和⑥servlet将处理后的结果通过线程传回Tomcat,并在之后将这个线程销毁或者送还线程池;

⑦Tomcat将处理后的结果变成一个HTTP响应发送回客户端,这样,客户端就可以接受到处理后的结果了。

tomcat解析URL

当我们在客户端向后台服务器发出请求时:URL中会包含我们要访问的页面

a) 首先来看URL中包含的信息:”协议” + “端口号” + “路径(项目名称+文件路径)”


Tomcat启动后,监听我们的8080端口,当有Url请求发过来之后,解析出项目名称 abingtest,然后到webapps目录下搜索到该项目文件夹。

b) 项目文件找到后,开始寻找类文件。

这个时候Tomcat去Web.xml文件中寻找 配置节中包含”servlet/FirstServlet”字符串,进而找到该类文件所在的位置。 

请求进入servlet类

我们需要重写doGet或doPost方法,用request对象接收参数,在我们的业务逻辑处理完毕后用response对象返回到前台,这个时候servlet线程就完成了任务

Servlet生命周期

servlet类的初始化由tomcat容器来管理,servlet容器的三种方法,init、service、destroy方法

当前端能接受请求,tomcat通过解析URL地址来初始化tomcat容器,调用init实例化一个servlet线程,在通过参数的传递方式调用dopost和doget方法处理请求,把处理完毕的数据通过httpservletresponse对象返回前台,这个时候servlet线程任务完成,线程销毁,servlet容器调用destroy方法释放servlet对象,由JVM进行垃圾回收处理,如果再次接收到请求servlet容器会创建新的servlet实例


参考博文:

https://www.cnblogs.com/gaoxiangde/p/4339571.html

你可能感兴趣的:(JavaWeb_Servelet运行原理和生命周期)