Servlet 实现原理?

基于其特点,进行分析 Servlet

Posted by MasterJen on January 14, 2019

Hey Servlet

Life is a span. –人生如朝露.

前言

最近这段日子,可谓真是应了那就话:

写字楼里写字间,写字间里程序员 

程序人员写程序,又拿程序换酒钱

酒醒只在网上坐,酒醉还来网下眠

酒醉酒醒日复日,网上网下年复年

作为互联网从事者,我们要经常给自己进行充电,现在的互联网发展的速度是我们无法预测的,

所以我们要时刻提醒自己,不能掉队,我们要走在社会发展的前沿 ,当然给自己充电的方式有很多

无论是论坛啊 还是贴吧啊,或者是微信公众号啊,都有很多有内涵的文章值得我们去看,值得我们去挖掘

在我逛帖子的时候,发现有的同学提问了一个问题什么是 Servlet

所以我就针对于刚入门或者还未入门的伙伴们,写了这么一篇文章,Servlet 到底是何方神圣.

Servlet 实现的原理

首先大家要明白 Servlet 是什么?

根据百科 Servlet(Server Applet)是 Java Servlet 的简称,是为小服务程序或服务连接器,用 Java 编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态 Web 内容.

简单来说就是一个处理客户端请求的一个小程序.

Servlet 主要功能

Servlet 主要功能在于交互式浏览和修改内容,成动态的 WEB 内容.

处理过程

1 客户端发送请求到服务端

2 服务端将请求信息发送到 Servlet

3 Servlet 生成响应内容并将其传给服务器,响应内容动态生成,通常取决于客户端的请求.

4 服务端将响应返回给客户端.

Servlet 可以完成的任务

1 动态生成 HTML 文档

2 将请求转发给 Servlet 组件

3 读取客户端的 Cookie,以及向客户端写入 Cookie

4 访问服务器的资源,如数据库、 XML、文件对像等.

Servlet 生命周期

1 客户端请求该 Servlet

2 加载 Servlet 类到内存

3 实例化并调用 init() 方法初始化该 Servlet

4 service();

5 destory();

加载和实例化 Servlet

这项操作一般是动态执行的, Servlet 通常会提供提供一个管理的选项 ,用于在 Server 启动的时候,强制装载和初始化特定的 Servlet

1 Server 创建一个 Servlet实例

2 第一个客户端的请求到达 Server

3 server 调用 service 的 init 方法

4 一个客户端的请求达到 Server

5 Server 创建一个响应对象,理客户端的请求

6 Server 创建一个响应对象,应客户端的请求.

7 server 激活 servlet 的 service()方法,传递请求和响应对象作为参数

8 service()方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息.

9 service()方法获得响应对象的方法,将响应传回server,最终到达客户端.

10 一般 servlet 只初始化一次(只有一个对象),当 server 不再需要 servlet 时(一般当server关闭时),server 调用 servlet 的 destroy()方法

Servlet 特点

1 Servlet 对像,由 Servlet 容器(Tomcat)创建

2 Servlet 是一个接口:位于 javax.servlet 包中

3 service 方法用于接收用户的请求并返回响应

4 用户访问时多次被执行(可以统计网站的访问量)

那么在请求中一定会有传送数据的请求方式,我们国内主要用的就是 GET 和 POST 请求方式,那么这两种有什么区别呢

GET 和 POST 请求的区别

doGet() 方法

当一个客户通过 HTML 表单发出一个 HTTP GET 请求或直接请求一个 URL 时,doGet() 方法被调用.

与 GET 请求相关的参数添加到 URL 的后面,并与这个请求一起发送.当不会修改服务器端的数据时,应该使用 doGet() 方法.

doPost() 方法

当一个客户通过 HTML 表单发出一个 HTTP POST 请求时,doPost() 方法被调用.

与 POST 请求相关的参数作为一个单独的 HTTP 请求从浏览器发送到服务器.当需要修改服务器端的数据时,应该使用 doPost() 方法.

相信大家看到这,对于 Servlet 也有了一定的了解了吧,无非就是处理请求返回给客户端数据的一个小程序罢了.