1.什么是servlet?
Servlet是一种服务器端的Java应用程序,Server + Applet =Servlet 意为服务器端的小程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。
2.servlet有什么作用?
Servlet主要是驻留在 Web 服务器上,处理用户的请求和输出的响应,处理web页面和业务逻辑层的数据交流。当使用交互式 Web 站点时,您所看到的所有内容都是在浏览器中显示的。当用户访问页面时,产生一个请求发送到web服务器,
在这些场景背后,有一个 Web 服务器接收会话 中来自于您的请求,可能要切换到其他代码(可能位于其他服务器上)来处理该请求和访问数据,并生成在浏览器中显示的结果。servlet 就是用于该过程的网守(gatekeeper)。
当用户通过 URL 发出一个请求时,这些 Java servlet 类就将之转换成一个 HttpServletRequest,并发送给 URL 所指向的目标。当服务器端完成其工作时,Java 运行时环境(Java Runtime Environment)就将结果包装在一个 HttpServletResponse 中,然后将原 HTTP 响应送回给发出该请求的客户机。在与 Web 应用程序进行交互时,通常会发出多个请求并获得多个响应。所有这些都是在一个会话语境中,Java 语言将之包装在一个 HttpSession 对象中。在处理响应时,您可以访问该对象,并在创建响应时向其添加事件。
3.servlet容器
负责处理客户请求、把请求传送给Servlet并把结果返回给客户。不同程序的容器实际实现可能有所变化,但容器与Servlet之间的接口是由 Servlet API定义好的,这个接口定义了Servlet容器在Servlet上要调用的方法及传递给Servlet的对象类。
Tomcat 的容器模型中,Context 容器是直接管理 Servlet 在容器中的包装类 Wrapper,所以 Context 容器如何运行将直接影响 Servlet 的工作方式。
Tomcat启动之后,初始化“load on startup”的 Servlet
4.web应用的初始化工作
应用的初始化主要是要解析 web.xml 文件,这个文件描述了一个 Web 应用的关键信息,也是一个 Web 应用的入口。接下去将会将 WebXml 对象中的属性设置到 Context 容器中,这里包括创建 Servlet 对象、filter、listener 等等。
之后就是Servlet 包装成 Context 容器中的 StandardWrapper,为什么要将 Servlet 包装成 StandardWrapper 而不直接是 Servlet 对象。这里 StandardWrapper 是 Tomcat 容器中的一部分,它具有容器的特征,而 Servlet 为了一个独立的 web 开发标准,不应该强耦合在 Tomcat 中。
所有 web.xml 属性都被解析到 Context 中,所以说 Context 容器才是真正运行 Servlet 的 Servlet 容器。一个 Web 应用对应一个 Context 容器,容器的配置属性由应用的 web.xml 决定。
5.servlet生命周期
1.完成了 Servlet 的解析工作,并且被包装成 StandardWrapper 添加在 Context 容器中,但是它仍然不能为我们工作,它还没有被实例化。下面我们将介绍 Servlet 对象是如何创建的,以及如何被初始化的。如果 Servlet 的 load-on-startup 配置项大于 0,那么在 Context 容器启动的时候就会被实例化
2.(1).用户在浏览器中输入一个 URL。Web 服务器配置文件确定该 URL 是否指向一个由运行于服务器上的 servlet 容器所管理的 servlet。
(2).如果还没有创建该 servlet 的一个实例(一个应用程序只有一个 servlet 实例),那么该容器就加载该类,并将之实例化。
该容器调用 servlet 上的 init()。
(3).该容器调用 servlet 上的 service(),并在包装的 HttpServletRequest 和 HttpServletResponse 中进行传递。
(4).该 servlet 通常访问请求中的元素,代表其他服务器端类来执行所请求的服务并访问诸如数据库之类的资源,然后使用该信息填充响应。
(5).如果有必要,在 servlet 的有用生命结束时,该容器会调用 servlet 上的 destroy() 来清除它。
6.配置Servlet
配置servlet一般是在web.xml文件中加入的
01<servlet>
02<!--给servlet命名为FlowCardServlet -->
03 <servlet-name>FlowCardServlet</servlet-name>
04 <!--将FlowCardServlet映射到特定的类,类的实际路径 -->
05 <servlet-class>com.andy.drp.flowcard.web.FlowCardServlet</servlet-class>
06</servlet>
07<servlet-mapping>
08 <servlet-name>FlowCardServlet</servlet-name>
09 <!--以“工程名/servlet/flowcard/FlowCardServlet”形式的 URL 映射我们的servlet-->
10 <url-pattern>/servlet/flowcard/FlowCardServlet</url-pattern>
11 <!-- 映射路径,都是以servlet为虚拟路径 -->
12</servlet-mapping>
- 大小: 139.3 KB
分享到:
相关推荐
Servlet运行原理图,描述servlet运行的步骤方向和servlet运行过程
servlet运行原理图,可以通过此图清楚看到servlet的运行过程
### Servlet 运行原理及生命周期详解 #### 一、Servlet简介 Servlet 是 Java Web 开发中的一个重要组成部分,它主要用于处理客户端发送至服务器端的 HTTP 请求,并返回相应的响应结果。Servlet 技术允许开发者以 ...
要理解 Servlet 的工作原理,首先要了解Servlet容器,如Tomcat,因为Servlet是在容器中运行的。Servlet与Servlet容器之间的关系类似于枪与子弹,容器提供了运行Servlet的环境,而Servlet则执行实际的业务逻辑。 1. ...
SERVLET 是一种小型的 Java 程序,可以在 Web 服务器中运行,提供动态网页服务。 SERVLET 生命周期是指 SERVLET 从创建到销毁的整个过程。这个过程包括装载、初始化、服务和销毁四个阶段。 1.装载阶段:在这个阶段...
此外,Servlet 3.0及以上版本引入了异步处理能力,使得Servlet可以在不阻塞线程的情况下处理长时间运行的任务,提高了服务器性能。 对于源码分析,Servlet的实现位于`javax.servlet`包下,如`GenericServlet`和`...
### Servlet工作原理详解 #### 一、Servlet简介与工作流程 Servlet是一种服务器端的Java应用程序,主要用于接收客户端发送的HTTP请求,并返回响应结果。Servlet在Java Web开发中扮演着核心角色,它负责处理用户...
### 方立勋servlet学习笔记知识点总结 #### 一、Servlet概述与生命周期 - **Service方法**:在Servlet中,`service`...这些知识点对于初学者来说非常有价值,能够帮助他们更好地理解Servlet的工作原理及其应用场景。
本章节将深入探讨Servlet的原理和实践,帮助你理解如何在实际项目中运用这项技术。 1. **C/S与B/S架构** C/S(Client/Server)架构是一种传统的两层架构,客户端直接与服务器通信。而B/S(Browser/Server)架构,...
Servlet3是Java Web开发中的一个重要里程碑,它引入了许多新特性,极大地提升了Web应用程序的性能和灵活性。在这篇文章中,我们将深入探讨Servlet3的一个关键特性——异步Servlet处理,以及它如何改变了传统的请求-...
Servlet容器提供了必要的运行环境和支持服务,而Servlet则负责处理具体的业务逻辑。这种分离的设计模式有利于提高系统的灵活性和扩展性。 #### 三、Servlet容器的功能与实现 1. **管理Servlet的生命周期**:...
Servlet工作原理的深入理解对于任何希望在Web开发领域有所建树的开发者都至关重要。以下是对Servlet工作原理的详细阐述: 1. **Servlet定义**:Servlet是Java编程语言中的一组接口,由Sun Microsystems(现为Oracle...
Servlet容器是Java Web技术的核心组成部分,它为Servlet提供运行环境,使得开发者无需关注底层细节,专注于业务逻辑的实现。本文以Tomcat为例,深入解析Servlet容器的工作原理。 首先,Servlet容器,如Tomcat,是一...