[总结]Servlet概述

一、什么是Servlet

API上给了下面的解释: 
A servlet is a small Java program that runs within a Web server. Servlets receive and respond to requests from Web clients, usually across HTTP, the HyperText Transfer Protocol. 
根据上面的解释,我们可以这样描述Servlet的工作流程:

1、客户端向服务端发送请求; 
2、服务端将请求信息发送给Servlet; 
3、Servlet处理请求信息并生成响应,再传给服务器; 
4、服务器向客户端发送响应。

二、Servlet是如何工作的

在下面,首先给出下面一张图(图1): 

首先,请先不要吐槽这张图难看。。。 
图中,需要特别注意的是这几个类和接口,注意他们都继承了谁,实现了谁: 
接口:Servlet、ServletRequest(Response)、HttpServletRequest(Response); 
类:HttpServlet 
下面逐一介绍这几个类和接口:

1、 Servlet接口 
Servlet接口的主要方法有: 
void:destroy(); 
- ServletConfin:getServletConfig(); 
- java.lang.String:getServletInfo(); 
void:init(ServletConfig); 
void:service(ServletRequest, ServletResponse); 
一个Servlet类必须要实现这个接口(图里面GenericServlet实现了Servlet接口,基本实现了Servlet的方法,而GenericServlet的子类需要实现service方法),同时,观察这个接口的方法,通过init(ServletConfig)、service(ServletRequest, ServletResponse)、destroy()这几个主要方法,我们可以看到Servlet类的生命周期:

1、调用构造方法实例化Servlet类; 
2、Servlet容器调用init方法,根据ServletConfig初始化Servlet实例; 
3、Servlet容器调用service方法处理ServletRequest对象和ServletResponse对象;(这是Servlet实例的核心业务处理,至于ServletRequest对象和ServletResponse对象到底有什么用,在后文继续讨论,这里从对象的名字也可以猜出一二了,一个是Request,一个是Response) 
4、Servlet容器调用destroy方法,销毁Servlet实例。

2、ServletRequest和ServletResponse接口 
对于这两个接口,我主要是分析一下它们的方法,因此它们的介绍我决定直接把API中的介绍搬到这里:

ServletRequest:Defines an object to provide client request information to a servlet. The servlet container creates a ServletRequest object and passes it as an argument to the servlet’s service method. 
ServletResponse:Defines an object to assist a servlet in sending a response to the client. The servlet container creates a ServletResponse object and passes it as an argument to the servlet’s service method.

  • ServletRequest: 
    对照ServletRequest的把请求信息封装的作用来看,ServletRequest接口的方法主要是用来获取信息的getter和is类型的方法。

    • Attribute信息:getAttribute、getAttributeNames、removeAttribute、setAttribute
    • Character信息:getCharacterEncoding、setCharacterEncoding
    • Content信息:getContentLength、getContentType
    • Local信息:getLocalAddr、getLocalPort、getLocalName
    • Parameter信息:getParameter、getParameterNames、getParameterValues
    • Remote信息:getRemoteHost、getRemotePort
    • 其他信息:getRequestDispatcher、getServerName、getServerPort

这里主要注意的Attribute和Parameter的区别,请参看:《参数(parameter)和属性(Attribute)的区别》

  • ServletResponse: 
    如同上面描述一样,ServletResponse是提供响应的,因此,它应该定义一系列和响应相关的方法,如: setCharacterEncoding、setContentLength、setContentType等; 
    上面的几个属于协议无关的,只要继承他们并实现Http协议,那么就可以处理基于HTTP协议的请求和返回响应结果了

3、HttpServlet类 
这个类继承了GenericServlet类,因此这个类的service方法实现了对HTTP协议的支持,这个类的主要功能是接受从浏览器发送过来的HTTP请求,并返回HTTP响应。 
它的service方法是这样的:service(HttpServletRequest req, HttpServletResponse resp)

4、HttpServletRequest和HttpServletResponse接口 
由于这两个接口是继承ServletRequest和HttpServletResponse接口 
而来的,它们是基于HTTP协议来封装请求和响应的,因此这个两个接口定义的方法一定是根据HTTP协议里的信息来写的,参照这篇文章:《Http详解》然后对比一下这两个接口定义的方法就能明了了。

最后: 
Servlet的原理说起来真的很简单,重要的是如何应用这些方法。我觉得一边学HTTP协议一边用这些方法是个不错的选择。

时间: 2024-10-21 20:49:23

[总结]Servlet概述的相关文章

Servlet概述-servlet学习之旅(一)

Servlet概述 servlet是server+applet的缩写.applet是运行于客户端浏览器的java小程序,java诞生的时候,因为applet而闻名于世,但是现在已经没有多少热使用了,而servlet却继续发展进化,成为许多框架的基础,比如spring等. servlet也是java类,但是servlet又是特殊的java类,要遵循servlet的规范进行编写,比如servlet与一般的java程序不一样的地方在于,servlet没有mian方法,而且servelt运行于服务端,它

servlet概述

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

Servlet 概述

一.简介 Server + Applet: Servlet是Server+Applet的缩写,也就是服务端小程序的意思. Applet是运行于客户端浏览器上的Java小程序 Java诞生的时候,以Applet闻名于世 不过现在Applet基本已经没有人使用了 而Servlet一直处于不断的进步和发展之中 现在已经成为很多框架的技术基础,如Spring.Struts2等等 特殊的Java类: Servlet本质上也是Java类 所以编写Servlet需要遵循Java的基本语法 不过Servlet与

01. Servlet 概述

1.什么是Servlet Servle t是Java Web 的三大组件之一,它属于动态资源.Servlet 的作用是处理请求,服务器会把接收到时的请求交给 Servlet 来处理,在Servlet中通常需要 接收请求数据 处理请求 完成请求 例如客户端发出登录请求,或者输出注册请求,这些请求都应该由 Servlet 来完成处理,Servlet 需要我们自己来写,每个 Servlet 必须实现 javax.servlet.Servlet 接口 servlet 类由我们来写,但对象由服务器来创建,

Servlet技术之——概述、实现、细节、获取资源、ServletConfig、ServletContext

Servlet概述.实现.细节.获取资源.ServletConfig.ServletContext (一) Setvlet基本概述 (1) 什么是Servlet ? Servlet(Server Applet)是JavaServlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容是 JavaWeb中,我们将会接触到三大组件(Servlet.Filter.Listener),Servlet由服务器

JSP/Servlet Web 学习笔记 DayFour

Servlet概述 Servelt是使用Java Servlet应用程序接口及相关类和方法的Java程序. Servlet是用Java编写的Server端程序,它与协议和平台无关.Servlet运行于Java服务器中. Java Servlet API 定义了Servlet和服务器之间的标准接口,这使得Servlet具有跨服务器平台的特性. 通常,Servlet采用一种无状态的“请求-响应”模型来访问.它能处理客户端传来的Http请求,从中提取参数,处理业务逻辑,最终返回数据或输出HTML.它还

JavaWeb学习总结(二) —— Servlet

一.Servlet概述 1. 什么是Servlet Servlet是JavaWeb的三大组件之一,它属于动态资源.Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要: 接收请求数据: 处理请求: 完成响应. 例如客户端发出登录请求,或者输出注册请求,这些请求都应该由Servlet来完成处理!Servlet需要我们自己来编写,每个Servlet必须实现javax.servlet.Servlet接口. 2. 实现Servlet的方式 实现Ser

Servlet的相关知识点

Servlet 概述: 使用jsp可以完成动态web的开发,即使是使用了javabean将某些java代码从jsp页面中拆分出去,jsp页面依然残留许多java代码,这时就需要引入另外一种技术--servlet,以进一步减少jsp页面中的java代码,从而使得jsp页面更加干净.整洁. Servlet(服务器端小程序),是一种使用java语言,按照Servlet标准开发的类. Servlet程序可以接收客户端传来的request,并且向客户端返回一个响应. Servlet本身就是一个java"模

Servlet(一)基础总结

一.Servlet概述 1.Java Servlet是基于Java的一种技术和标准,是独立于平台和协议,服务器端的java应用程序.与Applet相比.Applet运行在客户端,而Servlet运行在服务器端. 2.Java Servlet 是由web服务器进行加载的,Servlet 是通过Web服务器接收来自客户端的请求,执行某种功能,返回给客户端.(response和request) 3.servlet的基本流程: (1)客户端向web服务器发起一个HTTP请求 (2)web服务器接收请求,