Servlet学习教程(一)----什么是Servlet以及Servlet容器

官方规范翻译过来的。

Servlet是基于Java技术的web组件,容器托管的,用于生成动态内容。像其他基于Java的组件技术一样,Servlet也是基于平台无关的Java类格式,被编译为平台无关的字节码,可以被基于Java技术的web server动态加载并运行。容器,有时候也叫做servlet引擎,是web server为支持servlet功能扩展的部分。客户端通过Servlet容器实现的请求/应答模型与Servlet交互。

Servlet容器是web server或application server的一部分,提供基于请求/响应发送模型的网络服务,解码基于MIME的请求,并且格式化基于MIME的响应。Servlet 容器也包含了管理Servlet生命周期。

Servlet容器可以嵌入到宿主的web server中,或者通过Web Server的本地扩展API单独作为附加组件安装。Servelt容器也可能内嵌或安装到包含web功能的application server中。

所有Servlet容器必须支持基于HTTP协议的请求/响应模型,比如像基于HTTPS(HTTP over SSL)协议的请求/应答模型可以选择性的支持。容器必须实现的HTTP协议版本包含HTTP/1.0 和 HTTP/1.1。因为容器或许支持RFC2616 (HTTP/1.1)描述的缓存机制,缓存机制可能在将客户端请求交给Servlet处理之前修改它们,也可能在将Servlet生成的响应发送给客户端之前修改它们,或者可能根据RFC2616规范直接对请求作出响应而不交给Servlet进行处理。

Servlet容器应该使Servlet执行在一个安全限制的环境中。在Java平台标准版(J2SE, v.1.3 或更高) 或者 Java平台企业版(Java EE, v.1.3 或更高) 的环境下,这些限制应该被放置在Java平台定义的安全许可架构中。比如,高端的application server为了保证容器的其他组件不受到负面影响可能会限制Thread对象的创建。

说了这么大堆Servlet容器的含义,其实与我们平时开发没什么关系,大多数web项目都是用市场上符合上述规范的Servlet容器,我们只是需要想想Servlet容器给我们带来了什么?

1.通信支持,利用容器提供的方法,你可以轻松的让Servlet与Web服务器对话,你不用自己建立ServerSocket、监听某个端口、创建流等,容器知道自己与Web服务器之间的协议,所以你的Servlet不必担心和你自己的Web代码之间的API,你只需要考虑在Servlet实现业务逻辑。

2.生命周期管理。 容器控制servlet的生与死。它负责加载类、实例化和初始化servlet、调用servlet方法以及使用servlet实例能够被垃圾回收,所以减少了对资源管理的考虑。

3.多线程支持,容器会自动的为它接受的每个servlet请求创建一个新的Java线程,针对客户的请求,如果servlet已经运行完成相应的http服务方法,这个线程就会结束。并不是不用考虑线程安全,同样还是会遇到很多同步问题,不过容器创建和管理多个线程来处理多个请求,能让你少做很多工作。

4.声明方式实现安全。利用容器可以用XML部署描述文件来配置安全性,而不必使用硬代码编写到servlet类代码中。

5.JSP支持。JSP翻译为真正的java代码是由容器来完成的。

Java SE 6是构建Servlet容器最低的Java平台版本。

以下是一个典型的事件序列:

1、客户端(如 web浏览器)发送一个HTTP请求到web服务器;

2、Web服务器接收到请求并且交给servlet容器处理,servlet容器可以运行在与宿主web服务器同一个进程中,也可以是同一主机的不同进程,或者位于不同的主机的web服务器中,对请求进行处理。

3、servlet容器根据servlet配置选择相应的servlet,并使用代表请求和响应对象的参数进行调用。

4、servlet通过请求对象得到远程用户,HTTP POST参数和其他有关数据可能作为请求的一部分随请求一起发送过来。Servlet执行我们编写的任意的逻辑,然后动态产生响应内容发送回客户端。发送数据到客户端是通过响应对象完成的。

5、一旦servlet完成请求的处理,servlet容器必须确保响应正确的刷出,并且将控制权还给宿主Web服务器。

时间: 2024-10-07 08:27:01

Servlet学习教程(一)----什么是Servlet以及Servlet容器的相关文章

Servlet学习教程(二)----Servlet容器处理请求过程图解

上篇文章大致介绍的请求的流转,本文主要是详细介绍一下容器处理请求的过程. 第一步,用户点击一个链接指向一个servlet,而不是静态页面. 第二步,容器可以分辨出请求指向servlet,所以容器会产生两个对象: 1.HttpServletRequest 2.HttpServletResponse 第三步,容器对请求的URL根据配置找到对应的servlet,为这个请求创建或者分配一个线程,并将请求和响应对象传递给这个Servlet线程. 第四步,容器会调用Servlet的service方法,根据请

Servlet学习教程(三)---- 一个简单的Servlet例子

我们用个最简单的Servlet例子来解说一下Servlet简单配置以及Servlet类实现类的写法. 第一,我们新建一个Dynamic Web Project,起名Servlet 点击NEXT,设置Default output folder 为Servlet/WebContent/WEB-INF/classes 第二,创建一个包,包名为Servlet,然后创建一个类名为WelcomeServlet类.(Servlet类当然缺少不了Servlet容器,请注意你的开发软件是否已经集成Servlet容

【ExtJS 4.x学习教程】(4)组件(Components)

作者:周邦涛(Timen) Email:[email protected] 转载请注明出处:  http://blog.csdn.net/zhoubangtao/article/details/27366477 1. 简介 一个Ext JS 应用的UI是由一个或多个叫做组件(Component)的小部件组成的.所有的组件都是Ext.Component的子类,Ext.Component可以使其子类参与自动化的声明周期管理,包括初始化.渲染.调整大小及位置和销毁.Ext JS提供了大量的直接可用的组

JavaWeb之Java Servlet完全教程(转)

Servlet 是一些遵从Java Servlet API的Java类,这些Java类可以响应请求.尽管Servlet可以响应任意类型的请求,但是它们使用最广泛的是响应web方面的请求. Servlet必须部署在Java servlet容器才能使用.虽然很多开发者都使用Java Server Pages(JSP)和Java Server Faces(JSF)等Servlet框架,但是这些技术都要在幕后通过Servlet容器把页面编译为Java Servlet.也就是说,了解Java Servle

Servlet完全教程

Servlet 是一些遵从Java Servlet API的Java类,这些Java类可以响应请求.尽管Servlet可以响应任意类型的请求,但是它们使用最广泛的是响应web方面的请求. Servlet必须部署在Java servlet容器才能使用.虽然很多开发者都使用Java Server Pages(JSP)和Java Server Faces(JSF)等Servlet框架,但是这些技术都要在幕后通过Servlet容器把页面编译为Java Servlet.也就是说,了解Java Servle

Java Servlet完全教程

Servlet 是一些遵从Java Servlet API的Java类,这些Java类可以响应请求.尽管Servlet可以响应任意类型的请求,但是它们使用最广泛的是响应web方面的请求. Servlet必须部署在Java servlet容器才能使用.虽然很多开发者都使用Java Server Pages(JSP)和Java Server Faces(JSF)等Servlet框架,但是这些技术都要在幕后通过Servlet容器把页面编译为Java Servlet.也就是说,了解Java Servle

测试servlet学习笔记

操作方法: 1.新建工程: File-->new-->Java Project-->TestServlet(工程名称)-->Finish. 2.加载servlet-api.jar类包: TestServlet(右键)-->Build Path-->Configure Build Path-->Library -->Add External JAR Selection-->(浏览在tomcat的lib目录下找到servlet-api.jar选中后点击打开

SERVLET 学习笔记

SERVLET 学习笔记 一.Servlet基本定义 Servlet是服务器端上面运行的一段小的java程序,一个servlet就是一个简答的java类.通常servlet都是通过请求和返回的模式来被访问的,客户端通过resuest请求,servlet则通过response来返回需要的内容. 二.Tomcat容器等级 Tomcat容器等级分为四个等级,由内向外分别是:context容器àSERVLET容器àHOST(主机)容器àENGINE(引擎)容器.其中,CONTEXT容器,一个CONTEX

Servlet学习笔记(八)—— 自定义过滤器的编写改进:自定义实现FilterChain

笔记六中实现了三种过滤器:字符编码过滤.登录权限过滤.敏感词过滤,但是有个缺陷就是,限定了过滤顺序,而不能实现先进行request过滤,最后response过滤,并且中间几项过滤的顺序不能动态改变.所以这里做个改进,实现一个过滤顺序的FilterChain. 多个Filter的执行顺序在这篇博文中得到很仔细的讲解,总结一点,多个过滤器的执行顺序是根据web.xml中不同<filter-mapping>的顺序来先后执行的,比如: <?xml version="1.0"