web服务器的缺陷是什么?java是怎么样解决这个缺陷的
Web服务器的缺陷是什么?Java是怎么样解决这个缺陷的?因为web服务器是被设计用来向客户端提供HTTP服务的,它只能向客户端提供静态的网页内容,不能创建动态服务器端内容。java解决方案servlet和web容器对请求和响应的处理如下:1客户端向web服务器发起一个HTTP请求;2HTTP请求被WEB服务器接受,如果请求是静态页面,则由web服务器负责处理,如果请求是javaweb主件,则交给Web容器。Web容器可以在主机的同一个进程、不同的行程或其他的web服务器主机的进程中启动。3web容器根据Servlet的配置文件确定调用具体的Servlet类,并把request对象、response对象传给它。4Servlet通过request对象知道客户端的使用者是谁,客户的请求信息是什么和其他的一些信息。Servlet处理完请求后吧要返回的信息放入response对象返回到客户端。5一旦Servlet完成请求的处理,web容器就会刷新response。并把控制权返回给web服务器。
Web服务器的基本功能就是提供Web信息浏览服务。它只需支持HTTP协议、HTML文档格式及URL。与客户端的网络浏览器配合。因为Web服务器主 要支持的协议就是HTTP,所以通常情况下HTTP服务器和WEB服务器是相等的(有没有支持除HTTP之外的协议的web服务器,作者没有考证过),说 的是一回事。
应用程序服务器(简称应用服务器),我们先看一下微软对它的定义:"我们把应用程序服务器定义为“作为服务器执行共享业务应用程序的底层的系统软件”。 就像文件服务器为很多用户提供文件一样,应用程序服务器让多个用户可以同时使用应用程序(通常是客户创建的应用程序)"
servlet容器是用来同意管理servlet实例的额,包括servlet实例的初始化、生成、运行、销毁的统一维护。
PHP的兼容性非常好,几乎所有的Web服务器都支持PHP的,主流可以跑php的服务器有apache、nginx、iis。
常用的web服务器有哪些?
目前最主流的三个Web服务器是Apache、Nginx、IS。在UNⅨ和LINUX平台下使用最广泛的免费HTTP服务器是Apache和Nginx服务器,而Windows平台NT/2000/2003使用ⅡS的WEB服务器。下面介绍几种常用的WEB服务器。 (推荐学习:PHP视频教程)
1、Apache
Apache是世界使用排名的Web服务器软件。它几乎可以运行在所有的计算机平台上。由于Apache是开源免费的,因此有很多人参与到新功能的开发设计,不断对其进行完善。 Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。
2、Nginx
Nginx不仅是一个小巧且高效的HTTP服务器,也可以做一个高效的负载均衡反向代理,通过它接受用户的请求并分发到多个Mongrel进程可以极大提高Rails应用的并发能力。
3、IIS
IIS(Internet信息服务)英文Internet Information Server,它是微软公司主推的服务器。IIS 是允许在公共Intranet或Internet上发布信息的Web服务器。ⅡS是目前最流行的Web服务器产品之一,很多著名的网站都是建立在ⅡS的平台上。IIS提供了一个图形界面的管理工具,称为Internet服务管理器,可用于监视配置和控制Internet服务。
IIS的特点具有:安全性,强大,灵活。
自从计算机软件开发进入网络时代 就开始涉及到通讯问题 在客户/服务器(也叫C/S应用)时期 每个软件都有自己的客户端和服务器端软件 并且客户端和服务器端之间的通讯协议差别也很大 后来随着互联网的发展 基于浏览器/服务器的应用逐渐成为主流 通讯协议也统一到HTTP协议 但是 在HTTP协议之上 如何处理来自客户端的请求信息 以及如何对请求进行回应 则经历了很长时间也没有统一下来 目前 对于这个问题的解决方案主要有两种 一个是CGI 另一个是Servlet
CGI(Common Gateway Interface) 通用网关接口
通用网关接口 简称CGI 是一种根据请求信息动态产生回应内容的技术 通过CGI Web 服务器可以将根据请求不同启动不同的外部程序 并将请求内容转发给该程序 在程序执行结束后 将执行结果作为回应返回给客户端 也就是说 对于每个请求 都要产生一个新的进程进行处理 因为每个进程都会占有很多服务器的资源和时间 这就导致服务器无法同时处理很多的并发请求 另外CGI程序都是与操作系统平台相关的 虽然在互联网爆发的初期 CGI为开发互联网应用做出了很大的贡献 但是随着技术的发展 开始逐渐衰落
Servlet
Servlet最初是在 年由James Gosling 提出的 因为使用该技术需要复杂的Web服务器支持 所以当时并没有得到重视 也就放弃了 后来随着Web应用复杂度的提升 并要求提供更高的并发处理能力 Servlet被重新捡起 并在Java平台上得到实现 现在提起Servlet 指的都是Java Servlet Java Servlet要求必须运行在Web服务器当中 与Web服务器之间属于分工和互补关系 确切的说 在实际运行的时候Java Servlet与Web服务器会融为一体 如同一个程序一样运行在同一个Java虚拟机(JVM)当中 与CGI不同的是 Servlet对每个请求都是单独启动一个线程 而不是进程 这种处理方式大幅度地降低了系统里的进程数量 提高了系统的并发处理能力 另外因为Java Servlet是运行在虚拟机之上的 也就解决了跨平台问题 如果没有Servlet的出现 也就没有互联网的今天
在Servlet出现之后 随着使用范围的扩大 人们发现了它的一个很大的一个弊端 那就是为了能够输出HTML格式内容 需要编写大量重复代码 造成不必要的重复劳动 为了解决这个问题 基于Servlet技术产生了JavaServet Pages技术 也就是JSP Servlet和JSP两者分工协作 Servlet侧重于解决运算和业务逻辑问题 JSP则侧重于解决展示问题 Servlet与JSP一起为Web应用开发带来了巨大的贡献 后来出现的众多Java Web应用开发框架都是基于这两种技术的 更确切的说 都是基于Servlet技术的
Java Servlet与Web容器之间的关系
Java是一种动态加载和运行的语言 也就是说当应用程序持有一个类的地址(CLASSPATH)和名称(包名和类名)的情况下 可以在程序运行期间任何时候加载这个类 并创建和使用该类的对象 Servlet就是基于这个机制与Web容器融合在一起的 目前已知的所有支持Java Servlet的Web容器都是采用Java开发的 当Web容器接收到来自客户端的请求信息之后 会根据URL中的Web元件地址信息到Servlet队列中查找对应的Servlet对象 如果找到则直接使用 如果没有找到则加载对应的类 并创建对象 也就是说 Servlet对象是在第一次被使用的时候才创建的 并且一旦创建就会被反复使用 不再创建新的对象 所有创建出的Servlet对象会在Web服务器停止运行的时候统一进行垃圾回收
为了解决客户端请求地址与Java Servlet之间对应关系问题 Web容器需要一个用来描述这种对应关系的文件 一般是web xml文件 如果一个Web应用程序中存在很多个Servlet 那么web xml会变得非常庞大 在Servlet 规范推出之后 允许在Servlet代码中使用声明式语法来代替web xml中的描述信息 这才让web xml瘦身下来 下图是这个过程的一个示意图
lishixinzhi/Article/program/Java/hx/201311/26848
web中间件和web容器可以理解为一个东西,只是描述角度不同
web中间件 是从部署架构角度 代理 web中间件 缓存 数据库 组成的web程序发布环境
web容器是程序运行角度,无论什么web开发语言,php java jsnode 都是运行在web容器中
tomcat was weblogic这些都是web中间件
0条评论