一:web服务器是什么?
通俗点来说web服务器的作用就是用户通过浏览器向web服务器发送http请求,web服务器解析http请求将请求路径的文件返回给浏览器,浏览器再将文件渲染显示给我们看,因此web服务器的作用就是返回服务端的静态文件。
二:servlet是什么?
Servlet简介
Servlet是sun公司提供的一门用于开发动态web资源的技术。
Sun公司在其API中提供了一个servlet接口,用户若想开发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:
1、编写一个Java类,实现servlet接口。
2、把开发好的Java类部署到web服务器中。
按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet。
看这些名词解释可能大家还是比较迷糊,那么我就再通俗一点的解释:
在用Eclipse搭建SSM项目的时候,不知道大家有没有导入过Servlet-api的jar包呢?这个实际上就是servlet以及它的实现。可以看到javax.servlet下的Servlet接口里面有Servlet的生命周期方法。
而javax.servlet.http下的就是基于http通信实现的servlet。而在tomcat的根目录的lib文件夹下也有servlet-api这个jar包,因此在tomcat运行应用程序时我们就不需要额外导入这个jar包了。
可以看到HttpServlet接口就定义了我们熟悉的一些http请求方法。
所以,总结一句:Servlet可以理解为就是一个咱们程序员开发的web项目程序
Servlet的运行过程
Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:
1.Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第4步,否则,执行第2步。 2.装载并创建该Servlet的一个实例对象。
3.调用Servlet实例对象的init()方法。
4.创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
5.WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。
Servlet调用图:
Servlet生命周期:
servlet被服务器实例化-->容器运行init方法-->处理请求service()-->摧毁实例destroy()
注意: 在servlet的整个生命周期当中,init,destroy只会执行一次,而service方法会执行多次
三:tomcat是什么?
了解了什么是servlet后,那么tomcat自然就很好理解了,tomcat是servlet容器,同时它也包括了web服务器的功能,因此tomcat是web服务器的扩展,也可以理解为tomcat就是web服务器。
那么为什么说tomcat是servlet容器呢?字面意思容器就是可以容纳很多东西,众所周知,在tomcat上部署应用程序的时候,我们是把应用程序放在tomcat根路径下的webapps文件夹下,而这个文件夹下可以放置多个应用程序,我们可以通过请求来决定具体访问那个应用,由此我们可以知道tomcat的整个运行流程:
(1)用户通过浏览器向服务器发送请求
(2)tomcat接收请求后解析请求具体访问哪个应用
(3)tomcat创建一个HttpServletRequest对象,将用户发送的请求封装到这个对象里
(4)tomcat创建一个HttpServletResponse对象
(5)Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数传给 HttpServlet对象
(6)HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息
(7)HttpServlet调用HttpResponse对象的有关方法,生成响应数据
(8)Servlet容器把HttpServlet的响应数据结果传给浏览器,浏览器再根据返回的response进行相应的渲染
综上我们还可以猜测到servlet的出现就是弥补以前web服务器只能访问静态资源的问题,有了servlet我们就可以通过浏览器与服务端进行动态交互了。
四:Servelt在Tomcat中是线程安全的吗?
ok , 狐狸与小兔的本节技术分享就到这,希望学习的小伙伴能学习到东西。。。
结语:以往都是看别人的博客进行学习技术,其中不乏有精华博客也有吊儿郎当的CV大法文章,所以决定将自己所学所用所整理的知识分享给大家,主要还是想为了后浪们少走些弯路,多些正能量的博客,如有错漏,欢迎指正,仅希望大家能在我的博客中学到知识,解决到问题,那么就足够了。谢谢大家!(转载请注明原文出处)