原文地址:http://lvp.iteye.com/blog/234606
客户端请求,服务器端提供信息
无论我们通过本地机即客户端上网做什么,比如搜索一个查询,打开一个邮件,请求所得到的页面还有各种各样的数据都是从服务器端得到的。服务器是一个设备,它可以根据网络上的不同的客户所提交的请求而提供不同的信息。那么要实现数据在WEB上传输,最开始的时候是通过编写CGI(Common Gateway Interface)通用网关接口程序来实现的。
CGI 通用网关接口
通用网关接口其实就是一个服务器方的接口程序,这套接口描述了WEB服务器与同一计算机的软件通信方式,是一个外部网关程序和诸如HTTP这样的信息服务器之间的接口标准。
如同一座桥,把网页和服务器中的执行程序连接起来,客户端的指令传递给服务器,服务器执行的结果再返回给HTML页面。
WEB服务器寻找的普通的HTML文档是静态的,不会改变的文件,然后一个CGI程序是实时执行的,以便输出动态信息,像计数器就可以通过CGI程序来完成一个动态的交互。
虽然利用CGI根据用户请求生成动态主页是一种传统的方法,但是CGI一个很明显的缺点是:
CGI是根据浏览器的HTTP请求激活响应进程,每一个请求对应一个进程,当同时有很多请求时,程序挤占系统资源,造成效率低下。
程序,进程和线程的区别
程序就是一组指令的集合,是静态的。
进程则是一组指令序列在处理机上的一次执行过程,是动态的。进程具有动态,并行,独立,异步等特性;一个进程由创建而产生,由调度而进入执行,在资源不能满足时挂起,由撤销而消亡。因此,一个进程是由生命的,且唯一的对应于一个 .exe 文件。
点击结束一个进程将终止一个程序的运行,那么所谓的进程其实就是一个程序的一次执行过程。
线程是进程中某一个单一顺序的控制流,也被称为轻量进程(light-weight-processes) ,它是一个程序的最小执行单元,可以理解为是进程中的实体。
一个进程是可以拥有多个线程,一个线程必须要有一个父进程。
线程不拥有系统资源,只有运行必须的一些数据结构。
父进程的其它线程共享该进程的所拥有的全部资源。
线程是对CPU单元的独立占有的最小单位,每个线程共享进程的数据,在每个进程被创建的时候只有一个主线程。线程可以创建和撤销线程,从而实现程序的并发执行。一般,线程具有就绪,阻塞和运行三种基本状态。
线程的优点就在于:使同一个程序能有几个并行执行的路径,提高了执行速度,线程需要的系统开销比进程要小。
总结下来,那么就能够很清楚的知道当我们用CGI通用网关接口来实现数据在WEB上的传递时,对于客户端的每一个请求必须开启一个新实例的进程,可想而知它的速度和效率。
为了避免这种损耗,解决这个问题,我们就引入了采用多线程来代替进程的技术—JAVA方向的Servlet技术,能够很清楚的看到Servlet的生命周期,只需要初始化一次Servlet,以后就可以反复的使用。
小总结,打个比方
如果有10个人在线,那么CGI就得开10个进程。而类似于JSP,ASP 都是一个进程处理多个请求的,无论多少人在线,都只有一个进程。并且Servlet使用标准的API,可以被许多WEB服务支持,与平台无关。
分享到:
相关推荐
JSP技术则是基于Servlet的,它将HTML和Java代码混合编写,方便非Java背景的开发者使用。JSP页面在服务器端被编译成Servlet,然后执行。JSP的标签和指令(如,,等)最终都会转换成Servlet的Java代码。 总的来说,...
### 使用Servlet接口手动开发Servlet详解 #### 一、概述 本文档将详细介绍如何通过实现`Servlet`接口的方式,从零开始构建一个简单的Servlet程序。这个Servlet不仅会显示“Hello World”,还会显示当前的时间。这...
在新闻网站的背景下,Servlet可能被用来处理用户的各种请求,如显示新闻列表、获取详细新闻内容、执行搜索功能等。通过分析项目中的代码,我们可以学习如何在Servlet中定义`doGet`和`doPost`方法来处理HTTP GET和...
本文将深入探讨Servlet的相关知识点,包括它的背景、功能、在Java EE体系中的位置以及如何在Tomcat服务器上进行配置和使用。 1. **背景知识介绍** Java Servlet是一种用于扩展Web服务器功能的Java技术,它允许...
在现代Web开发中,servlet与JSP(Java Server Pages)是非常重要的技术组件,它们共同为动态网页的生成提供了强大的支持。servlet作为服务器端的应用程序接口(API),主要用于处理客户端请求,并通过HTTP协议发送响应...
#### 二、Servlet的历史背景 - **CGI (Common Gateway Interface)**:作为最早的 Web 技术之一,CGI 负责接收来自客户端的请求,并通过不同的编程语言来处理这些请求。尽管其灵活性较高,但由于每次请求都会生成新...
- **模块化web.xml**:Servlet 3.0允许开发者将`web.xml`拆分为多个部分,使得每个框架或库可以拥有自己的定义,并且这些定义可以在该框架内部自我包含。 - **web-fragment元素**:为了支持这种模块化结构,Servlet ...
Servlet 3.1 规范为 Web 开发者提供了更为强大的工具和支持,使其能够构建更加高效、安全的 Web 应用程序。通过非阻塞 I/O 和异步处理等新特性,Servlet 3.1 规范帮助开发者解决了高并发场景下的性能瓶颈问题。同时...
一、Servlet与JS输出背景 Servlet是Java Web应用中的核心组件,主要用于处理客户端发送的HTTP请求,并生成响应。在Web开发中,Servlet经常被用来处理业务逻辑,然后通过重定向或包含的方式将结果呈现给用户。在MVC...
通过对上述关键知识点的理解,开发者可以更加熟练地使用 Java Servlet API 来构建高效、可扩展的 Web 应用程序。随着技术的进步,虽然 Servlet 的版本已经更新至更高版本,但了解早期版本的基本概念仍然是非常有价值...
接下来,我们要创建一个Servlet来处理生成二维码的请求。以下是一个简单的Servlet示例: ```java import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet....
因此,使用Servlet过滤器(Filter)来处理这类问题成为了一种更加优雅的解决方案。 #### 实例目标 本实例的目标是设计并实现一个简单的Servlet过滤器,用于检查用户的登录状态。具体来说,当用户通过正常的登录...
本教程将详细介绍如何使用Servlet技术来实现一个基本的图片验证码功能。Servlet是Java服务器端编程的核心技术之一,它可以接收和响应HTTP请求,非常适合构建动态Web应用程序。 首先,我们需要理解验证码的基本原理...
在这个“一个servlet的web应用”项目中,我们看到使用Servlet和JSP(JavaServer Pages)来创建了一个购物系统,这为初学者提供了很好的实践和学习机会。 Servlet是一个Java类,它遵循Servlet API规范,该规范由Java...
Servlet技术正是在这种背景下应运而生,它为开发者提供了一个强大且灵活的框架来构建动态Web内容。 #### 三、Java Servlet编程的关键概念和技术 - **Java Servlet编程**: 这一主题覆盖了如何编写、部署以及管理...
然而,在使用IDEA开发过程中,有时会出现无法识别Servlet类的情况,表现为编译器提示找不到Servlet类或相关的API,导致项目无法正常运行。 #### 二、问题分析 出现无法导入Servlet类的情况,通常有以下几个原因: ...
通过分析这个项目,开发者不仅能掌握Servlet和JSP的基本使用,还能了解到如何设计和实现一个完整的电商系统,包括用户认证、商品管理、订单处理流程、支付集成等关键模块。此外,还能学习到如何组织代码结构、设计...
这个页面通过下拉列表的方式让用户选择想要查看的文件,并通过表单提交给Servlet处理。 ##### 3. Servlet类实现 接下来是`ReadFile` Servlet类的实现,其主要功能是从用户提交的表单中获取文件名,并读取文件内容...
本文将详细介绍如何使用Java Servlet技术动态生成登录验证图片。 #### 概念理解 在Web应用中,动态生成图片意味着图片是在服务器端根据特定逻辑实时创建的,并通过HTTP响应传输给客户端(通常是浏览器)。与传统的...
#### 二、解决方案:使用Servlet过滤器 Servlet过滤器是一种可以拦截请求和响应的组件,它可以在请求到达目标资源之前或响应返回客户端之前进行预处理。通过配置过滤器来统一处理字符编码问题,可以有效避免乱码的...