前言
随着互联网技术的发展,基于HTTP和HTML的web应用急速增长。
早期的web应用主要用于浏览新闻等静态页面。然而随着时间发展,用户已经不满足于仅浏览静态页面。用户需要一些交互操作,获取一些动态结果。
早期使用的Web服务器扩展机制是CGI(Common Gateway Interface,公共网关接口)。使用这种方法,用户单击某个链接或输入网址来访问CGI程序,web服务器收到请求后,运行该CGI程序,对用户请 求进行处理,紧接着将处理结果并产生一个响应,该响应被返回给web服务器,web服务器对响应进行包装,以HTTP响应的方式返回给浏览器。
CGI程序在一定程度上解决了用户需求。不过还存在一些不足之处,如CGI程序编写困难,响应时间较长,以进程方式运行导致性能受限。
于是1997年,sun公司推出了Servlet技术,作为java阵营的CGI解决方案。
Servlet是什么?
servlet就是一个Java接口,是JavaEE规范的一种,主要是为了扩展Java作为Web服务的功能。
由其他内部厂商如tomcat,JBoss内部实现web的功能。
如一个http请求到来:
容器将请求封装为servlet中的HttpServletRequest对象,调用init(),service()等方法输出response,由容器包装为httpresponse返回给客户端的过程。
![b0f06a2cda1ce674f0b1580304b9152b.png](https://i-blog.csdnimg.cn/blog_migrate/3a26ee1c4445c4af9d336fb26e349971.jpeg)
servlet容器是什么?
Servlet容器也叫做Servlet引擎,是Web服务器或应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解码基于 MIME的请求,格式化基于MIME的响应。
Servlet没有main方法,不能独立运行,它必须被部署到Servlet容器中,由容器来实例化和调用 Servlet的方法(如doGet()和doPost()),Servlet容器在Servlet的生命周期内包容和管理Servlet。
(注:常用的MIME类型:text/html,application/pdf,video/quicktime,application /java,image/jpeg,application/jar,application/octet-stream,application/x- zip)
Servlet容器工作流程
1、有了servlet之后,用户通过单击某个链接或者直接在浏览器的地址栏中输入URL来访问Servlet。
2、Web服务器接收到该请求后,并不是将 请求直接交给Servlet,而是交给Servlet容器。
3、Servlet容器实例化Servlet,调用Servlet的一个特定方法对请求进行处理, 并产生一个响应。
4、这个响应由Servlet容器返回给Web服务器。
5、Web服务器包装这个响应,以HTTP响应的形式发送给Web浏览器。
调用Servlet
每个Servlet都对应一个URL地址,可以作为显式URL引用调用,或嵌入在HTML中并从Web应用程序返回。
web容器是什么?
在JSP技术 推出后,管理和运行Servlet/JSP的容器也称为Web容器。
web容器中包含servlet容器。
常用的java web 容器有哪些
Tomcat 容器、 Resin 容器、JBoss 容器、 WebLogic 容器
tomcat是什么?
Tomcat容器:是web容器中的一种,也是Java Servlet,jsp等技术的开源实现。
作用是:暴露端口,按照特定资源URL找到处理的servlet。然后处理请求。
Spring MVC与servlet的关系 是什么?
1、Servlet与JSP一起为Web应用开发带来了巨大的贡献,后来出现的众多Java Web应用开发框架都是基于这两种技术的,更确切的说,都是基于Servlet技术的。
2、Springmvc的核心是一个DispatcherServlet,并且DispatcherServlet继承自 FrameworkServlet继承自HttpServletBean 继承自HttpServlet(也就是你说的servelt) 本质上是一样的东西。其实就是基于tomcat等这些web容器对我们的CS请求能做更多的事情,如校验,拦截(AOP思想),后期渲染等等,好让我们专注于业务的开发。
总结
1、servlet就是一个Java接口,是JavaEE规范的一种
2、Servlet容器也叫做Servlet引擎:全称server applet,意为服务程序。主要作用是给上级容器(Tomcat)提供doGet()和doPost()等方法。其生命周期实例化、初始化、调用、销毁受控于 Tomcat容器。
3、而Tcomcat、webLogic等web容器包含servlet容器。
4、Tomcat容器属于web容器的一种,web容器还包括weblogic容器、JBoss容器等。
5、web容器:可以部署多个WEB应用程序的环境。
6、Spring MVC (SpringBoot)其实就是基于tomcat等这些web容器对我们的CS请求能做更多的事情