tomcat是如何创建servlet实例的,JSP+Servlet+Tomcat应用开发从零开始学
00-1010一、客户端(浏览器)与服务器的交互II。Tomcat启动过程III。Tomcat处理请求过程IV。Servlet的服务方法总结在过去,如果你想运行一个Java代码,你必须实现main方法,这是程序的入口。当您第一次遇到Servlet时,您发现程序被成功调用,并且您可以在浏览器中看到想要的结果。为什么?
其实main方法在Tomcat里面,Servlet程序用Tomcat运行,所以Tomcat有main方法,会拖动Servlet运行。
Servlet是Tomcat提供的一组API,所以它的代码是基于Tomcat的。Tomcat通过HTTP协议与浏览器进行交互,交互主要分为请求接收、请求处理和响应返回三个步骤。
目录
请求接收:
1.当用户在浏览器中输入URL时,浏览器将构造一个HTTP请求。
2.HTTP请求会通过各种手段转换成光电信号传输给服务器(具体转换涉及通信知识)
3.服务器主机收到这些光电信号后,进行分析,还原成原来的HTTP请求,交给Tomcat处理。
4.Tomcat解析HTTP请求,并将其交给Servlet代码进行处理。
处理请求:
1.Tomcat会通过Content Path和Servlet Path确定某个webapp的某个类,并根据请求的方法(doXXX方法)确定调用该类的具体方法。代码中的HttpServletRequest对象包含了HTTP请求的细节,结果是根据代码计算出来的。
返回响应:
1.Servlet根据代码计算生成一个响应对象(HttpServletResponse)。
2.Tomcat将响应对象构造成HTTP响应,通过光电信号传输给浏览器主机。
3.浏览器主机对光电信号进行分析,还原成原来的HTTP响应,交给浏览器进行处理。
4.浏览器解析HTTP响应并在界面上显示数据。
00-1010 1.首先,我们实现的Servlet代码只是创建了Servlet类。如果我们想真正使用这些类,我们需要Tomcat来实例化它们。Tomcat将根据@WebServlet注释获取需要实例化的类,通过反射创建实例,并将它们集中在一个数组中。
2.2之后。Tomcat持有Servlet实例,它需要调用Servlet中的init()方法进行初始化(仅一次)
3.然后绑定端口号并创建一个线程池来并发处理请求。
4.在服务器操作结束之前,将调用Servlet对象中的destroy()方法来回收资源。
一、客户端(浏览器)与服务器之间的交互
1.Tomcat收到请求后,会按照HTTP协议的格式将其构造成一个HttpServletRequest对象。
2.Tomcat判断请求是否为静态资源(如图片、HTML文件等。)根据网址。如果是,就直接返回静态资源,如果是动态资源,就执行下一个Servlet部分。
3.根据内容路径和Servlet路径找到请求的Servlet对象,调用Servlet中的服务方法判断请求类型,调用程序员自己编写的doXXX方法。
二、Tomcat启动过程
伪代码:
类Servlet { public void service(http Servlet request req,http Servlet response resp){ String method=req . get method();if(method . equals( GET ){ doGet(req,resp);} else if(method . equals( POST ){ doPost(req,resp);} else if(method . equals( PUT ){ doPut(req,resp);} else if(method . equals( DELETE ){ do DELETE(req,resp);} .} }服务会根据请求的方法调用相应的方法。当doXXX方法被调用时,会触发多态机制,执行程序员自己写的代码。
程序员写的Servlet类继承自HttpServlet类,HttpServlet类继承自Servlet类,所以程序员写的类是Servlet的子类。如前所述,Tomcat在启动时会将所有需要实例化的类放在Servlet数组中,所以实际上我们是通过对父类的引用来获得实例化的类,从而触发多态性。
类似
servlet ins=new hello servlet();//HelloServlet类是程序员自己实现的类的类名ins.doGet(req,resp);
三、Tomcat处理请求过程
本文到此为止。希望它能帮到你,也希望你能多关注更多的盛行它的内容!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。