servlet必须在web容器还是web服务器环境下运行
Servlet是在服务器端运行的,Servlet编译成.class文件通过Java容器例如JBoss、Jetty、Tomcat等解析运行在服务器端。浏览器通过访问容器中的解释器从而浏览网页。浏览器最初只支持Java Applet程序,到后面完全兼容Java容器,因此Java是解释型语言。
JSP动态网页技术其实底层也是依赖于Servlet编译生成的字节码文件。JSP编译后生成Servlet文件,然后通过容器运行。
Servlet具有生命周期,init方法初始化,destroy销毁servlet线程。Servlet中的主方法是doService方法,调用doGet、doPost请求从而响应GET、POST请求服务。
Struts框架的出现革新了java分层技术,Struts2 MVC模型分层,以及后面出现的Spring MVC框架,都是web2.0革新技术。到现在微服务技术流行起来,SpringBoot自带Tomcat容器,Dubbo与Spring Boot整合形成一套微服务体系,阿里Dubbo 4.0全面兼容SpringCloud。Spring Cloud也是微服务的潮流,基于OpenCloud的框架是springcloud改良版,也是很火热
主流的web应用容器是国外的吗,为什么
谢邀。个人认为国内缺乏顶级软件研发公司和成熟开源社区,是造成这一现状的主要原因。
我们都知道,java语言是开放的,java有一个专门的标准委员会,来负责制定各个领域的标准,任何人都可以开发出符合这些标准的软件,从底层的java虚拟机,到各类中间件,再到各种工具类库。java web容器就是其中的一种中间件。
从java语言诞生开始,顶级的企业级应用厂商都在跟进,这些公司都拥有庞大的软件体系,出于商业原因,针对所有的java开放标准,都研发了自己的产品。这个时期也出现了很多专门的中间件厂商,让实力稍逊一筹的软件企业购买并整合到自己的方案中。而国内的软件厂商,并不具备完整的软件体系,主要的工作在业务实现和系统集成上,自研web容器对于他们来说,既耗费人力物力,又不能提升竞争力,没有任何益处。
国外的企业在自研的同时,也会对开源社区进行资金支援。在他们的支援下,兴起了很多著名的开源社区,这些开源社区孵化出了很多知名项目,并且进行长期的支持,这种支持不亚于大公司的商业产品,Tomcat就是在这种环境下不断成长起来的。反观国内,至今都没有发展出类似apache的开源社区,近年来国内顶级互联网企业都开始陆续推出自己的开源产品,不过都是各自为政,并没有形成开源社区,自然也没有独立孵化项目的土壤,这不得不说是国内软件行业的一大遗憾,希望这种情况能逐步改善吧。