Web容器、服务器、容器的理解总结
Web容器、服务器、容器的理解总结
Tomcat 是一个小型的轻量级应用服务器,很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。
一般认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。
服务器,硬件角度上说就是一台高性能的Computer。我们通常指的服务器其实应该是装有能够处理具体请求事务的服务器软件的Computer。比如最常见的www服务器、mail服务器、计费服务器、ftp服务器等等。很多时候人们常把诸如Tomcat、IIS、Weblogic 也称之为web服务器,其实这些只是用于开发、集成、部署和管理Web应用、网络应用和数据库应用的应用服务器软件。
1、什么是容器?
Servlet没有main()方法。Servlet受控于另一个Java应用,这个Java应用称为容器。Tomcat就是这样一个容器。如果web服务器应用得到一个指向servlet的请求(而不是其他请求,如请求一个普通的静态HTML),此时服务器不是把这个请求交给servlet本身,而是交给部署该servlet的容器,要由容器调用servlet的方法,如doPost()或doGet()。
2、容器能提供什么?
通信支持:利用容器提供的方法,你能轻松地让servle与Web服务器对话;
生命周期管理:容器控制着servlet的生与死。它会负责加载类、实例和初始化servlet、调用servlet方法,并使servlet实例能够被垃圾回收。
多线程支持:容器会自动地为它接收的每个servlet请求创建一个新的java线程。针对客户机的请求,如果servlet已经运行完相应的HTTP服务方法,这个线程就会结束(也就是会死掉)。
声明方式实现安全:利用容器,可以使用XML部署描述文件配置(和修改)安全性,而不必将其硬编码写到servlet(或其他)类代码中。
JSP支持:负责把JSP代码翻译成真正的java。
web应用程序需要部署到web容器中才能运行,两者都必须符合javaEE规范。web容器的应用程序规范如下:
1.目录结构规范:javaWeb程序的所有文件都包含在一个文件夹中,包含WEB-INF子文件夹和META-INF子文件夹,WEB-INF文件夹包含classes文件夹和lib文件夹以及web.xml。
如Tomcat结构目录
/bin:包含启动和关闭Tomcat的文件
/conf:包含不同的配置文件:server.xml,web.xml,tomcat-user.xml
/lib:包含Tomcat使用的JAR文件
/logs:包含日志文件
/webapps:包含应用程序示例及自己开发的程序
/work:包含有JSP生成的Servlet
2.jar文件放在WEB-INF/lib文件夹中。
3.web.xml规范:是整个web应用程序的描述文件,里面定义者该Web应用程序可供访问的信息资源以及这些资源的行为,包括servlet,过滤器,监听器,安全验证等信息资源。
4.其他资源文件,如jsp,html,图片和声音的放在与WEB-INF同一级目录下,因为WEB-INF文件夹对于客户端是不可见的。
web容器是一种服务程序,是能够支持发布web程序的软件,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如JAVA中的Tomcat容器,ASP的IIS或PWS都是这样的容器。一个服务器可以多个容器。
b/s结构下,以常见的自来水供水系统为例来说,整个web系统好比完整的供水系统,用户只需要有水龙头(Broswer),水管相当于计算机网络(network),自来水公司的供水系统(即Server),其中的压力水罐就是容器(Container)了。
Tomcat是Apache-Jarkarta的一个子项目,是一个开放式源码,免费支持JSP和Servlet技术的容器,它同时又是一个Web服务器软件。
Servlet和JSP两者分工协作,Servlet侧重于解决运算和业务逻辑问题,JSP则侧重于解决展示问题。Servlet与JSP一起为Web应用开发带来了巨大的贡献,后来出现的众多Java Web应用开发框架都是基于这两种技术的,更确切的说,都是基于Servlet技术的。
servlet容器的主要任务是管理servlet的生命周期。web容器更准确的说应该叫web服务器(Python的web容器有web.py等),它是来管理和部署web应用的。还有一种服务器叫做应用服务器,它的功能比web服务器要强大的多,因为它可以部署EJB应用,可以实现容器管理的事务,一般的应用服务器有weblogic和websphere等,它们都是商业服务器,功能强大但都是收费的。web容器最典型的就是tomcat了,Tomcat是web容器也是servlet容器。